MCP Microsoft SQL Server

Um servidor MCP para integração com bancos de dados Microsoft SQL Server.

Documentação

MCP Microsoft SQL Server

Um servidor Model Context Protocol (MCP) configurável para integração do Microsoft SQL Server com o Claude Code e outros clientes MCP. Permite que assistentes de IA interajam de forma segura com bancos de dados SQL Server por meio de configurações baseadas em projetos, com capacidades completas de leitura e escrita.

🌟 Recursos

🔧 Configuração Baseada em Projetos

  • Múltiplas conexões de banco de dados - Alterne entre diferentes projetos e bancos de dados
  • Acesso específico a esquemas - Restrinja o acesso a esquemas específicos por projeto
  • Permissões configuráveis - Controle refinado sobre operações de leitura/escrita/exclusão
  • Configuração baseada em ambiente - Diferentes configurações para desenvolvimento, homologação e produção

🛡️ Segurança e Proteção

  • Gerenciamento de transações - Reversão automática em caso de erros em operações de escrita
  • Validação de consultas - Previna injeção de SQL e valide todas as operações
  • Exigência de cláusula WHERE - Cláusulas WHERE obrigatórias para operações UPDATE/DELETE
  • Restrições de limite de linhas - Limites configuráveis para evitar operações em massa acidentais
  • Registro de auditoria - Rastreie todas as operações do banco de dados para responsabilização

🔍 Operações de Banco de Dados

  • Operações de Leitura: Consultas SELECT com paginação e filtragem
  • Operações de Escrita: INSERT, UPDATE, DELETE com segurança de transação
  • Exploração de Esquemas: Navegue por tabelas, colunas, relacionamentos e índices
  • Gerenciamento de Tabelas: Obtenha metadados, estatísticas e dados de exemplo
  • Gerenciamento de Configuração: Alterne entre configurações de projeto dinamicamente

🚀 Integração com IA

  • Integração com Claude Desktop - Configuração perfeita com o aplicativo Claude Desktop
  • Conformidade com o protocolo MCP - Funciona com qualquer cliente compatível com MCP
  • Interface em linguagem natural - Interaja com bancos de dados usando inglês simples
  • Tratamento de erros - Mensagens de erro claras e acionáveis para IA e humanos

📋 Pré-requisitos

  • .NET 9.0 ou posterior
  • Microsoft SQL Server (qualquer versão suportada)
  • Claude Desktop (para integração com Claude)
  • Permissões apropriadas no banco de dados para as operações que você deseja realizar

🚀 Início Rápido

1. Instalação

# Clone the repository
git clone https://github.com/yourusername/mcp-ms-sql-server.git
cd mcp-ms-sql-server

# Build the project
dotnet build -c Release

2. Criar Configuração do Projeto

Crie um arquivo de configuração para o seu projeto no diretório Configurations/:

// Configurations/my-project.json
{
  "name": "My E-Commerce Project",
  "connectionString": "Server=localhost;Database=ECommerceDB;Integrated Security=true;",
  "allowedSchema": "dbo",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": false
  },
  "security": {
    "requireWhereClause": true,
    "maxRowsPerQuery": 1000,
    "auditOperations": true
  }
}

3. Configurar o Claude Desktop

Adicione à sua configuração do Claude Desktop:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "sql-server": {
      "type": "stdio",
      "command": "C:\\Git\\mcp-ms-sql-server\\McpMsSqlServer\\bin\\Release\\net9.0\\McpMsSqlServer.exe",
      "env": {
        "MCP_CONFIG_NAME": "my-project"
      }
    }
  }
}

Nota: Primeiro compile o projeto com dotnet build -c Release para criar o executável.

4. Começar a Usar

No Claude Desktop, agora você pode perguntar:

  • "Mostre-me todas as tabelas no banco de dados"
  • "Insira um novo cliente com nome 'John Doe' e email 'john@example.com'"
  • "Quais são os 10 produtos mais vendidos?"
  • "Atualize o preço do produto com ID 123 para R$ 29,99"

📖 Guia de Configuração

Estrutura de Configuração do Projeto

{
  "name": "Project Display Name",
  "connectionString": "Your SQL Server connection string",
  "allowedSchema": "schema_name",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": false,
    "allowSchemaChanges": false
  },
  "security": {
    "requireWhereClause": true,
    "maxRowsPerQuery": 1000,
    "maxRowsPerUpdate": 100,
    "maxRowsPerDelete": 10,
    "auditOperations": true
  },
  "querySettings": {
    "timeoutSeconds": 30,
    "enableQueryPlan": false,
    "allowJoins": true,
    "allowSubqueries": true
  },
  "restrictedTables": ["sensitive_table", "audit_log"],
  "allowedOperations": ["SELECT", "INSERT", "UPDATE", "DELETE"]
}

Exemplos de Configuração

Ambiente de Desenvolvimento
{
  "name": "Development Database",
  "connectionString": "Server=dev-server;Database=DevDB;Integrated Security=true;",
  "allowedSchema": "dbo",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": true,
    "allowSchemaChanges": true
  },
  "security": {
    "requireWhereClause": false,
    "maxRowsPerQuery": 5000,
    "auditOperations": false
  }
}
Ambiente de Produção
{
  "name": "Production Database",
  "connectionString": "Server=prod-server;Database=ProdDB;User Id=app_user;Password=secure_password;",
  "allowedSchema": "app",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": false,
    "allowSchemaChanges": false
  },
  "security": {
    "requireWhereClause": true,
    "maxRowsPerQuery": 100,
    "maxRowsPerUpdate": 10,
    "auditOperations": true
  },
  "restrictedTables": ["user_passwords", "payment_info"]
}

🛠️ Ferramentas Disponíveis

Gerenciamento de Configuração (4 ferramentas)

  • ListConfigurations - Mostra todas as configurações de projeto disponíveis
  • SwitchConfiguration - Alterna para uma configuração de projeto diferente
  • GetCurrentConfiguration - Visualiza os detalhes da configuração atual
  • TestConnection - Testa a conectividade com o banco de dados

Operações Principais do Banco de Dados (6 ferramentas)

  • ExecuteQuery - Executa consultas SELECT dentro do esquema permitido
  • GetSchemaInfo - Explora a estrutura e os objetos do banco de dados
  • GetTableInfo - Obtém metadados da tabela e dados de exemplo
  • InsertRecords - Insere novos registros com suporte a transações
  • UpdateRecords - Atualiza registros existentes (requer cláusula WHERE)
  • DeleteRecords - Exclui registros (requer cláusula WHERE)

Recursos Avançados (6 ferramentas)

  • BuildQuery - Gera consultas SQL a partir de linguagem natural
  • AnalyzeQueryPerformance - Analisa planos de execução de consultas
  • GetDatabasePerformanceStats - Métricas de desempenho do banco de dados
  • DiscoverData - Pesquisa tabelas/colunas por padrões
  • AnalyzeTableRelationships - Encontra relacionamentos entre tabelas
  • ProfileDataQuality - Analisa qualidade dos dados e estatísticas

🔒 Considerações de Segurança

Boas Práticas

  • Use usuários dedicados do banco de dados com permissões mínimas necessárias
  • Ative o registro de auditoria para ambientes de produção
  • Defina limites de linhas apropriados para evitar operações em massa acidentais
  • Restrinja tabelas sensíveis usando a configuração restrictedTables
  • Use requisitos de cláusula WHERE para operações UPDATE/DELETE
  • Faça revisões regulares de segurança das configurações e permissões

Segurança da String de Conexão

# Use environment variables for sensitive data
export DB_PASSWORD="your_secure_password"
{
  "connectionString": "Server=myserver;Database=mydb;User Id=myuser;Password=${DB_PASSWORD};"
}

🤝 Contribuindo

Aceitamos contribuições! Consulte nosso Guia de Contribuição para detalhes.

Configuração de Desenvolvimento

# Clone the repo
git clone https://github.com/yourusername/mcp-ms-sql-server.git
cd mcp-ms-sql-server

# Install dependencies
dotnet restore

# Run tests
dotnet test

# Build and test
dotnet build -c Release

📚 Documentação

🐛 Solução de Problemas

Problemas Comuns

Falha na Conexão

# Test your connection string
dotnet run -- --test-connection --config your-project

Permissão Negada

  • Verifique as permissões do seu usuário no banco de dados
  • Verifique a configuração allowedSchema
  • Garanta que o usuário tenha acesso ao esquema especificado

Configuração Não Encontrada

  • Verifique se o arquivo de configuração existe em Configurations/
  • Verifique a variável de ambiente MCP_CONFIG_NAME
  • Garanta que a sintaxe JSON seja válida

📄 Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

🌟 Agradecimentos

📞 Suporte


Feito com ❤️ para a comunidade de desenvolvimento MCP e IA