🤖 MCP集成人工智能聊天机器人
由Google Gemini提供支持的强大AI聊天机器人,可以发现和使用来自多个MCP(模型上下文协议)服务器的工具。这允许您的聊天机器人与文件系统、API、数据库和自定义工具动态交互。
✨ 特性
- 多服务器MCP支持:同时连接到多个MCP服务器
- 自动工具发现:自动发现并集成来自连接服务器的工具
- 谷歌Gemini集成:使用Gemini的功能调用智能工具使用
- 可扩展:易于添加新的MCP服务器和自定义工具
- 交互式聊天:用于对话的干净命令行界面
📋 先决条件
- Python 3.10或更高版本
- Node.js(用于基于节点的MCP服务器,如文件系统)
- Google Gemini API密钥(在这里买一个)
🚀 快速开始
1.安装依赖项
# Install Python dependencies
pip install -r requirements.txt
# Install the filesystem MCP server (optional but recommended)
npm install -g @modelcontextprotocol/server-filesystem2.配置环境
创建一个 .env 项目根目录中的文件:
cp .env.example .env编辑 .env 并添加您的Gemini API密钥:
GEMINI_API_KEY=your_actual_api_key_here3.配置MCP服务器
这 mcp_config.json 文件包含MCP服务器配置。默认情况下,它包括:
- 文件系统服务器:读取/写入scratch目录中的文件
- 自定义示例服务器:带有问候、计算和时间工具的演示服务器
编辑 mcp_config.json 致:
- 修改允许的文件系统路径
- 添加/删除MCP服务器
- 配置服务器特定设置
4.运行聊天机器人
cd src
python app.py💬 使用聊天机器人
一旦开始,您可以:
- 正常聊天:提问或请求任务
- 使用工具:AI将在需要时自动使用MCP工具
- 类型
tools:查看所有可用工具 - 类型
quit/exit:退出应用程序
对话示例
You: List the files in the current directory
🤖 Assistant: [Uses filesystem MCP server to list files]
You: Greet me in Spanish
🤖 Assistant: [Uses custom server's greet_user tool]
You: What's 42 multiplied by 17?
🤖 Assistant: [Uses custom server's calculate tool]🔧 添加新的MCP服务器
使用现有的MCP服务器
添加 mcp_config.json:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "your_github_token"
},
"description": "GitHub repository access"
}
}
}创建自定义MCP服务器
看 examples/custom_mcp_server.py 举一个完整的例子。关键步骤:
- 导入MCP服务器SDK
- 创建一个
Server例子 - 定义工具
@app.list_tools() - 使用以下工具实现工具处理程序
@app.call_tool() - 使用stdio传输运行
📁 项目结构
mcp-chatbot/
├── src/
│ ├── app.py # Main entry point
│ ├── chatbot.py # Chatbot logic with Gemini
│ └── mcp_client_manager.py # MCP client management
├── examples/
│ └── custom_mcp_server.py # Example custom server
├── mcp_config.json # MCP server configurations
├── requirements.txt # Python dependencies
├── .env.example # Environment template
└── README.md # This file🛠️ 建筑
┌─────────────────┐
│ User Input │
└────────┬────────┘
│
▼
┌─────────────────────────────┐
│ MCPChatbot (chatbot.py) │
│ - Google Gemini Integration │
│ - Function Call Handling │
└────────┬────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ MCPClientManager (mcp_client_ │
│ manager.py) │
│ - Server Connection Management │
│ - Tool Discovery │
│ - Tool Execution Routing │
└────────┬─────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ MCP Servers │
│ ┌──────────┐ ┌──────────┐ │
│ │Filesystem│ │ Custom │ ... │
│ │ Server │ │ Server │ │
│ └──────────┘ └──────────┘ │
└────────────────────────────────────────┘🔍 运作原理
- 初始化:应用程序加载MCP配置并连接到所有服务器
- 工具发现:每台服务器报告其可用工具
- 聊天循环:用户向聊天机器人发送消息
- 人工智能处理双子座决定是否需要使用工具
- 工具执行:MCP客户端管理器将工具调用路由到适当的服务器
- 响应:结果通过Gemini发回以生成最终响应
🐛 故障排除
“找不到GEMINI_API_KEY”
- 确保您创建了
.env文件 - 检查API密钥是否在中正确设置
.env
第1阶段:后端标准和调试
- \[x\] 添加显式
PUBLIC_BASE_URL登录chatbot.py - \[x\] 重构
GenerateImage工具响应以包含更多元数据(宽度、高度等) - \[x\] 在markdown输出中添加“打开图像”备份链接
- \[x\] 实施
GET /debug/image-test在main.py - \[x\] 标准化服务器端下载 *全部* 提供者(双子座/民意调查)
第二阶段:前端稳健性
- \[x\] 在中添加调试JSON视图
chat.js - \[x\] 实施明确 `
标签渲染onerror` 后备方案 - \[x\] 改进图像样式(圆角、最大宽度)
第3阶段:验证和部署
- \[x\] 创建
test_image_deploy.py验证脚本 - \[x\] 在生产日志中标记固定图像
- \[x\] 推送所有更改并在渲染上验证
“找不到配置文件”
- 确保
mcp_config.json存在于项目根目录中 - 检查您是否从正确的目录运行应用程序
MCP服务器连接失败
- 对于Node服务器:确保Node.js已安装并位于PATH中
- 对于自定义服务器:检查Python路径和依赖关系
- 查看服务器日志中的特定错误消息
无可用工具
- 检查中的MCP服务器配置
mcp_config.json - 验证服务器是否正确启动(检查日志)
- 确保服务器命令和路径正确
📚 资源
🤝 贡献
您可以通过以下方式扩展此聊天机器人:
- 额外的MCP服务器
- 自定义工具
- UI改进
- 更好的错误处理
📄 许可证
MIT许可证-随意使用和修改!
______________________________________________________________________
🚀 渲染部署
重要说明
- 免费睡眠:免费服务在15分钟不活动后自动休眠。这可能会导致醒来时出现30-60秒的“冷启动”延迟。
- 保持活力:使用UptimeRobot等监控服务每5分钟ping一次你的应用程序,以防止睡眠。
- 服务器绑定:服务器绑定到
0.0.0.0并使用PORT环境变量(渲染所需)。
健康检查端点
该应用程序包括不需要身份验证且不调用任何AI模型的健康检查端点:
| 端点 | 描述 |
|---|---|
GET /health | 返回状态、时间戳、版本 |
GET /ping | 返回简单的pong响应 |
GET /api/health | 与/健康相同 |
GET /api/ping | 与/ping相同 |
渲染的环境变量
在“环境”下的“渲染”仪表板中设置这些:
GROQ_API_KEY-您的Groq API密钥GEMINI_API_KEY-您的Gemini API密钥HF_TOKEN-您的HuggingFace代币REPLICATE_API_TOKEN-您的复制令牌PUBLIC_BASE_URL- 关键的:您的服务的公共URL(例如。,https://your-chatbot.onrender.com)
渲染部署步骤
- 连接存储库:
- 首选 渲染仪表板 → New → Web服务 - 连接您的GitHub仓库
- 配置设置:
- 名字: mcp-chatbot (或您喜欢的名字) - 环境: Python 3 - 生成命令: pip install -r requirements.txt - 启动命令: uvicorn main:app --host 0.0.0.0 --port $PORT
- 设置环境变量:
- 转到“环境”选项卡 - 添加上面列出的所有4个API密钥
- 部署:
- 点击“创建Web服务” - 等待构建完成
- 重新部署 (代码更改后):
- 推送到GitHub,渲染自动部署 - 或:仪表板→ 手动部署→ 部署最新提交
______________________________________________________________________
📊 Uptime机器人设置
要防止Render冷启动并监视正常运行时间,请执行以下操作:
- 创建账户:注册地址: Uptime机器人
- 添加新监视器:
- 监视器类型: HTTP - 友好名称: MCP Chatbot Health - 网址: https://your-app.onrender.com/health - 监测间隔: 5分钟 - 预期响应代码: 200
- 警报联系人:(可选)添加电子邮件/webhook以发出停机警报
______________________________________________________________________
______________________________________________________________________
