vinzlac/mcp-server-with-langchain-test
If you are the rightful owner of mcp-server-with-langchain-test and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This project is an adaptation of the mcp-server-brave-test repository, utilizing LangChain as an intermediary between the client and the MCP server, with GPT-4 for orchestration.
MCP Server with LangChain and GPT-4
Ce projet est une adaptation du repo mcp-server-brave-test qui utilise LangChain comme intermédiaire entre le client et le serveur MCP, avec GPT-4 pour l'orchestration.
🏗️ Architecture Hybride
Cette application utilise LangChain comme couche d'orchestration au-dessus du protocole 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)
Diagramme de séquence
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...")
mcpServer.ts- Serveur MCP qui expose les outilssearchetweathervia le protocole MCPmcpClient.ts- Client MCP qui se connecte au serveur et appelle les outils- Outils LangChain (
mcpSearchTool,mcpWeatherTool) - Wrappers LangChain qui appellent le client MCP - Client LangChain - Utilise GPT-4 pour orchestrer les outils via LangChain
📋 Prérequis
- Node.js 18+
- Clés API pour :
- OpenAI (GPT-4)
- Brave Search
- OpenWeatherMap
🚀 Installation
- Cloner le repository :
git clone <votre-repo>
cd mcp-server-with-langchain-test
- Installer les dépendances :
npm install
- Créer le fichier
.envà partir deenv.example:
cp env.example .env
- Éditer le fichier
.envet ajouter vos clés API :
OPENAI_API_KEY=votre_cle_openai
BRAVE_API_KEY=votre_cle_brave
OPENWEATHER_API_KEY=votre_cle_openweather
OPENAI_MODEL=gpt-4
💻 Utilisation
Mode développement (avec auto-reload)
npm run dev
Compiler le projet
npm run build
Exécuter le projet compilé
npm start
Une fois lancé, vous pouvez poser des questions dans le terminal. Tapez exit ou quit pour quitter.
📁 Structure du projet
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
🎯 Fonctionnalités
Recherche Web (Brave Search)
L'agent peut rechercher des informations sur le web en utilisant Brave Search :
- "Qu'est-ce que TypeScript?"
- "Recherche des nouvelles sur l'IA en 2024"
Météo
L'agent peut obtenir la météo actuelle et les prévisions :
- "Météo à Paris"
- "Quel temps fait-il à Lyon?"
- "Météo 75001"
Requêtes complexes
L'agent peut combiner plusieurs outils pour répondre à des questions complexes :
- "Compare React et Vue.js en 2024" (utilisera la recherche)
- "Météo à Paris et recherche des événements météo cette semaine" (utilisera météo + recherche)
🔧 Architecture Hybride : LangChain + MCP
Cette version utilise LangChain comme intermédiaire au-dessus du protocole MCP :
- ✅ Serveur MCP : Expose les outils via le protocole MCP standard
- ✅ Client MCP : Se connecte au serveur MCP et appelle les outils
- ✅ Outils LangChain : Wrappers qui appellent le client MCP
- ✅ LangChain : Orchestre les outils avec GPT-4
- ✅ GPT-4 : Utilisé pour la sélection intelligente des outils (au lieu de Claude)
- ✅ Compatibilité MCP : Le serveur MCP peut être utilisé par d'autres clients MCP
Cette architecture permet de :
- Garder le serveur MCP existant et réutilisable
- Bénéficier de l'orchestration intelligente de LangChain
- Utiliser GPT-4 au lieu de Claude
📝 Exemples d'utilisation
> 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...
🐛 Dépannage
Erreur "Missing required environment variable"
Vérifiez que votre fichier .env contient toutes les clés API requises.
Erreur "Model not found"
Assurez-vous que votre clé OpenAI a accès à GPT-4. Vous pouvez utiliser gpt-4-turbo-preview ou gpt-3.5-turbo comme alternative.
Erreur de compilation TypeScript
Vérifiez que vous avez installé toutes les dépendances avec npm install.
📄 License
ISC
🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commiter vos changements
- Pousser vers la branche
- Ouvrir une Pull Request