MCP服务器集合与智能代理

一个包含多种功能服务器的MCP集合,配备智能LangChain代理,用于AI助手和聊天机器人集成多种服务和API。

  • by AbhishekPandey91
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AbhishekPandey91/MCP_Server_Client

使用说明

带有代理的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_issue
  • create_pull_request, list_pull_requests, get_pull_request
  • get_pull_request_files, get_pull_request_status
  • create_pull_request_review, merge_pull_request
  • update_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密钥

  1. Groq API在……注册 console.groq.com(可翻译为:“Groq 控制台网站”或保持原样,因为域名通常不直接翻译)
  2. 谷歌服务在(指定位置)创建项目 console.cloud.google.com 翻译为中文是“Google Cloud 控制台”
  3. GitHub在...生成令牌 github.com/设置/令牌(或:访问令牌设置页面)
  4. 天气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...

退出命令

输入以下任意一项以退出:

  • bye
  • exit
  • quit

或者按压 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服务设置

  1. 首选 Google Cloud 控制台
  2. 创建一个新项目
  3. 启用API:Gmail、云端硬盘、日历、地图
  4. 创建OAuth 2.0凭据
  5. 下载 credentials.json
  6. 放在项目根目录下

GitHub令牌设置

  1. 首选 GitHub 设置 > 开发者设置 > 个人访问令牌
  2. 生成新令牌(经典版)
  3. 选择范围: repo, user, workflow
  4. 将令牌复制到 .env 文件

🎨 定制化

添加新服务器

  1. 创建您的服务器脚本(例如。, my_server.py)
  2. 添加到客户端配置中:
"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

🤝 贡献

欢迎投稿!请按照以下步骤操作:

  1. 为仓库创建分支
  2. 创建一个特性分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推送到分支(git push origin feature/AmazingFeature)
  5. 提交拉取请求

发展指南

  • 遵循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,此处为保持原文格式展示,实际使用时请替换为有效邮箱)
  • 文档: 维基

🙏 致谢

📖 额外资源


为MCP和LangChain社区用心打造

⭐ 如果你觉得这个仓库有用,就给它点个星吧!