MCP SQL Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP SQL Servershow me the columns of the Customers table"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP SQL Server
Servidor MCP (Model Context Protocol) para Microsoft SQL Server. Permite que Claude Code, Codex, Cursor, Windsurf, Cline, Continue e outras ferramentas MCP explorem schema, relacionamentos e executem consultas SQL com foco em seguranca.
O que ele faz
Explora schemas, tabelas, colunas, indices, procedures e foreign keys
Monta ranking por intencao com
find_entitiesSugere caminhos de join com
suggest_join_pathGera plano de consulta com
plan_queryValida SQL antes de executar com
validate_queryExecuta
SELECTe, opcionalmente, escrita controlada por permissoesMantem catalogo em memoria com cache e refresh
Permite trocar o banco ativo em runtime com
switch_databasePermite trocar a porta ativa em runtime com
switch_portPermite trocar porta, usuario, senha e banco em uma unica acao com
switch_connectionLista bancos acessiveis no servidor com
list_databasesMostra a conexao ativa com
current_connectionRetorna respostas em formato visual com box-drawing ASCII/Unicode durante a execucao das tools
Ferramentas disponiveis
Ferramenta | Descricao |
| Mostra servidor, porta, banco ativo, permissao e cache |
| Lista bancos acessiveis no SQL Server atual |
| Lista todos os schemas do banco |
| Lista tabelas e views agrupadas por schema |
| Busca tabelas e views por nome |
| Mostra colunas, PK, FK, checks, identity e computed |
| Lista indices, key columns e included columns |
| Mostra rows, tamanho e datas da tabela |
| Busca colunas por nome em todas as tabelas |
| Mostra o mapa de relacionamentos de um schema |
| Lista procedures e functions |
| Executa SQL respeitando as regras de permissao |
| Mostra o modo atual e operacoes permitidas/bloqueadas |
| Retorna amostras distintas de valores por coluna |
| Executa query de leitura e adiciona interpretacao curta |
| Troca o banco ativo da sessao atual sem reiniciar o MCP |
| Troca a porta SQL Server da sessao atual sem reiniciar o MCP |
| Troca porta, usuario, senha e banco juntos com uma unica reconexao |
| Recarrega o catalogo em cache |
| Mostra estado da conexao e metricas do cache |
| Busca entidades por linguagem natural |
| Resume schemas e tabelas mais conectadas |
| Explica o papel provavel de uma tabela |
| Sugere joins a partir do grafo de FKs |
| Gera um plano de consulta a partir de um objetivo |
| Analisa SQL antes da execucao |
Sobre este README
Este arquivo fica em Markdown normal para leitura no GitHub e nas IDEs. O visual com box-drawing ASCII/Unicode aparece apenas na execucao das tools do MCP, nas respostas retornadas para Claude, Codex, Cursor e clientes compativeis.
Requisitos
Node.js 18 ou superior
Acesso a um SQL Server local ou remoto
Instalacao
git clone https://github.com/WendellOttoni/mcp-sqlserver.git
cd mcp-sqlserver
npm installConfiguracao MCP
Exemplo de .mcp.json:
{
"mcpServers": {
"sqlserver": {
"command": "node",
"args": ["C:/MCP/mcp-sqlserver/src/index.js"],
"env": {
"DB_SERVER": "localhost",
"DB_DATABASE": "MeuBanco",
"DB_USER": "sa",
"DB_PASSWORD": "MinhaSenha"
}
}
}
}Voce tambem pode usar o template em .mcp.json.example.
Variaveis de ambiente
Variavel | Obrigatoria | Padrao | Descricao |
| Nao |
| Host do SQL Server |
| Sim | - | Banco inicial da sessao |
| Nao | - | Usuario SQL; se omitido usa Windows Auth |
| Nao | - | Senha SQL |
| Nao |
| Porta do SQL Server; ignorada em instancia nomeada |
| Nao |
| Habilita criptografia na conexao com SQL Server |
| Nao |
| Confia no certificado do servidor sem validacao completa |
| Nao | - | Operacoes de escrita permitidas |
| Nao | - | Restringe escrita a tabelas especificas |
| Nao | - | Restringe escrita a schemas especificos |
| Nao | - | Allowlist opcional de bancos permitidos para |
| Nao |
| TTL do cache de metadata em ms |
| Nao |
| Timeout das queries em ms |
| Nao |
| Limite padrao de linhas para leitura |
| Nao |
| Quantidade padrao do |
Formatos de DB_SERVER
Formato | Exemplo |
Host local |
|
IP |
|
Nome da maquina |
|
Instancia nomeada com |
|
Instancia nomeada com |
|
Se usar /, o MCP converte automaticamente para o formato de instancia nomeada.
Modo de permissao
Por padrao o servidor sobe em modo READ-ONLY.
Sem DB_ALLOW_WRITE, apenas consultas de leitura sao permitidas.
Exemplo:
{
"DB_ALLOW_WRITE": "INSERT,UPDATE",
"DB_ALLOW_TABLES": "dbo.Produto,dbo.Pedido"
}Operacoes permanentemente bloqueadas:
EXEC, EXECUTE, GRANT, REVOKE, DENY, BACKUP, RESTORE, SHUTDOWN, DBCC, BULK, OPENROWSET, OPENDATASOURCE, xp_*, sp_*
Troca de banco em runtime
Agora nao e mais necessario reiniciar o processo MCP para apontar para outro banco no mesmo servidor.
Fluxo recomendado:
Rode
current_connectionpara confirmar onde a sessao esta conectada.Rode
list_databasespara ver os bancos acessiveis.Rode
switch_databasepara trocar o banco ativo.Rode
schema_summaryoulist_schemaspara explorar o novo banco.
Use:
switch_database { "database": "OutroBanco" }Comportamento:
valida a nova conexao antes de trocar
carrega o catalogo do novo banco antes de assumir a sessao
fecha o pool antigo apenas depois da validacao
se a troca falhar, a conexao atual continua ativa
Observacao:
switch_databasetroca apenas o banco ativoserver,user,passworde outras configuracoes permanecem as mesmaslist_databasesocultamaster,model,msdbetempdbpor padraouse
include_system_databases: truepara incluir bancos de sistema
Para limitar quais bancos podem ser usados em switch_database, configure:
{
"DB_ALLOW_DATABASE_SWITCH": "ReqPlay,Homologacao,Teste"
}Se DB_ALLOW_DATABASE_SWITCH nao for definida, qualquer banco acessivel pelo login atual pode ser usado.
Troca de porta em runtime
Use switch_port para apontar a sessao atual para outra porta TCP do mesmo servidor sem reiniciar o chat ou perder o contexto da IA.
Fluxo recomendado:
Rode
current_connectionpara ver servidor, porta e banco atuais.Rode
switch_portcom a nova porta.Rode
current_connection,schema_summaryoulist_schemaspara confirmar a nova conexao.
Use:
switch_port { "port": 1450 }Comportamento:
valida a nova conexao antes de trocar
carrega o catalogo usando a nova porta antes de assumir a sessao
fecha o pool antigo apenas depois da validacao
se a troca falhar, a conexao atual continua ativa
Observacao:
switch_porttroca apenas a portaserver,database,user,passworde outras configuracoes permanecem as mesmasem
DB_SERVERcom instancia nomeada, a porta e gerenciada pela instancia eswitch_portnao e aplicado
Troca completa de conexao em runtime
Use switch_connection quando precisar trocar porta, usuario, senha e banco de uma vez so, com apenas uma validacao e uma reconexao ao final.
Use:
switch_connection {
"port": 51218,
"user": "sa",
"password": "Docker@Test123",
"database": "master"
}Comportamento:
todos os parametros sao opcionais
qualquer campo omitido mantem o valor atual
a troca so e assumida depois que a nova conexao completa for validada
o pool antigo so e fechado no final, apos validar e carregar o catalogo
Exemplos de configuracao
Somente leitura:
{
"DB_SERVER": "localhost",
"DB_DATABASE": "MeuBanco"
}SQL Auth:
{
"DB_SERVER": "localhost",
"DB_DATABASE": "MeuBanco",
"DB_USER": "sa",
"DB_PASSWORD": "MinhaSenha"
}Instancia nomeada:
{
"DB_SERVER": "LAPTOP-ABC/SQLEXPRESS",
"DB_DATABASE": "MeuBanco"
}Escrita restrita por tabela:
{
"DB_SERVER": "localhost",
"DB_DATABASE": "MeuBanco",
"DB_ALLOW_WRITE": "INSERT,UPDATE",
"DB_ALLOW_TABLES": "dbo.Produto,dbo.Pedido"
}Escrita restrita por schema:
{
"DB_SERVER": "localhost",
"DB_DATABASE": "MeuBanco",
"DB_ALLOW_WRITE": "INSERT,UPDATE,DELETE",
"DB_ALLOW_SCHEMAS": "staging"
}Servidor remoto com porta customizada:
{
"DB_SERVER": "192.168.1.100",
"DB_PORT": "1450",
"DB_DATABASE": "Producao",
"DB_USER": "app_user",
"DB_PASSWORD": "SenhaSegura"
}Servidor remoto com TLS validado:
{
"DB_SERVER": "sql.empresa.local",
"DB_PORT": "1433",
"DB_DATABASE": "Producao",
"DB_USER": "app_user",
"DB_PASSWORD": "SenhaSegura",
"DB_ENCRYPT": "true",
"DB_TRUST_SERVER_CERTIFICATE": "false"
}Ferramentas de analise
As ferramentas abaixo usam metadata carregada em memoria para responder mais rapido:
find_entitiesschema_summaryexplain_tablesuggest_join_pathplan_queryrefresh_metadatahealth
Seguranca
READ-ONLYpor padraoEscrita controlada por operacao, schema e tabela
Validacao de SQL antes da execucao
Limite maximo de 1000 linhas no fluxo de leitura
Cache de metadata com TTL configuravel
Validacao de conexao logo no startup
Troca de banco em runtime com validacao antes do cutover
Estrutura do projeto
mcp-sqlserver/
|-- .mcp.json.example
|-- README.md
|-- package.json
|-- src/
| |-- config/
| | `-- env.js
| |-- db/
| | |-- catalog-cache.js
| | |-- catalog-loader.js
| | `-- connection.js
| |-- graph/
| | `-- relationship-graph.js
| |-- search/
| | |-- aliases.js
| | `-- ranker.js
| |-- security/
| | |-- permissions.js
| | `-- sql-validator.js
| |-- tools/
| | |-- core.js
| | `-- intelligence.js
| |-- utils/
| | |-- formatting.js
| | `-- text.js
| `-- index.js
`-- test/
|-- sample-values.test.js
`-- security.test.jsDesenvolvimento
Executar o servidor:
npm startRodar os testes:
npm testThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WendellOttoni/mcp-sqlserver'
If you have feedback or need assistance with the MCP directory API, please join our Discord server