MCP-MAB-服务MCP(模型上下文协议)
该项目包含用Python开发的多个MCP(模型上下文协议)服务器,允许通过MCP协议公开功能,以便与Claude Desktop或Cursor等AI助手集成。
📋 描述
MCP-MAB是 MCP服务器 等等 客户端MCP 表现出不同的能力:
- 数学计算 :基本算术运算
- 翻译 :多语言翻译提示
- 天气 :简单气象服务
该项目包括:
- 许多 MCP服务器 谁公开工具和提示
- 二 客户端MCP 演示了使用LangChain服务器的不同方法:
- main.py :连接到单个服务器的单个客户端 - langchain_client.py :同时连接到多个服务器的高级客户端
🏗️ 项目结构
mcp-mab/
├── servers/ # Serveurs MCP
│ ├── math_server.py # Serveur de calcul (add, multiply)
│ ├── traducteur.py # Serveur de traduction (prompts)
│ └── weather_server.py # Serveur météo
├── configurations/ # Fichiers de configuration (exemples)
│ ├── claude_desktop_config.json # Exemple de configuration pour Claude Desktop
│ ├── mcp.json # Exemple de configuration pour Cursor
│ └── explications # Explications sur les configurations
├── main.py # Client MCP simple (un seul serveur)
├── langchain_client.py # Client MCP avancé (plusieurs serveurs)
├── pyproject.toml # Dépendances du projet
└── README.md # Ce fichier🚀 MCP服务器可用
1.数学服务器(math_server.py)
公开计算工具的简单服务器:
add(a, b):添加双喷嘴multiply(a, b):倍数
使用:
python servers/math_server.py2.翻译服务器(traducteur.py)
基于提示的翻译服务器,公开:
translate(text, source_lang, target_lang):两种语言之间的通用翻译fr_to_en(text):专业翻译法语→英语
使用:
python servers/traducteur.py3.天气服务器(weather_server.py)
简单的天气服务器,公开:
get_weather(location):获取给定位置的天气
注: 此服务器使用传输 上海证券交易所 (服务器发送事件)而不是stdio,这允许HTTP连接。
使用:
python servers/weather_server.py服务器启动于 http://localhost:8000/sse 并且可以与支持SSE传输的客户端一起使用。
🔌 客户端MCP
该项目包括: 双客户端MCP 演示了使用MCP服务器和langchain的不同方法。
1.客户端简单(main.py)
此客户端连接到 单个MCP服务器 并使用低级MCP API。
操作:
- 连接 通过stdio(标准输入/输出)连接到MCP服务器
- 初始化 与服务器的MCP会话
- 自动充电 服务器公开的所有工具
- 创建LangChain代理 谁可以使用这些工具回答问题
架构:
┌─────────────────┐ MCP Protocol ┌─────────────────┐
│ Client MCP │ ◄──────────────────────────► │ Serveur MCP │
│ (main.py) │ (STDIO Transport) │ (math_server.py)│
│ │ │ │
│ - LangChain │ │ - add() │
│ - Agent IA │ │ - multiply() │
└─────────────────┘ └─────────────────┘执行:
uv run main.py客户端连接到数学服务器并允许IA代理使用函数 add 和 multiply 回答诸如“什么是54+2\*3?”
2.多服务器客户端(langchain_client.py)
此高级客户端使用 MultiServerMCPClient 要连接到 多个MCP服务器同时运行 具有不同的运输。
功能:
- 并行连接到多个服务器
- 支持不同的传输(STDIO和SSE)
- 利用率
create_react_agentLanggraph为更强大的代理
架构:
┌──────────────────────┐
│ Client Multi-Serveur│
│ (langchain_client.py)│
│ │
│ - LangGraph Agent │
│ - MultiServerMCP │
└──────────┬───────────┘
│
┌──────┴──────┐
│ │
┌───▼────┐ ┌───▼──────┐
│ Math │ │ Weather │
│ Server │ │ Server │
│(STDIO) │ │ (SSE) │
└────────┘ └──────────┘配置:
- 数学服务器 :通过stdio连接(Python命令)
- 天气服务器 :通过SSE连接(HTTP on
http://localhost:8000/sse)
执行:
# D'abord, démarrez le serveur weather en arrière-plan
python servers/weather_server.py &
# Ensuite, exécutez le client
uv run langchain_client.py客户端可以使用两台服务器的工具来回答各种问题,如“什么是2+2?”或“旧金山的天气怎么样?”。
⚙️ 配置
先决条件
- Python 3.12或更高版本
uv(现代Python包管理器)
安装依赖项
uv syncClaude桌面的配置
文件 configurations/claude_desktop_config.json 提供 例如 并包含将MCP服务器与Claude Desktop集成的配置。
配置位置: ~/.config/Claude/claude_desktop_config.json
注意Linux: Claude Desktop尚未正式适用于Linux。要在Linux上使用Claude Desktop,您可以使用 克劳德桌面debian 它为Debian发行版提供构建。该项目将官方Windows应用程序重新打包为在Linux上本地运行。
配置倾倒光标
文件 configurations/mcp.json 提供 例如 并包含将MCP服务器与光标集成的配置。
配置位置: ~/.cursor/mcp.json
注: 在使用这些配置文件之前,根据您的环境调整这些配置文件中的路径。
💡 LangChain的使用示例
客户端简单(无服务)
文件 main.py 演示如何使用带有langchain的MCP服务器:
uv run main.py代理可以使用MCP工具回答诸如“什么是54+2\*3?”
多服务器客户端
文件 langchain_client.py 演示如何同时连接到多个MCP服务器:
# Démarrez le serveur weather (transport SSE)
python servers/weather_server.py &
# Exécutez le client multi-serveurs
uv run langchain_client.py代理可以使用配置的所有服务器的工具来回答各种问题。
📦 主要依赖项
mcp:用于创建MCP服务器的库langchain:创建LLM应用程序的框架langchain-mcp-adapters:用于将MCP与LangChain集成的适配器langchain-openaiOpenAI与LangChain的集成langgraph:使用LLM创建工作流的框架python-dotenv:环境变量的定义
🔧 发展
要创建新的MCP服务器:
- 在中创建文件
servers/ - 使用
FastMCP要创建服务器:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Mon Serveur")
@mcp.tool()
def ma_fonction(param: str) -> str:
"""Description de la fonction"""
return "résultat"
if __name__ == "__main__":
mcp.run()- 将配置添加到
configurations/claude_desktop_config.json或configurations/mcp.json
📝 备注
- 运输MCP :
- 大多数服务器使用传输 工作室 (标准输入/输出) - 天气服务器使用传输 上海证券交易所 (服务器发送事件)用于HTTP连接
- 环境变量 :确保已配置环境变量(例如:
OPENAI_API_KEY)在文件中.env在OpenAI中使用LangChain - 多服务器 :倾倒器
langchain_client.py,如果要使用其功能,必须首先在后台启动天气服务器
🙏 致谢
非常感谢 伊登·马科 倒儿子优秀课程:
- MCP速成课程:一天内完成模型上下文协议
- 构建、连接、部署:主MCP服务器、MCP客户端、强大LLM应用程序的工具和资源
本课程是理解和实现MCP协议的宝贵灵感和学习来源。
📄 许可证
该项目是作为教育和示范提供的。
