Sobre o projeto

Este é um servidor Model Context Protocol (MCP) para Microsoft SQL Server, somente leitura por padrão, distribuído como pacote NuGet .NET (Alyio.McpMssql) para .NET 8.0 e 10.0. Ele permite que agentes de IA e desenvolvedores interajam com instâncias do SQL Server com segurança e baixa sobrecarga operacional. Os recursos principais incluem descoberta de metadados de catálogo (listagem de bancos de dados, esquemas, tabelas, visões, procedimentos armazenados e funções), execução de consultas SELECT parametrizadas seguras, com limites de linhas e tempos limite configuráveis, e análise de planos de execução para diagnóstico de consultas lentas. A ferramenta analyze_query retorna resumos JSON compactos de planos de execução, incluindo custo, detalhes de operadores, estimativas de cardinalidade, avisos, sugestões de índices e estatísticas de espera, com planos XML completos disponíveis por meio de um URI de recurso dedicado que expira após 7 dias. A configuração oferece suporte a conexão única via variáveis de ambiente com prefixo MCPMSSQL_ e a múltiplos perfis via arquivos appsettings.json no escopo do usuário (localizados em ~/.config/mcp-mssql/appsettings.json em sistemas Unix-like e %USERPROFILE%\.config\mcp-mssql\appsettings.json no Windows). Configurações por perfil incluem strings de conexão, limites de linhas para consultas, valores de tempo limite e acesso de escrita opcional. Há suporte nativo a Azure SQL com autenticação Microsoft Entra via Microsoft.Data.SqlClient. O servidor expõe um conjunto de ferramentas MCP: list_profiles para enumerar conexões configuradas, get_server_properties para obter limites e propriedades do servidor, list_objects e get_object para descoberta de metadados, run_query para execução de consultas somente SELECT (com suporte a resultados em linha de até 1000 linhas ou resultados CSV de snapshot de até 50000 linhas, com snapshots expirando após 1 dia), analyze_query para análise de planos de execução e run_command para executar operações de escrita DDL/DML. A ferramenta run_command é desabilitada por padrão, habilitada apenas em perfis que definem explicitamente AllowWrite=true e marcada como destrutiva para bloqueio de confirmação no host. A segurança é somente leitura por padrão: o acesso de escrita é explicitamente opt-in por perfil, e as consultas usam vinculação parametrizada @paramName para evitar injeção. O sinalizador AllowWrite é uma proteção em nível de aplicação, não uma fronteira de segurança do banco de dados; para garantia rígida de somente leitura, a documentação recomenda usar um login restrito à função db_datareader. Ele pode ser implantado de três maneiras: executado diretamente do pacote NuGet, instalado como ferramenta global do .NET ou executado a partir do código-fonte. Trechos de configuração são fornecidos para hosts MCP comuns, incluindo Cursor, Gemini, Codex, Open Code, Claude Code e GitHub Copilot. Os testes de integração exigem uma instância real do SQL Server com um banco de dados McpMssqlTest, com orientação para executar frameworks de teste sequencialmente a fim de evitar condições de corrida entre processos no banco de dados. O roteiro do projeto inclui suporte planejado à extensão MCP Tasks (SEP-2663) para lidar com consultas de longa duração por meio de identificadores de tarefa duráveis, em vez de bloqueio, pendente da adoção da extensão por clientes. O projeto é licenciado sob MIT.