À propos du projet

Il s'agit d'un serveur Model Context Protocol (MCP) en lecture seule par défaut pour Microsoft SQL Server, distribué en tant que package NuGet .NET (Alyio.McpMssql) ciblant .NET 8.0 et 10.0. Il est conçu pour permettre aux agents IA et aux développeurs d'interagir en toute sécurité avec des instances SQL Server avec une charge opérationnelle minimale. Les capacités principales incluent la découverte de métadonnées du catalogue (listage des bases de données, schémas, tables, vues, procédures stockées et fonctions), l'exécution de requêtes SELECT uniquement sécurisées et paramétrées avec limites de lignes et délais configurables, ainsi que l'analyse de plans d'exécution pour le diagnostic des requêtes lentes. L'outil analyze_query renvoie des résumés JSON compacts des plans d'exécution incluant le coût, les détails des opérateurs, les estimations de cardinalité, les avertissements, les suggestions d'index et les statistiques d'attente, avec les plans XML complets disponibles via une URI de ressource dédiée expirant après 7 jours. La configuration prend en charge à la fois les configurations mono-connexion via des variables d'environnement préfixées MCPMSSQL_, et les configurations multi-profils via des fichiers appsettings.json à l'échelle de l'utilisateur (situés sur ~/.config/mcp-mssql/appsettings.json sur les systèmes de type Unix et %USERPROFILE%\.config\mcp-mssql\appsettings.json sur Windows). Les paramètres par profil incluent les chaînes de connexion, les caps de lignes de requête, les valeurs de délai d'attente et l'accès en écriture optionnel. Il prend nativement en charge Azure SQL avec l'authentification Microsoft Entra via Microsoft.Data.SqlClient. Le serveur expose un ensemble d'outils MCP : list_profiles pour énumérer les connexions configurées, get_server_properties pour récupérer les limites et propriétés du serveur, list_objects et get_object pour la découverte de métadonnées, run_query pour l'exécution de requêtes SELECT uniquement (avec prise en charge des résultats en ligne jusqu'à 1000 lignes ou des résultats CSV instantanés jusqu'à 50000 lignes, les instantanés expirant après 1 jour), analyze_query pour l'analyse de plans d'exécution, et run_command pour exécuter des opérations d'écriture DDL/DML. L'outil run_command est désactivé par défaut ; il n'est activé que sur les profils définissant explicitement AllowWrite=true et est marqué comme destructif pour le contrôle de confirmation côté hôte. La sécurité est par défaut en lecture seule : l'accès en écriture est explicitement à activer par profil, et les requêtes utilisent la liaison paramétrée @paramName pour empêcher les injections. Le drapeau AllowWrite est une garde au niveau application, pas une limite de sécurité de la base de données ; pour une garantie de lecture seule stricte, la documentation recommande d'utiliser un compte de connexion restreint au rôle db_datareader. Il peut être déployé de trois manières: exécution directe depuis le package NuGet, installation en tant qu'outil .NET global ou exécution depuis les sources. Des extraits de configuration sont fournis pour les hôtes MCP courants, notamment Cursor, Gemini, Codex, Open Code, Claude Code et GitHub Copilot. Les tests d'intégration nécessitent une instance SQL Server réelle avec une base de données McpMssqlTest, avec des instructions pour exécuter les frameworks de test séquentiellement afin d'éviter les conditions de concurrence de base de données inter-processus. La feuille de route du projet comprend le support prévu de l'extension MCP Tasks (SEP-2663) pour gérer les requêtes longue durée via des handles de tâche durables plutôt que bloquants, sous réserve de l'adoption par le client. Le projet est sous licence MIT.