LangChain与GPT-4的MCP服务器

一个使用LangChain作为中间层,结合GPT-4进行智能工具调度的MCP服务器项目,支持天气查询和网页搜索功能。

  • by vinzlac
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 vinzlac/mcp-server-with-langchain-test

使用说明

带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<br/>(GPT-4)
    participant MCPTool as 🔧 Outil MCP<br/>(mcpSearchTool/mcpWeatherTool)
    participant MCPClient as 📡 Client MCP<br/>(mcpClient.ts)
    participant MCPServer as 🖥️ Serveur MCP<br/>(mcpServer.ts)
    participant API as 🌐 API Externe<br/>(Brave/OpenWeather)

    User->>LangChain: Question naturelle<br/>("Météo à Paris?")
    
    Note over LangChain: Analyse la question<br/>et sélectionne l'outil
    
    LangChain->>MCPTool: Appel outil avec arguments<br/>(tool: "weather", args: {city: "Paris"})
    
    MCPTool->>MCPClient: callTool("weather", {city: "Paris"})
    
    MCPClient->>MCPServer: MCP Protocol Call<br/>(tool: "weather", args)
    
    MCPServer->>API: Requête HTTP<br/>(GET /weather?q=Paris)
    
    API-->>MCPServer: Réponse JSON<br/>(données météo)
    
    MCPServer-->>MCPClient: MCP Response<br/>(content: formatted weather)
    
    MCPClient-->>MCPTool: Résultat texte formaté
    
    MCPTool-->>LangChain: ToolMessage<br/>(résultat de l'outil)
    
    Note over LangChain: Interprète le résultat<br/>et génère une réponse
    
    LangChain-->>User: Réponse naturelle<br/>("Il fait 15°C à Paris...")
  1. mcpServer.ts -公开工具的MCP服务器 search 和 weather 通过MCP协议
  2. mcpClient.ts -连接到服务器并调用工具的MCP客户端
  3. LangChain工具 (mcpSearchTool, mcpWeatherTool)-调用MCP客户端的langchain包装器
  4. 客户端LangChain -使用GPT-4通过语言链协调工具

📋 先决条件

  • Node.js 18+
  • API密钥:
    • OpenAI(GPT-4)
    • 勇敢的搜索
    • 开放天气地图

🚀 安装

  1. Cloner le存储库:
git clone <votre-repo>
cd mcp-server-with-langchain-test
  1. 安装依赖项:
npm install
  1. 创建文件 .env 从 env.example :
cp env.example .env
  1. 编辑文件 .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.

📄 许可证

国际协调委员会

🤝 贡献

欢迎捐款!不要犹豫:

  1. 分叉项目
  2. 为您的功能创建分支
  3. 提交您的更改
  4. 向分支推
  5. 打开拉取请求