mcp-sqlserver
mcp-sqlserver
Servidor MCP (Model Context Protocol) para SQL Server, com controle de permissões e modo somente-leitura por padrão. Permite que agentes de IA (Claude, opencode e outros clientes MCP) consultem e administrem bancos SQL Server de forma segura.
Segurança
Credenciais nunca expostas ao LLM — a string de conexão é lida do ambiente e nunca aparece nas respostas nem nos logs.
Somente leitura por padrão — a ferramenta
consultabloqueia DDL/DML (INSERT, UPDATE, DELETE, DROP, etc.).Escrita sob demanda — ferramentas de escrita (
executar_update,executar_ddl, etc.) só são expostas quando o usuário da conexão possui permissão de escrita (rolessysadmin,db_owner,db_datawriteroudb_ddladmin), e exigem confirmação explícita antes de cada execução.
Pré-requisitos
Python 3.10+
Driver ODBC Driver 18 for SQL Server:
macOS:
brew install msodbcsql18Windows/Linux: instale o driver correspondente da Microsoft
Instalação
Via PyPI:
pip install sqlserver-mcp-toolsOu, sem instalar nada (executa direto do PyPI com cache):
uvx --from sqlserver-mcp-tools mcp-sqlserverConfiguração
O servidor lê a string de conexão das seguintes fontes, em ordem de prioridade:
Variável de ambiente
MSSQL_CONNECTION_STRINGVariável de ambiente
MSSQL_ENV_FILEapontando para um arquivo.envArquivo
.envno diretório de trabalho (ou na raiz do projeto)
Exemplo de string de conexão:
DRIVER={ODBC Driver 18 for SQL Server};SERVER=localhost,1433;DATABASE=seu_banco;UID=seu_usuario;PWD=sua_senha;TrustServerCertificate=yesUso com clientes MCP
Claude Desktop
Adicione ao claude_desktop_config.json:
{
"mcpServers": {
"mcp-sqlserver": {
"command": "uvx",
"args": ["--from", "sqlserver-mcp-tools", "mcp-sqlserver"],
"env": {
"MSSQL_CONNECTION_STRING": "DRIVER={ODBC Driver 18 for SQL Server};SERVER=...;DATABASE=...;UID=...;PWD=...;TrustServerCertificate=yes"
}
}
}
}Se instalou via pip install, pode usar o entry point diretamente:
{
"mcpServers": {
"mcp-sqlserver": {
"command": "mcp-sqlserver",
"env": {
"MSSQL_CONNECTION_STRING": "DRIVER={ODBC Driver 18 for SQL Server};SERVER=...;DATABASE=...;UID=...;PWD=...;TrustServerCertificate=yes"
}
}
}
}OpenCode
No opencode.json do projeto:
{
"mcp": {
"sqlserver": {
"type": "local",
"command": ["mcp-sqlserver"],
"environment": {
"MSSQL_CONNECTION_STRING": "DRIVER={ODBC Driver 18 for SQL Server};SERVER=...;DATABASE=...;UID=...;PWD=...;TrustServerCertificate=yes"
}
}
}
}Alternativa: apontar para um arquivo .env local, mantendo a senha fora do JSON:
{
"mcp": {
"sqlserver": {
"type": "local",
"command": ["mcp-sqlserver"],
"environment": {
"MSSQL_ENV_FILE": "/caminho/para/seu/.env"
}
}
}
}Ferramentas disponíveis
Somente leitura (sempre disponíveis):
Ferramenta | Descrição |
| Executa SELECT (somente leitura, bloqueia DDL/DML) |
| Lista os bancos de dados acessíveis |
| Lista tabelas e views de um banco |
| Estrutura de uma tabela (colunas, tipos, PK) |
| Índices de uma tabela |
| Lista stored procedures |
| Código-fonte de uma procedure |
| Lista funções (scalar e table-valued) |
| Código-fonte de uma função |
| Constraints de uma tabela (PK, FK, UNIQUE, CHECK, DEFAULT) |
| Estatísticas (linhas, tamanho, uso de dados) |
| Plano de execução estimado (sem executar) |
| Status da última execução de jobs do SQL Agent |
Escrita (só com permissão de escrita na conexão):
Ferramenta | Descrição |
| Executa uma stored procedure |
| Executa UPDATE (exige WHERE) |
| Cria índice |
| Altera procedure com backup automático |
| Executa DDL com backup do script de reversão |
Licença
MIT