使用说明
带有代理的MCP服务器集合
一个全面的模型上下文协议(MCP)服务器集合,配备有智能LangChain驱动的代理,能够无缝集成多种服务和API,专为人工智能助手和聊天机器人设计。
🚀 概述
此存储库包含多个MCP服务器实现以及一个复杂的客户端代理,该代理使AI助手能够与外部服务、API和工具进行交互。该代理使用LangChain和LangGraph来协调不同服务器上的复杂工作流,这些工作流由Groq的LLM API提供支持。
🎯 主要特性
- 多服务器架构9台针对不同功能的专业MCP服务器
- 智能代理用于自主任务执行的LangGraph ReAct代理
- 异步操作全面支持异步/await,以实现高效的I/O操作
- Groq LLM 集成使用Llama 3.1 8B即时模型进行快速推理
- **交互式命令行界面(CLI)**用户友好的命令行界面
- 强大的错误处理全面的异常处理和日志记录
📦 可用服务器
1. 天气服务器(WEATHER.py)
利用外部API提供实时天气信息。
特点:
- 当前天气状况
- 天气预报
- 基于位置的天气数据
2. 数学计算服务器(calculation_server.py)
支持BODMAS/PEMDAS运算的数学计算服务器。
特点:
- 高级数学计算
- 表达式求值
- BODMAS运算顺序
3. Gmail 工具包服务器(gmail_server.py)
全面集成Gmail,实现邮件管理。
工具:
send- 发送电子邮件draft- 将电子邮件保存为草稿get_latest_emails- 获取最近的电子邮件search_gmail- 使用Gmail搜索语法搜索电子邮件get_gmail_message- 通过ID检索完整邮件内容
用例:
- 自动事件详情通知
- 重要的电子邮件管理
- 带有反馈集成的基本电子邮件回复
4. 搜索服务器(search_server.py)
多源搜索功能,助力信息检索。
工具:
- DuckDuckGo(通常直接音译为“达克达克谷歌”,但更常见的可能是保留原名,因为这是一个特定的搜索引擎名称) - 在网上搜索最新信息
- 维基百科 - 知识库搜索
5. Google Workspace 服务器(drive_calander_server.py)
Google Drive与日历集成,用于文件和日程管理。
工具:
google_drive_search- 在Google Drive中搜索文件google_drive_get_file- 获取文件的详细信息google_calendar_view- 读取日历事件和日程安排google_calendar_create- 创建新的日历事件google_calendar_update- 更新现有事件google_calendar_delete- 删除日历事件
注: Google Forms API有局限性。该 create_simple_form 该函数仅设置表单标题。其他项目需要 batchUpdate 方法。
6. OpenStreetMap 服务器(map_server.py)
位置与地图服务集成。
工具:
maps_geocode- 将地址转换为坐标maps_reverse_geocode- 将坐标转换为地址maps_search_places- 通过文本查询搜索地点maps_place_details- 获取详细地点信息maps_distance_matrix- 计算点之间的距离maps_elevation- 获取高程数据maps_directions- 获取两点之间的路线指引
运输方式: 驾驶、步行、骑自行车、公共交通出行
7. GitHub 服务器(github_server.py)
完成GitHub API的集成,用于仓库和代码管理。
特点:
- 自动创建分支
- 全面的错误处理
- Git历史记录保留
- 批处理操作支持
- 高级搜索功能
文件操作:
create_or_update_file- 创建/更新单个文件push_files- 在一次提交中推送多个文件get_file_contents- 读取文件/目录内容
仓库管理:
create_repository- 创建新仓库search_repositories- 搜索GitHub仓库fork_repository- 分支仓库create_branch- 创建新分支list_commits- 获取分支提交历史
问题与拉取请求:
create_issue,list_issues,update_issue,add_issue_comment,get_issuecreate_pull_request,list_pull_requests,get_pull_requestget_pull_request_files,get_pull_request_statuscreate_pull_request_review,merge_pull_requestupdate_pull_request_branch,get_pull_request_comments,get_pull_request_reviews
搜索功能:
search_code- 在多个存储库中搜索代码search_issues- 搜索问题和拉取请求(Pull Requests)search_users- 搜索GitHub用户
8. SQLite 服务器 (sql_server.py)
数据库交互与商业智能功能。
资源:
memo://insights- 自动更新的商业洞察备忘录
工具:
read_query- 执行SELECT查询write_query- 执行INSERT/UPDATE/DELETE查询create_table- 创建新表list_tables- 列出所有数据库表describe_table- 查看表模式append_insight- 在备忘录中添加商业见解
9. Google Sheets 机器人服务器(robo_club_server.py)
为机器人俱乐部管理定制集成方案。
特点:
- 机器人俱乐部数据管理
- Google Sheets 集成
- 自动化报告与跟踪
🏗️ 建筑学
┌─────────────────────────────────────────────────────────┐
│ MCP Client Agent │
│ (LangChain + LangGraph + Groq) │
└──────────────────────┬──────────────────────────────────┘
│
│ STDIO Transport
│
┌───────────────┴───────────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Weather │ │ Math │
│ Server │ │ Server │
└─────────────┘ └─────────────┘
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Gmail │ │ Search │
│ Server │ │ Server │
└─────────────┘ └─────────────┘
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Google │ │ OpenStreet │
│ Workspace │ │ Map │
└─────────────┘ └─────────────┘
▼ ▼
┌─────────────┐ ┌─────────────┐
│ GitHub │ │ SQLite │
│ Server │ │ Server │
└─────────────┘ └─────────────┘
▼
┌─────────────┐
│ Robotics │
│ Server │
└─────────────┘
🛠️ 安装
先决条件
- Python 3.8及以上版本
- pip 包管理器
- 各种服务的API密钥(见配置)
设置
# Clone the repository
git clone https://github.com/yourusername/mcp-servers.git
cd mcp-servers
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
依赖项
创建一个 requirements.txt 与以下文件一起:
langchain-mcp-adapters
langgraph
langchain-groq
python-dotenv
asyncio
requests
google-auth
google-auth-oauthlib
google-auth-httplib2
google-api-python-client
PyGithub
⚙️ 配置
创建一个 .env 项目根目录中的文件:
# Groq API (Required)
GROQ_API_KEY=your_groq_api_key_here
# Weather API
WEATHER_API_KEY=your_weather_api_key
# Gmail API
GMAIL_CLIENT_ID=your_gmail_client_id
GMAIL_CLIENT_SECRET=your_gmail_client_secret
# Google Drive & Calendar
GOOGLE_DRIVE_CREDENTIALS=path_to_credentials.json
# Google Maps API
GOOGLE_MAPS_API_KEY=your_maps_api_key
# GitHub Token
GITHUB_TOKEN=your_github_personal_access_token
# SQLite Database
SQLITE_DB_PATH=./data/database.db
获取API密钥
- Groq API在……注册 console.groq.com(可翻译为:“Groq 控制台网站”或保持原样,因为域名通常不直接翻译)
- 谷歌服务在(指定位置)创建项目 console.cloud.google.com 翻译为中文是“Google Cloud 控制台”
- GitHub在...生成令牌 github.com/设置/令牌(或:访问令牌设置页面)
- 天气API请在您偏好的天气API提供商处注册
🚀 使用方法
启动代理
python client.py
交互式命令
该代理提供了一个交互式的命令行界面(CLI),您可以在其中提问或输入命令:
You: What's the weather in New York?
AI Response: The current temperature in New York is 72°F with partly cloudy skies...
You: Calculate 25 * 4 + 10
AI Response: The result is 110
You: Search for information about quantum computing
AI Response: Here's what I found about quantum computing...
You: Send an email to john@example.com with subject "Meeting Tomorrow"
AI Response: Email sent successfully to john@example.com
You: Create a calendar event for team meeting tomorrow at 2 PM
AI Response: Calendar event created successfully...
You: Search GitHub for React projects
AI Response: Here are the top React repositories...
退出命令
输入以下任意一项以退出:
byeexitquit
或者按压 Ctrl+C 用于键盘中断。
🔧 客户端配置
MCP客户端已配置在 client.py 以下是服务器映射:
| 服务器名称 | 脚本 | 传输方式 | 用途 | |-------------|--------|-----------|---------|(这个表格的中文翻译保持原样,因为没有具体的中文内容对应,仅表示表格的结构) | 数学 | calculation_server.py | 标准输入输出 | 数学计算 | | 天气服务器 | WEATHER.py | 标准输入输出 | 天气信息 | | gmail-mcp-server | gmail_server.py | 标准输入输出 | Gmail 操作 | | 搜索工具 | search_server.py | 标准输入输出 | 网络与知识搜索 | | Google Workspace | drive_calander_server.py | 标准输入输出(stdio)| 云端硬盘与日历 | | OpenStreetMap | map_server.py | 标准输入输出 | 地图与位置 | | GitHub | github_server.py | 标准输入输出 | GitHub 操作 | | sqlite-db | sql_server.py | stdio | 数据库操作 | | google-sheets-robotics | robo_club_server.py | stdio | 机器人俱乐部数据 |
🤖 代理能力
LangGraph ReAct 代理能够:
- 理解上下文保持对话历史记录
- 工具选择自动选择合适的工具
- 多步骤推理规划并执行复杂的工作流程
- 错误恢复优雅地处理故障
- 并行操作在可能的情况下执行多个操作
示例工作流程
复杂任务示例:
You: Get the weather in San Francisco, search for Python tutorials,
and create a calendar event for studying tomorrow at 3 PM
Agent Process:
1. Calls weather server for San Francisco weather
2. Calls search server for Python tutorials
3. Calls calendar server to create event
4. Combines all results in coherent response
📚 代码结构
mcp-servers/
├── client.py # Main agent client
├── calculation_server.py # Math server
├── WEATHER.py # Weather server
├── gmail_server.py # Gmail server
├── search_server.py # Search server
├── drive_calander_server.py # Google Workspace server
├── map_server.py # OpenStreetMap server
├── github_server.py # GitHub server
├── sql_server.py # SQLite server
├── robo_club_server.py # Robotics server
├── .env # Environment variables
├── requirements.txt # Python dependencies
├── README.md # This file
└── docs/ # Documentation
├── api/ # API documentation
└── examples/ # Usage examples
🔐 认证
Google服务设置
- 首选 Google Cloud 控制台
- 创建一个新项目
- 启用API:Gmail、云端硬盘、日历、地图
- 创建OAuth 2.0凭据
- 下载
credentials.json - 放在项目根目录下
GitHub令牌设置
- 首选 GitHub 设置 > 开发者设置 > 个人访问令牌
- 生成新令牌(经典版)
- 选择范围:
repo,user,workflow - 将令牌复制到
.env文件
🎨 定制化
添加新服务器
- 创建您的服务器脚本(例如。,
my_server.py) - 添加到客户端配置中:
"my-custom-server": {
"command": "python",
"args": ["my_server.py"],
"transport": "stdio"
}
更换大型语言模型(LLM)
在...中修改 client.py:
llm = ChatGroq(
model="llama-3.1-70b-versatile", # or other Groq models
api_key=groq_api_key,
temperature=0.7, # adjust creativity
)
可用的Groq模型:
llama-3.1-8b-instant(快速,默认)llama-3.1-70b-versatile(能力更强)mixtral-8x7b-32768(大背景)
🐞 故障排除
常见问题
服务器连接失败:
# Check if server script exists
ls -la calculation_server.py
# Verify Python path
which python
API密钥错误:
# Verify .env file is loaded
python -c "from dotenv import load_dotenv; load_dotenv(); import os; print(os.getenv('GROQ_API_KEY'))"
导入错误:
# Reinstall dependencies
pip install --upgrade -r requirements.txt
🤝 贡献
欢迎投稿!请按照以下步骤操作:
- 为仓库创建分支
- 创建一个特性分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 提交拉取请求
发展指南
- 遵循PEP 8风格指南
- 为所有函数添加文档字符串
- 包含错误处理
- 为新功能编写测试
- 更新文档
📝 许可证
此项目采用MIT许可证授权——详见 许可证 文件中有详细信息。
🔮 路线图
- [x] 多服务器MCP架构
- [x] LangGraph ReAct 代理
- [x] 与Google Workspace集成
- [x] GitHub 操作
- [ ] 添加Slack集成服务器
- [ ] 实现Discord机器人服务器
- [ ] 添加语音接口支持
- [ ] 创建网页仪表板
- [ ] 添加对话记忆持久化功能
- [ ] 实现多用户支持
- [ ] 添加分析和日志仪表板
📊 性能
- 平均响应时间~2-3秒(取决于大型语言模型和工具)
- 并发服务器支持9+ 服务器同时运行
- 代币效率优化提示以最小化令牌使用
💬 支持
对于问题、疑问或贡献:
- GitHub Issues(GitHub问题): 打开一个问题(或:提交一个问题)
- 电子邮件您的邮箱:example@your.email(注:实际邮箱格式应为username@domain.com,此处为保持原文格式展示,实际使用时请替换为有效邮箱)
- 文档: 维基
🙏 致谢
- 人类中心主义(或人类优先) - 模型上下文协议
- LangChain - 大语言模型(LLM)编排框架
- Groq - 快速LLM推理
- 谷歌API Python客户端
- GitHub REST API
- DuckDuckGo搜索API
- OpenWeather API
📖 额外资源
为MCP和LangChain社区用心打造
⭐ 如果你觉得这个仓库有用,就给它点个星吧!
