mcp-server-with-langchain-test

vinzlac/mcp-server-with-langchain-test

3.2

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.

Tools
2
Resources
0
Prompts
0

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...")
  1. mcpServer.ts - Serveur MCP qui expose les outils search et weather via le protocole MCP
  2. mcpClient.ts - Client MCP qui se connecte au serveur et appelle les outils
  3. Outils LangChain (mcpSearchTool, mcpWeatherTool) - Wrappers LangChain qui appellent le client MCP
  4. 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

  1. Cloner le repository :
git clone <votre-repo>
cd mcp-server-with-langchain-test
  1. Installer les dépendances :
npm install
  1. Créer le fichier .env à partir de env.example :
cp env.example .env
  1. Éditer le fichier .env et 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 à :

  1. Fork le projet
  2. Créer une branche pour votre fonctionnalité
  3. Commiter vos changements
  4. Pousser vers la branche
  5. Ouvrir une Pull Request