parquet_mcp_server

一个强大的MCP(模型控制协议)服务器,提供用于执行网络搜索和查找相似内容的工具。此服务器专为Claude Desktop设计,并具有以下主要功能:
- 网络搜索:执行网络搜索并抓取结果
- 相似性搜索:从之前的搜索中提取相关信息
该服务器特别适用于:
- 需要网络搜索功能的应用程序
- 项目需要根据搜索查询查找类似内容的情况
安装
通过Smithery安装
要通过Smithery自动安装Parquet MCP Server for Claude Desktop:
npx -y @smithery/cli install @DeepSpringAI/parquet_mcp_server --client claude
克隆此仓库
git clone ...
cd parquet_mcp_server
创建并激活虚拟环境
uv venv
.venv\Scripts\activate
source .venv/bin/activate
安装依赖项
安装项目所需的Python包:
pip install -r requirements.txt
配置
更新config.py
文件,设置以下环境变量:
DB_HOST
: 数据库主机地址(默认:localhost)
DB_PORT
: 数据库端口(默认:5432)
DB_NAME
: 数据库名称(默认:postgres)
DB_USER
: 数据库用户名(默认:postgres)
DB_PASSWORD
: 数据库密码
VECTOR_SIZE
: 向量大小(默认:1024)
使用
初始化数据库
运行以下SQL命令初始化PostgreSQL数据库:
CREATE EXTENSION IF NOT EXISTS pgvector;
插入数据
使用insert_data.py
脚本将搜索结果插入到数据库中:
python insert_data.py --metadata "{'source': 'example.com', 'timestamp': '2023-10-01'}" --text "这是一个示例文本。"
搜索数据
使用search_data.py
脚本根据向量相似性搜索数据库中的内容:
python search_data.py --query_embedding "0.5, 0.3, ..., 0.2" --threshold 0.7
测试
运行以下命令测试服务器:
uvicorn main:app --reload
访问http://localhost:8000/docs
查看API文档。
故障排除
网络搜索失败
数据库连接问题
- 确保PostgreSQL服务正在运行。
- 检查数据库凭据是否正确。
- 查看PostgreSQL日志文件以获取更多信息。
向量相似性搜索性能差
- 优化PostgreSQL查询。
- 增加向量索引。
- 减少结果限制或降低相似性阈值。
PostgreSQL函数用于向量相似性搜索
要使用PostgreSQL执行向量相似性搜索,可以使用以下函数:
CREATE OR REPLACE FUNCTION match_web_search(
query_embedding vector(1024),
match_threshold float,
match_count int
)
RETURNS TABLE (
id bigint,
metadata jsonb,
text TEXT,
date TIMESTAMP,
similarity float
)
LANGUAGE plpgsql
AS $$
BEGIN
RETURN QUERY
SELECT
web_search.id,
web_search.metadata,
web_search.text,
web_search.date,
1 - (web_search.embedding <=> query_embedding) as similarity
FROM web_search
WHERE 1 - (web_search.embedding <=> query_embedding) > match_threshold
ORDER BY web_search.date DESC,
web_search.embedding <=> query_embedding
LIMIT match_count;
END;
$$;
此函数允许您在PostgreSQL数据库中执行向量相似性搜索,返回满足指定相似性阈值的结果,并根据用户输入限制结果数量。结果按日期和相似性进行排序。
PostgreSQL表创建
CREATE TABLE web_search (
id SERIAL PRIMARY KEY,
text TEXT,
metadata JSONB,
embedding VECTOR(1024),
date TIMESTAMP DEFAULT NOW()
);
此表结构用于存储网络搜索结果,包括文本内容、元数据和向量表示。