一款基于模型上下文协议(MCP)的服务器,通过向量相似性搜索和检索增强生成(RAG)提供对DataPizza-AI文档的智能访问。
此MCP服务器使AI助手和应用程序能够使用自然语言查询来查询DataPizza-AI的综合文档。它索引来自DataPizza-AI存储库的文档,并通过RAG管道提供上下文相关的响应。
服务器由四个主要组件组成:
query_datapizza工具git clone https://github.com/datapizza-labs/mcp_server_datapizza.git
cd datapizza-mcp-server
cd datapizza-mcp-server
pip install -e ".[dev]"
在datapizza-mcp-server目录中创建一个.env文件,包含以下变量:
# 必需配置
OPENAI_API_KEY=your_openai_api_key_here
QDRANT_URL=your_qdrant_cloud_url
QDRANT_API_KEY=your_qdrant_api_key
# 可选配置
EMBEDDING_MODEL=text-embedding-3-small
EMBEDDING_DIMENSIONS=1536
COLLECTION_NAME=datapizza_docs
MAX_RESULTS=5
CHUNK_SIZE=1024
CHUNK_OVERLAP=200
LOG_LEVEL=INFO
| 变量 | 描述 |
|---|---|
OPENAI_API_KEY | 用于生成嵌入的OpenAI API密钥 |
QDRANT_URL | Qdrant Cloud实例URL |
QDRANT_API_KEY | Qdrant Cloud API密钥 |
| 变量 | 默认值 | 描述 |
|---|---|---|
EMBEDDING_MODEL | text-embedding-3-small | OpenAI嵌入模型 |
EMBEDDING_DIMENSIONS | 1_536 | 嵌入向量维度 |
COLLECTION_NAME | datapizza_docs | Qdrant集合名称 |
MAX_RESULTS | 5 | 返回的最大搜索结果数 |
CHUNK_SIZE | 1024 | 文档分块大小 |
CHUNK_OVERLAP | 200 | 文档分块之间的重叠 |
LOG_LEVEL | INFO | 日志级别(DEBUG, INFO, WARNING, ERROR) |
在使用服务器之前,索引DataPizza-AI文档:
python -m datapizza_mcp.indexer
要强制重新索引(清除现有数据):
python -m datapizza_mcp.indexer --force
python -m datapizza_mcp.server
或者使用提供的Windows批处理脚本:
../run_datapizza.bat
服务器公开了一个query_datapizza工具,可以被MCP客户端调用:
# 示例查询
result = await client.call_tool("query_datapizza", {
"query": "如何使用OpenAI创建代理",
"max_results": 5
})
query_datapizza:搜索DataPizza-AI文档
query (字符串):自然语言搜索查询max_results (整数,可选):返回的最大结果数(默认:5)datapizza://status:系统状态和配置信息# 格式化代码
black src/
# 检查代码
ruff check src/
ruff check src/ --fix # 自动修复问题
# 类型检查
mypy src/
# 运行测试
pytest
datapizza-mcp-server/
├── src/datapizza_mcp/
│ ├── __init__.py # 包导出
│ ├── config.py # 配置管理
│ ├── server.py # MCP服务器实现
│ ├── indexer.py # 文档索引
│ └── retriever.py # RAG检索引擎
├── pyproject.toml # 包配置
├── .env # 环境变量
└── README.md # 本文件
身份验证错误
OPENAI_API_KEY是否正确设置QDRANT_URL和QDRANT_API_KEY)空搜索结果
python -m datapizza_mcp.indexerdatapizza://status资源连接问题
通过在.env文件中设置LOG_LEVEL=DEBUG启用调试日志。
本项目根据MIT许可发布。详情参见LICENSE文件。
对于问题和疑问: