使用说明
MCP聊天机器人
这个聊天机器人示例演示了如何将模型上下文协议(MCP)集成到一个简单的CLI聊天机器人中。该实现通过MCP服务器支持多种工具,展示了MCP的灵活性,并与遵循OpenAI API标准的任何LLM提供商兼容。
如果你觉得这个项目有帮助,别忘了⭐ 明星 仓库 或者给我买个☕ 咖啡.
主要特点
- LLM提供商灵活性:适用于遵循OpenAI API标准的任何LLM(在Groq上使用Llama 3.2 90b进行测试,在GitHub Marketplace上使用GPT-4o mini进行测试)。
- 动态工具集成:工具在系统提示符中声明,确保不同LLM之间的最大兼容性。
- 服务器配置:通过简单的JSON配置文件(如Claude Desktop App)支持多个MCP服务器。
需求
- Python 3.10
python-dotenvrequestsmcpuvicorn
安装
-
克隆存储库:
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桌面应用程序一样传递它们。
例子:
{ "mcpServers": { "server_name": { "command": "uvx", "args": ["mcp-server-name", "--additional-args"], "env": { "API_KEY": "your_api_key_here" } } } }
用法
-
运行客户端:
python main.py -
与助手互动:
助手将自动检测可用工具,并可以根据配置的服务器提供的工具对查询做出响应。
-
退出会话:
类型
quit或exit结束会议。
建筑
- 工具发现:从配置的服务器中自动发现工具。
- 系统提示:工具动态包含在系统提示中,使LLM能够了解可用功能。
- 服务器集成:支持任何与MCP兼容的服务器,经过包括Uvicorn和Node.js在内的各种服务器实现测试。
阶级结构
- 配置:管理环境变量和服务器配置
- 服务器:处理MCP服务器初始化、工具发现和执行
- 工具:表示单个工具及其属性和格式
- LLM客户:管理与LLM提供商的通信
- 聊天会话:协调用户、LLM和工具之间的交互
逻辑流程
flowchart TD
A[Start] --> B[Load Configuration]
B --> C[Initialize Servers]
C --> D[Discover Tools]
D --> E[Format Tools for LLM]
E --> F[Wait for User Input]
F --> G{User Input}
G --> H[Send Input to LLM]
H --> I{LLM Decision}
I -->|Tool Call| J[Execute Tool]
I -->|Direct Response| K[Return Response to User]
J --> L[Return Tool Result]
L --> M[Send Result to LLM]
M --> N[LLM Interprets Result]
N --> O[Present Final Response to User]
K --> O
O --> F
-
初始化:
- 配置加载环境变量和服务器设置
- 服务器使用各自的工具进行初始化
- 为LLM理解而发现和格式化工具
-
运行时流程:
- 接收用户输入
- 输入与可用工具的上下文一起发送给LLM
- LLM响应已解析:
- 如果是工具调用→ 执行工具并返回结果
- 如果这是直接的回应→ 返回给用户
- 工具结果被发送回LLM进行解释
- 最终响应呈现给用户
-
工具集成:
- 从MCP服务器动态发现工具
- 工具说明会自动包含在系统提示中
- 通过标准化的MCP协议处理工具执行
贡献
欢迎提供反馈和意见。如果您遇到任何问题或有改进建议,请创建一个新的 问题 在GitHub存储库上。
如果你想为项目的开发做出贡献,可以随时提交一个包含你的更改的pull请求。
许可证
该项目根据 MIT许可证.
