MCP RAG知识库服务器
FastAPI应用程序和MCP服务器,为聊天和文档摄取提供检索增强生成(RAG)知识库。提供一个小型仪表板,共享一个公共聊天页面,并在同一端口上挂载MCP SSE传输。
特性
- 带有文档摄取的知识库CRUD(PDF→ 文本)和矢量搜索(Qdrant)。
- 共享知识库的公共聊天页面;API密钥或电子邮件/密码的安全模式。
- 用于管理知识库、文档和API键的仪表板UI。
- MCP工具,用于列出知识库、聊天和上传文档;为了兼容性,保留了名为别名的助手。
- 单进程FastAPI+MCP服务器;SSE可在
/mcp/sse和/sse.
快速启动
- 安装deps:
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt- 设置环境变量(创建一个
.env如果你喜欢):
MODEL_API_KEY(必填)-配置LLM的密钥(默认为Gemini兼容的OpenAI端点)。MODEL_BASE_URL/如果需要,将覆盖config.yaml。- 可选:
QDRANT_URL(否则在存储器中),GCS_BUCKET_NAME(如果config.yaml中的storage.type=gcs)。
- 运行服务器:
python serve.py- 打开仪表板
http://localhost:8000/(注册/登录以获取用户API密钥)。 - 分享聊天链接:
http://localhost:8000/static/chat.html?knowledgeBaseId=.
配置
config.yaml控制模型、存储、qdrant、环境名称等。通过加载config_loader.py.- 存储:默认为本地(
storagedir)。集storage.type: gcs和GCS_BUCKET_NAMEGCS。 - Qdrant:默认在内存中;集
qdrant.type: remote和QDRANT_URL对于远程实例。
API(知识库优先;保留辅助路径以备后比较)
- 授权人:持票人 `` 头球
- 知识库:
- GET /api/knowledge-bases (或 /api/assistants) - POST /api/knowledge-base (或 /api/assistant)与 KnowledgeBaseConfig - POST /api/knowledge-base/{id}/copy (或 /api/assistant/{id}/copy) - DELETE /api/knowledge-base/{id} (或 /api/assistant/{id}) - GET /api/knowledge-base/{id}/public (或 /api/assistant/{id}/public)
- 文件:
- GET /api/knowledge-base/{id}/documents - POST /api/knowledge-base/{id}/upload (PDF文件) - GET/PUT/POST/DELETE /api/document/{doc_id} (获取/更新/重新索引/删除)
- 聊天:
- POST /api/chat 和 {"knowledge_base_id": "", "query": "...", "history": [...]} 可选 api_key/用于安全基础的电子邮件/密码。
- 身份验证助手:
POST /api/register,POST /api/login,GET /api/metrics.
MCP使用
安装在 /mcp (苏格兰和南方能源公司 /mcp/sse)以及 /sse 快捷方式。
list_knowledge_bases(api_key)–列出当前用户的知识库。list_assistants–兼容性别名。chat(knowledge_base_id, query, history?, api_key?)–与知识库聊天。add_document(knowledge_base_id, text, filename?, api_key)–摄取原始文本。- 资源列表:
knowledge-bases://list(以及assistants://list别名)。
前端注释
- 仪表板服务于
/;静态资产/static. - 公共聊天页面:
/static/chat.html?knowledgeBaseId=;倒退到assistantId在查询旧链接时。 - UI文本是指“知识库”;助理条款仅用于兼容性。
开发技巧
- 根据需要运行lint/format;这里没有强制执行格式化程序。
- 如果你改变
mcp_servers.py(核心逻辑),重新启动服务器。 - MCP客户端可能期望
knowledge_base_idassistant_id参数仅是旧客户端的别名。
