项目简介
这是一个实现了Model Context Protocol (MCP) 服务器和客户端的Python项目,使用FastAPI框架构建。它旨在为大型语言模型(LLM)客户端提供标准化的上下文信息、可调用的工具以及Prompt模板。
主要功能点
- 工具注册与调用: 注册并执行多种工具,例如通过RAG(检索增强生成)回答基于知识库的问题,以及调用外部API进行工位预订和取消。
- Prompt模板定义: 定义并管理用于指导LLM交互的Prompt模板。
- 上下文管理: 在请求中注入和管理上下文信息,如用户信息,以支持个性化和有状态的交互。
- 多种传输协议支持: 实现支持SSE (Server-Sent Events) 等传输协议,用于与MCP客户端通信。
- 数据存储集成: 集成聊天历史数据库和向量数据库,用于会话管理和RAG功能。
- 身份认证: 提供基本的身份认证机制,保护API和MCP端点。
安装步骤
- 确保已安装Python环境。
- 克隆仓库到本地。
- 进入项目根目录。
- 使用 'uv' 或 'pip' 安装项目依赖。如果使用 'uv',运行命令 'uv sync --group local'。
- 创建 '.env' 文件,并根据项目中的示例配置文件 ('mcpbot/config-local.py' 或 'mcpbot/config-azure.py') 设置必要的秘钥和配置信息,特别是用于认证、数据库连接和外部服务调用的凭据。
- 准备向量数据库。如果使用本地 ChromaDB,可以尝试下载预构建的 '.chromadb' 文件夹(如果提供),或者运行 'scripts/create_document.py' 脚本来创建自己的向量数据库(需要准备好FAQ或知识库文件)。
服务器配置
此MCP服务器作为独立的Web服务运行。MCP客户端需要配置连接到此运行中的服务。典型的MCP客户端配置中需要指定服务器名称、连接地址和传输协议等信息。
- 服务器名称 (server name): 例如 '"MCP Client & Server"'
- 连接地址 (url): 例如 '"http://<服务器地址或IP>:<端口号>/mcp"'
- 传输协议 (transport): 例如 '"sse"'
- 其他配置: 可能需要配置请求头,例如用于身份认证的 'Authorization: Bearer <令牌>' 和传递用户信息的 'user_email'。
'<端口号>' 可以在 '.env' 文件中配置(默认是 8000)。'<服务器地址或IP>' 取决于服务器部署的位置。
基本使用方法
- 按照安装步骤设置并启动服务器。可以通过运行 'python -m scripts.host_api' 来启动服务。
- (对于开发者)可以参考 'scripts/question_request.py' 脚本,了解如何通过提供的HTTP API端点 ('/v1/conversations', '/v1/conversations/{conversation_id}/messages') 与应用程序交互。这些端点内部会利用MCP服务器与LLM进行交互。
- (对于MCP客户端集成者)配置您的MCP客户端,使其能够连接到运行中的MCP服务器地址 ('/mcp' 端点使用SSE协议),并根据文档调用相应的工具和Prompt。
信息
分类
AI与计算