SBourrier/mcp-server
If you are the rightful owner of mcp-server 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 implements a Model Context Protocol (MCP) server in C# to query the version of SQL Server.
MCP SQL Server Tool
Serveur MCP (Model Context Protocol) en C# pour interroger la version de SQL Server.
📋 Description
Ce projet implémente un serveur MCP qui expose un outil unique : get_version_sql_server. Cet outil permet de se connecter à une instance SQL Server et de récupérer sa version.
Caractéristiques
- ✅ Développé en C# avec .NET 8
- ✅ Compatible Windows et Linux
- ✅ Déployable via Docker
- ✅ Intégration avec LibreChat
- ✅ Communication via stdio (JSON-RPC)
- ✅ Sécurisé (masquage des mots de passe dans les logs)
🛠️ Prérequis
Pour le développement
- Visual Studio 2022 (ou Visual Studio Code)
- .NET 8.0 SDK
- SQL Server (local ou distant)
Pour le déploiement
- Docker Desktop (Windows ou Linux)
- LibreChat (pour l'intégration)
📁 Structure du projet
mcp-server/
├── McpSqlServer/
│ ├── McpSqlServer.csproj # Fichier projet .NET
│ └── Program.cs # Code source principal
├── McpSqlServer.sln # Solution Visual Studio
├── Dockerfile # Dockerfile pour Windows
├── Dockerfile.linux # Dockerfile pour Linux
├── librechat.example.yaml # Exemple de configuration LibreChat
├── build.ps1 # Script de build PowerShell
├── build.sh # Script de build Bash
├── test.ps1 # Script de test PowerShell
├── test.sh # Script de test Bash
└── README.md # Ce fichier
🚀 Installation et Build
Option 1 : Build avec Docker (Recommandé)
Sur Windows
# Builder l'image Docker
.\build.ps1
# Ou pour builder la version Linux depuis Windows
.\build.ps1 -Linux
Sur Linux/Mac
# Rendre le script exécutable
chmod +x build.sh
# Builder l'image Docker
./build.sh
Option 2 : Build avec .NET CLI
# Restaurer les dépendances
dotnet restore McpSqlServer/McpSqlServer.csproj
# Builder le projet
dotnet build McpSqlServer/McpSqlServer.csproj -c Release
# Publier l'application
dotnet publish McpSqlServer/McpSqlServer.csproj -c Release -o ./publish
Option 3 : Build avec Visual Studio
- Ouvrir
McpSqlServer.slndans Visual Studio - Cliquer sur Build → Build Solution (ou F6)
- L'exécutable sera généré dans
McpSqlServer/bin/Release/net8.0/
🧪 Tests
Test automatique
Sur Windows
# Test avec la connection string par défaut
.\test.ps1
# Test avec une connection string personnalisée
.\test.ps1 -ConnectionString "Server=myserver;Database=master;User Id=sa;Password=MyPass123!;TrustServerCertificate=True;"
Sur Linux/Mac
# Rendre le script exécutable
chmod +x test.sh
# Test avec la connection string par défaut
./test.sh
# Test avec une connection string personnalisée
./test.sh "Server=myserver;Database=master;User Id=sa;Password=MyPass123!;TrustServerCertificate=True;"
Test manuel
Vous pouvez tester le serveur MCP manuellement en envoyant des requêtes JSON-RPC via stdin :
# Exécuter le serveur
docker run --rm -i mcp-sql-server:latest
# Puis envoyer les requêtes suivantes (une par ligne) :
# 1. Initialize
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}
# 2. Liste des outils
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
# 3. Appel de l'outil
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_version_sql_server","arguments":{"connectionString":"Server=localhost;Database=master;User Id=sa;Password=YourPass;TrustServerCertificate=True;"}}}
🐋 Déploiement dans LibreChat
Étape 1 : Builder l'image Docker
Suivez les instructions de la section Installation et Build ci-dessus.
Étape 2 : Configurer LibreChat
Ajoutez la configuration suivante à votre fichier librechat.yaml :
mcpServers:
mcp-sql-server:
command: docker
args:
- run
- --rm
- -i
- --network=host
- mcp-sql-server:latest
env:
DOTNET_ENVIRONMENT: Production
metadata:
name: "SQL Server Version Tool"
description: "Retrieves SQL Server version information"
version: "1.0.0"
Note importante pour Windows :
- Si votre SQL Server est sur l'hôte, utilisez
host.docker.internalau lieu delocalhostdans votre connection string - Exemple :
Server=host.docker.internal,1433;Database=master;...
Étape 3 : Redémarrer LibreChat
# Redémarrer LibreChat pour prendre en compte la nouvelle configuration
docker-compose restart
Étape 4 : Utiliser l'outil dans LibreChat
Dans LibreChat, vous pouvez maintenant utiliser l'outil get_version_sql_server :
Exemple de prompt :
Utilise l'outil get_version_sql_server pour me donner la version de SQL Server.
Connection string: Server=host.docker.internal;Database=master;User Id=sa;Password=MyPassword123!;TrustServerCertificate=True;
🔧 Configuration
Connection String SQL Server
Le format de la connection string est le suivant :
Server=<hostname>;Database=<database>;User Id=<username>;Password=<password>;TrustServerCertificate=True;
Paramètres :
Server: Nom ou adresse IP du serveur SQL Server (avec port si nécessaire, ex:localhost,1433)Database: Nom de la base de données (généralementmasterpour obtenir la version)User Id: Nom d'utilisateur SQL ServerPassword: Mot de passeTrustServerCertificate:Truepour accepter les certificats auto-signés (recommandé pour le développement)
Exemples :
# Local Windows
Server=localhost;Database=master;Integrated Security=true;TrustServerCertificate=True;
# Local avec authentification SQL
Server=localhost;Database=master;User Id=sa;Password=MyPass123!;TrustServerCertificate=True;
# Serveur distant
Server=192.168.1.100,1433;Database=master;User Id=sa;Password=MyPass123!;TrustServerCertificate=True;
# Depuis Docker vers l'hôte (Windows/Mac)
Server=host.docker.internal;Database=master;User Id=sa;Password=MyPass123!;TrustServerCertificate=True;
📚 Protocole MCP
Le serveur implémente le protocole MCP (Model Context Protocol) version 2024-11-05.
Méthodes supportées
- initialize : Initialise la connexion avec le serveur MCP
- tools/list : Liste les outils disponibles
- tools/call : Appelle un outil spécifique
Outil disponible : get_version_sql_server
Description : Récupère la version de SQL Server
Paramètres :
connectionString(string, requis) : Connection string SQL Server
Retour :
- Type :
text - Contenu : Version de SQL Server au format texte
Exemple de réponse :
SQL Server Version:
Microsoft SQL Server 2019 (RTM-CU18) (KB5017593) - 15.0.4261.1 (X64)
Sep 12 2022 13:23:23
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19045: ) (Hypervisor)
🔒 Sécurité
- Les mots de passe dans les connection strings sont automatiquement masqués dans les logs
- Les logs sont redirigés vers stderr pour ne pas interférer avec le protocole MCP (stdout)
- Il est recommandé d'utiliser
TrustServerCertificate=Trueuniquement en développement - Pour la production, configurez des certificats SSL valides sur SQL Server
🐛 Dépannage
Le serveur ne démarre pas
- Vérifiez que .NET 8 est installé :
dotnet --version - Vérifiez que Docker est en cours d'exécution :
docker ps - Consultez les logs :
docker logs <container-id>
Erreur de connexion SQL Server
- Vérifiez que SQL Server est en cours d'exécution
- Vérifiez que le port 1433 est accessible
- Vérifiez les identifiants dans la connection string
- Assurez-vous que l'authentification SQL Server est activée
- Depuis Docker, utilisez
host.docker.internalau lieu delocalhost(Windows/Mac)
L'outil n'apparaît pas dans LibreChat
- Vérifiez que le fichier
librechat.yamlest correctement formaté - Redémarrez LibreChat
- Consultez les logs de LibreChat :
docker-compose logs librechat
📝 Logs et Debug
Les logs du serveur MCP sont écrits sur stderr. Pour les consulter :
# Avec Docker
docker logs <container-id>
# En exécution directe
dotnet McpSqlServer.dll 2> logs.txt
🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
📄 Licence
Ce projet est fourni à titre d'exemple et peut être librement utilisé et modifié selon vos besoins.
🔗 Références
✉️ Support
Pour toute question ou problème, veuillez ouvrir une issue sur le repository GitHub.