Servidor MCP Não Oficial para SQL Server

SQL Server MCP Server

Servidor Model Context Protocol para consultar Microsoft SQL Server via pyodbc. Exploração de banco de dados, execução de consultas seguras e análise de estrutura — tudo integrado ao seu ambiente de IA.

15+ Ferramentas
3 Plataformas
100% Read-Only
mcp_config.json
{
  "mcpServers": {
    "sqlserver-mcp": {
      "command": "python",
      "args": ["server.py"],
      "env": {
        "SQLSERVER_SERVER": "localhost",
        "SQLSERVER_DATABASE": "mydb"
      }
    }
  }
}

Tudo que você precisa para
explorar seu banco de dados

Exploração de Schema

Liste schemas, tabelas, views, procedures e funções. Navegue pela estrutura completa do seu banco de dados.

Análise de Tabelas

Descrição de colunas, índices, chaves primárias, foreign keys e relacionamentos completos entre tabelas.

Segurança em Primeiro Lugar

Apenas SELECT permitido. Bloqueio de DDL, DML e comandos perigosos. Transações read-only com rollback automático.

Pool de Conexões

Gerenciamento eficiente de conexões com pool configurável. Monitore estatísticas e performance em tempo real.

Multi-Plataforma

Funciona em macOS, Linux e Windows. Suporte a Docker para deploy rápido e consistente.

Fácil Configuração

Variáveis de ambiente simples. Suporte a .env para configuração local. Pronto para uso em minutos.

Configure em
poucos passos

1

Instale o driver ODBC

brew update
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew install --no-sandbox msodbcsql18 mssql-tools18
brew install unixodbc
2

Clone e configure

git clone https://github.com/moigomes/sqlserver-mcp.git
cd sqlserver-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
3

Configure as variáveis de ambiente

cp .env.example .env
# Edite o arquivo .env com suas credenciais
1

Adicione o repositório da Microsoft

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
2

Instale o driver ODBC

sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 mssql-tools18
sudo apt-get install -y unixodbc-dev
3

Clone e configure

git clone https://github.com/moigomes/sqlserver-mcp.git
cd sqlserver-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
1

Instale o driver ODBC

Baixe e instale o driver ODBC 18 da Microsoft:

Download ODBC Driver 18 for SQL Server
2

Clone e configure

git clone https://github.com/moigomes/sqlserver-mcp.git
cd sqlserver-mcp
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
1

Clone o repositório

git clone https://github.com/moigomes/sqlserver-mcp.git
cd sqlserver-mcp
2

Configure e execute

cp .env.example .env
# Edite o arquivo .env com suas credenciais
docker-compose up -d

Pronto para o Cursor IDE

Adicione ao seu arquivo de configuração MCP e comece a explorar seu banco de dados diretamente do editor com IA.

Claude Desktop
Cursor IDE
VS Code + Copilot
Zed Editor
mcp_config.json
{
  "mcpServers": {
    "sqlserver-mcp": {
      "command": "/path/to/.venv/bin/python",
      "args": ["/path/to/server.py"],
      "cwd": "/path/to/sqlserver-mcp",
      "env": {
        "PYTHONPATH": ".",
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

Ferramentas
disponíveis

Conexão e Diagnóstico

test_connection()

Valida conexão e retorna versão do SQL Server

pool_stats()

Retorna estatísticas do pool de conexões

Exploração de Schema

list_schemas()

Lista schemas disponíveis

list_tables(schema?)

Lista tabelas do banco

list_views(schema?)

Lista views do banco

list_procedures(schema?)

Lista stored procedures

list_functions(schema?)

Lista funções do usuário

Análise de Tabelas

describe_table(table_name, schema?)

Descreve colunas de uma tabela

get_indexes(table_name, schema?)

Retorna índices da tabela

get_primary_key(table_name, schema?)

Retorna chave primária

get_foreign_keys(table_name, schema?)

Retorna chaves estrangeiras

get_table_relationships(table_name, schema?)

Retorna todos os relacionamentos

get_table_row_count(table_name, schema?)

Contagem aproximada de linhas

Execução de Consultas

run_query(sql, max_rows?)

Executa consulta SELECT/CTE (padrão: 1000 linhas)

Casos de
uso

Veja como o MCP SQL Server pode acelerar seu trabalho com IA

🔍

Exploração de Schema

Descoberta

Quais tabelas existem no banco de dados relacionadas a clientes?

Encontrei 3 tabelas relacionadas a clientes:

dbo.Customers - 15.234 registros
dbo.CustomerAddresses - 18.456 registros
dbo.CustomerOrders - 142.890 registros

A tabela principal Customers possui 12 colunas incluindo CustomerID (PK), Name, Email e CreatedAt.

Ferramentas usadas: list_tables() describe_table() get_table_row_count()
🔗

Análise de Relacionamentos

Estrutura

Como a tabela Orders se relaciona com outras tabelas?

A tabela Orders possui os seguintes relacionamentos:

→ Saída (FK desta tabela):
• CustomerID → Customers.CustomerID
• ProductID → Products.ProductID
• ShippingID → ShippingMethods.ID

← Entrada (outras tabelas):
• OrderItems.OrderID → Orders.OrderID
• Payments.OrderID → Orders.OrderID
Ferramentas usadas: get_table_relationships() get_foreign_keys()
📊

Consultas de Dados

Análise

Qual foi o faturamento total por mês nos últimos 6 meses?

Aqui está o faturamento mensal:

Jul/2024R$ 245.890,00
Ago/2024R$ 312.456,00
Set/2024R$ 287.120,00
Out/2024R$ 356.780,00
Nov/2024R$ 423.900,00
Dez/2024R$ 512.340,00

Crescimento de 108% no período! 📈

Ferramentas usadas: run_query()
📝

Documentação Automática

Produtividade

Gere a documentação completa da tabela Products

📋 Documentação: dbo.Products

Colunas:
• ProductID (int, PK, NOT NULL)
• Name (nvarchar(200), NOT NULL)
• Price (decimal(10,2), NOT NULL)
• CategoryID (int, FK → Categories)
• Stock (int, DEFAULT 0)

Índices: IX_Category, IX_Name
Registros: ~8.450
Ferramentas usadas: describe_table() get_indexes() get_primary_key()

Debug de Performance

Otimização

A query de relatório está lenta. Quais índices a tabela Sales possui?

A tabela Sales possui 3 índices:

PK_Sales (Clustered)
→ SaleID

IX_Sales_Date (Non-clustered)
→ SaleDate

IX_Sales_Customer (Non-clustered)
→ CustomerID

⚠️ Sugestão: Falta um índice composto em (SaleDate, CustomerID) para otimizar o relatório.

Ferramentas usadas: get_indexes() describe_table()
🚀

Planejamento de Migração

DevOps

Preciso migrar os dados. Liste todas as stored procedures do schema vendas

Encontrei 5 stored procedures no schema vendas:

• sp_ProcessOrder
• sp_CalculateCommission
• sp_GenerateInvoice
• sp_UpdateInventory
• sp_CloseMonthlyPeriod

Também identifiquei 2 functions e 3 views neste schema.

Ferramentas usadas: list_procedures() list_functions() list_views()

Variáveis de
ambiente

Variável Obrigatório Padrão Descrição
SQLSERVER_SERVER Sim - Endereço do servidor
SQLSERVER_DATABASE Não - Nome do banco de dados
SQLSERVER_USERNAME Condicional* - Usuário para autenticação
SQLSERVER_PASSWORD Condicional* - Senha para autenticação
SQLSERVER_PORT Não 1433 Porta do servidor
SQLSERVER_DRIVER Não ODBC Driver 18 Driver ODBC
SQLSERVER_ENCRYPT Não yes Criptografar conexão
SQLSERVER_TRUST_SERVER_CERTIFICATE Não no Confiar em cert. autoassinado
SQLSERVER_TRUSTED_CONNECTION Não no Usar autenticação Windows
SQLSERVER_LOG_LEVEL Não INFO Nível de log
SQLSERVER_POOL_SIZE Não 5 Tamanho do pool de conexões
SQLSERVER_POOL_IDLE_TIME Não 300 Tempo de ociosidade (segundos)

* SQLSERVER_USERNAME e SQLSERVER_PASSWORD são obrigatórios se SQLSERVER_TRUSTED_CONNECTION não estiver como yes.

Segurança
em primeiro lugar

Comandos Permitidos

  • SELECT
  • WITH (CTEs)

Comandos Bloqueados

  • INSERT, UPDATE, DELETE
  • DROP, CREATE, ALTER, TRUNCATE
  • EXEC, EXECUTE, xp_*, sp_configure
  • OPENROWSET, OPENDATASOURCE, BULK

Proteções Adicionais

SQL Injection

Múltiplos statements são bloqueados automaticamente

Transação Read-Only

Todas as queries executam com ROLLBACK automático

Queries Parametrizadas

Internamente usa queries parametrizadas

Limite de Linhas

Máximo de 1000 linhas por consulta (configurável)

Códigos de Erro

E101 Falha na conexão
E102 Timeout
E201 Configuração ausente
E301 Erro de validação
E303 Query bloqueada
E401 Erro na query
E402 Tabela não encontrada
E404 Permissão negada

Clientes
compatíveis

🖥️

Claude Desktop

macOS, Windows

📝

Cursor IDE

Multi-plataforma

💻

VS Code + Copilot

Suporte MCP em preview

Zed

macOS, Linux

🌊

Windsurf

IDE focada em IA

🔄

Continue

Extensão VS Code