带LangChain和GPT-4的MCP服务器
本项目是REPO的改编 mcp服务器勇敢测试 qui利用 LangChain 作为客户端和MCP服务器之间的中介, GPT-4 为我编排。
🏗️ 建筑混合
此应用程序使用langchain作为MCP协议之上的编排层:
GPT-4 (via LangChain)
↓
LangChain Agent (orchestration)
↓
Outils LangChain (wrappers MCP)
↓
Client MCP (appelle le serveur MCP)
↓
Serveur MCP (expose les outils)
↓
APIs externes (Brave Search, OpenWeatherMap)序列图
sequenceDiagram
participant User as 👤 Utilisateur
participant LangChain as 🤖 LangChain Agent
(GPT-4)
participant MCPTool as 🔧 Outil MCP
(mcpSearchTool/mcpWeatherTool)
participant MCPClient as 📡 Client MCP
(mcpClient.ts)
participant MCPServer as 🖥️ Serveur MCP
(mcpServer.ts)
participant API as 🌐 API Externe
(Brave/OpenWeather)
User->>LangChain: Question naturelle
("Météo à Paris?")
Note over LangChain: Analyse la question
et sélectionne l'outil
LangChain->>MCPTool: Appel outil avec arguments
(tool: "weather", args: {city: "Paris"})
MCPTool->>MCPClient: callTool("weather", {city: "Paris"})
MCPClient->>MCPServer: MCP Protocol Call
(tool: "weather", args)
MCPServer->>API: Requête HTTP
(GET /weather?q=Paris)
API-->>MCPServer: Réponse JSON
(données météo)
MCPServer-->>MCPClient: MCP Response
(content: formatted weather)
MCPClient-->>MCPTool: Résultat texte formaté
MCPTool-->>LangChain: ToolMessage
(résultat de l'outil)
Note over LangChain: Interprète le résultat
et génère une réponse
LangChain-->>User: Réponse naturelle
("Il fait 15°C à Paris...")mcpServer.ts-公开工具的MCP服务器search和weather通过MCP协议mcpClient.ts-连接到服务器并调用工具的MCP客户端- LangChain工具 (
mcpSearchTool,mcpWeatherTool)-调用MCP客户端的langchain包装器 - 客户端LangChain -使用GPT-4通过语言链协调工具
📋 先决条件
- Node.js 18+
- API密钥:
- OpenAI(GPT-4) - 勇敢的搜索 - 开放天气地图
🚀 安装
- Cloner le存储库:
git clone
cd mcp-server-with-langchain-test- 安装依赖项:
npm install- 创建文件
.env从env.example:
cp env.example .env- 编辑文件
.env并添加API密钥:
OPENAI_API_KEY=votre_cle_openai
BRAVE_API_KEY=votre_cle_brave
OPENWEATHER_API_KEY=votre_cle_openweather
OPENAI_MODEL=gpt-4💻 使用
开发模式(带自动加载)
npm run dev编译项目
npm run build运行编译的项目
npm start启动后,您可以在终端中提问。打字 exit 哦 quit 倒酒。
📁 项目结构
mcp-server-with-langchain-test/
├── src/
│ ├── index.ts # Point d'entrée principal
│ ├── client.ts # Client LangChain avec GPT-4
│ ├── mcpServer.ts # Serveur MCP (expose les outils)
│ ├── mcpClient.ts # Client MCP (appelle le serveur)
│ ├── config.ts # Gestion de la configuration
│ └── tools/
│ ├── mcpSearchTool.ts # Outil LangChain wrapper pour search MCP
│ ├── mcpWeatherTool.ts # Outil LangChain wrapper pour weather MCP
│ ├── searchTool.ts # Outil direct (ancienne version)
│ └── weatherTool.ts # Outil direct (ancienne version)
├── dist/ # Fichiers compilés
├── .env # Variables d'environnement (à créer)
├── env.example # Exemple de configuration
├── package.json
├── tsconfig.json
└── README.md🎯 功能
搜索网络(勇敢搜索)
代理可以使用Brave search在web上搜索信息:
- “你知道TypeScript吗?”
- “2024年人工智能新闻研究”
天气
代理可以获得当前天气和预测:
- “巴黎的天气”
- “里昂的天气怎么样?”
- “天气75001”
复杂请求
代理可以组合多种工具来回答复杂问题:
- “2024年比较React和Vue.js”(将使用搜索)
- “巴黎天气和本周天气事件搜索”(使用天气+搜索)
🔧 混合架构:LangChain+MCP
此版本使用langchain作为MCP协议之上的中介:
- ✅ MCP服务器 :通过标准MCP协议公开工具
- ✅ 客户端MCP :连接到MCP服务器并调用工具
- ✅ LangChain工具 :调用MCP客户端的包装器
- ✅ LangChain :使用GPT-4协调工具
- ✅ GPT-4 :用于智能工具选择(而不是Claude)
- ✅ MCP兼容性 :其他MCP客户端可以使用MCP服务器
该架构允许:
- 保持现有MCP服务器可重用
- 受益于LangChain的智能编排
- 使用GPT-4而不是Claude
📝 使用示例
> Météo à Paris
🤔 Traitement en cours...
💬 Réponse:
**Météo actuelle à Paris**
🌡️ Température: 15°C (ressentie: 14°C)
☁️ Conditions: nuageux
💧 Humidité: 65%
📊 Pression: 1013 hPa
💨 Vent: 12.5 km/h NE
**Prévisions (prochaines 24h):**
- lun. 14:00: 16°C, nuageux
- lun. 17:00: 17°C, partiellement nuageux
...
> Qu'est-ce que LangChain?
🤔 Traitement en cours...
💬 Réponse:
LangChain est un framework open-source pour développer des applications...🐛 故障排除
错误“缺少必需的环境变量”
检查您的文件 .env 包含所有必需的API密钥。
错误“找不到模型”
确保您的OpenAI密钥可以访问GPT-4。你可以使用 gpt-4-turbo-preview 哦 gpt-3.5-turbo 作为替代方案。
TypeScript编译错误
确保已安装所有依赖项 npm install.
📄 许可证
国际协调委员会
🤝 贡献
欢迎捐款!不要犹豫:
- 分叉项目
- 为您的功能创建分支
- 提交您的更改
- 向分支推
- 打开拉取请求
