mcp-server

SBourrier/mcp-server

3.2

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.

Tools
1
Resources
0
Prompts
0

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

  1. Ouvrir McpSqlServer.sln dans Visual Studio
  2. Cliquer sur BuildBuild Solution (ou F6)
  3. 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.internal au lieu de localhost dans 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éralement master pour obtenir la version)
  • User Id : Nom d'utilisateur SQL Server
  • Password : Mot de passe
  • TrustServerCertificate : True pour 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

  1. initialize : Initialise la connexion avec le serveur MCP
  2. tools/list : Liste les outils disponibles
  3. 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=True uniquement en développement
  • Pour la production, configurez des certificats SSL valides sur SQL Server

🐛 Dépannage

Le serveur ne démarre pas

  1. Vérifiez que .NET 8 est installé : dotnet --version
  2. Vérifiez que Docker est en cours d'exécution : docker ps
  3. Consultez les logs : docker logs <container-id>

Erreur de connexion SQL Server

  1. Vérifiez que SQL Server est en cours d'exécution
  2. Vérifiez que le port 1433 est accessible
  3. Vérifiez les identifiants dans la connection string
  4. Assurez-vous que l'authentification SQL Server est activée
  5. Depuis Docker, utilisez host.docker.internal au lieu de localhost (Windows/Mac)

L'outil n'apparaît pas dans LibreChat

  1. Vérifiez que le fichier librechat.yaml est correctement formaté
  2. Redémarrez LibreChat
  3. 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.