mcp-chatbot 是一个简单的 CLI 聊天机器人,用于演示如何将 Model Context Protocol(MCP)集成到命令行聊天机器人中。该实现展示了 MCP 的灵活性:通过 MCP 服务器支持多种工具,并兼容任何遵循 OpenAI API 标准的 LLM 提供商。
用途 该项目主要作为集成示例,帮助开发者了解如何在 CLI 聊天机器人中接入 MCP 服务器与工具,并连接任意 OpenAI API 兼容的 LLM。
主要能力
- LLM 提供商灵活性:可与任何遵循 OpenAI API 标准的 LLM 配合使用(资料称已在 Groq 上的 Llama 3.2 90b 和 GitHub Marketplace 上的 GPT-4o mini 上测试)。
- 动态工具集成:工具在系统提示中声明,确保在不同 LLM 之间具有最大兼容性。
- 服务器配置:通过简单的 JSON 配置文件支持多个 MCP 服务器,结构类似 Claude Desktop App。
- 工具发现:自动从已配置的服务器中发现工具。
- 系统提示:工具被动态包含在系统提示中,使 LLM 能够理解可用能力。
- 服务器集成:支持任何兼容 MCP 的服务器,资料称已用包括 Uvicorn 和 Node.js 在内的多种服务器实现进行测试。
使用方式
- 克隆仓库: git clone https://github.com/3choff/mcp-chatbot.git cd mcp-chatbot
- 安装依赖: pip install -r requirements.txt
- 设置环境变量:在根目录创建 .env 文件并添加 API 密钥: LLM_API_KEY=your_api_key_here
- 配置服务器:servers_config.json 采用与 Claude Desktop 相同的结构,便于集成多个服务器。示例: { "mcpServers": { "sqlite": { "command": "uvx", "args": ["mcp-server-sqlite", "--db-path", "./test.db"] }, "puppeteer": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer"] } } } 也支持环境变量,传递方式与 Claude Desktop App 相同。示例: { "mcpServers": { "server_name": { "command": "uvx", "args": ["mcp-server-name", "--additional-args"], "env": { "API_KEY": "your_api_key_here" } } } }
- 运行客户端: python main.py
- 与助手交互:助手会自动检测可用工具,并能根据已配置服务器提供的工具来响应查询。
- 退出会话:输入 quit 或 exit 结束会话。
运行流程
- 初始化:Configuration 加载环境变量和服务器设置;服务器以其各自的工具初始化;工具被发现并格式化以供 LLM 理解。
- 运行时流程:接收用户输入;将输入连同可用工具的上下文发送给 LLM;解析 LLM 响应:如果是工具调用,则执行工具并返回结果;如果是直接响应,则返回给用户;工具结果被送回 LLM 进行解释;最终响应呈现给用户。
类结构
- Configuration:管理环境变量和服务器配置
- Server:处理 MCP 服务器初始化、工具发现和执行
- Tool:表示单个工具及其属性和格式化
- LLMClient:管理与 LLM 提供商的通信
- ChatSession:编排用户、LLM 和工具之间的交互
适用场景 适合希望了解或演示 MCP 与 CLI 聊天机器人集成的开发者,以及需要连接任意 OpenAI API 兼容 LLM 并通过 MCP 服务器扩展工具能力的实验性项目。
限制 资料未提供关于收费、价格、平台支持范围、性能效果或具体使用步骤之外的更多限制信息,暂未提供。项目采用 MIT 许可证。