Sqlserver Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Sqlserver Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Desenvolvido em Python por Moises Gomes
🌐 Site oficial: moigomes.github.io/sqlserver-mcp-site
Servidor MCP (Model Context Protocol) em Python para consultar Microsoft SQL Server via pyodbc, expondo ferramentas para exploração de banco de dados, execução de consultas seguras e análise de estrutura.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew update
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew install --no-sandbox msodbcsql18 mssql-tools18
brew install unixodbc⚠️ Aceite a licença da Microsoft quando solicitado.
git clone <url-do-repositorio>
cd sqlserver-mcp
# Crie o ambiente virtual
python3 -m venv .venv
source .venv/bin/activate
# Instale as dependências
pip install -r requirements.txt
# Configure as variáveis de ambiente
cp .env.example .env
# Edite o arquivo .env com suas credenciais 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
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
sudo apt-get install -y unixodbc-dev echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc git clone <url-do-repositorio>
cd sqlserver-mcp
# Crie o ambiente virtual
python3 -m venv .venv
source .venv/bin/activate
# Instale as dependências
pip install -r requirements.txt
# Configure as variáveis de ambiente
cp .env.example .env
nano .env # ou use seu editor preferido git clone <url-do-repositorio>
cd sqlserver-mcp
# Crie o ambiente virtual
python -m venv .venv
.venv\Scripts\activate
# Instale as dependências
pip install -r requirements.txt
# Configure as variáveis de ambiente
copy .env.example .env
notepad .envA forma mais fácil de rodar o servidor sem instalar dependências localmente.
docker build -t sqlserver-mcp . cp .env.example .env
# Edite o .env com suas configurações # Modo interativo (para testes)
docker run -it --env-file .env sqlserver-mcp
# Ou com docker-compose
docker-compose up -d # Ver logs
docker-compose logs -f
# Parar
docker-compose down
# Rebuild após alterações
docker-compose up -d --build.envCrie um arquivo .env na raiz do projeto com as seguintes variáveis:
# Conexão obrigatória
SQLSERVER_SERVER=seu_servidor
SQLSERVER_DATABASE=seu_banco
SQLSERVER_USERNAME=seu_usuario
SQLSERVER_PASSWORD=sua_senha
# Opcionais
SQLSERVER_PORT=1433
SQLSERVER_DRIVER=ODBC Driver 18 for SQL Server
SQLSERVER_ENCRYPT=yes
SQLSERVER_TRUST_SERVER_CERTIFICATE=no
SQLSERVER_TRUSTED_CONNECTION=no
# Logging (DEBUG, INFO, WARNING, ERROR)
SQLSERVER_LOG_LEVEL=INFO
# Connection Pool
SQLSERVER_POOL_SIZE=5
SQLSERVER_POOL_IDLE_TIME=300Para usar autenticação integrada do Windows:
SQLSERVER_SERVER=seu_servidor
SQLSERVER_DATABASE=seu_banco
SQLSERVER_TRUSTED_CONNECTION=yes# macOS/Linux
source .venv/bin/activate
python server.py
# Windows
.venv\Scripts\activate
python server.pyO servidor ficará aguardando conexões via STDIO. Use Ctrl+C para encerrar.
Execute o cliente de teste para validar a configuração:
python client_smoke.pyAbra as configurações do Cursor (Cmd+Shift+J ou Ctrl+Shift+J) e adicione em mcpServers:
{
"mcpServers": {
"sqlserver-mcp": {
"command": "/caminho/para/sqlserver-mcp/.venv/bin/python",
"args": ["/caminho/para/sqlserver-mcp/server.py"],
"cwd": "/caminho/para/sqlserver-mcp",
"env": {
"PYTHONPATH": ".",
"PYTHONUNBUFFERED": "1"
}
}
}
}{
"mcpServers": {
"sqlserver-mcp": {
"command": "C:\\caminho\\para\\sqlserver-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\caminho\\para\\sqlserver-mcp\\server.py"],
"cwd": "C:\\caminho\\para\\sqlserver-mcp",
"env": {
"PYTHONPATH": ".",
"PYTHONUNBUFFERED": "1"
}
}
}
}💡 Dica: As variáveis de ambiente podem ser definidas no arquivo .env (carregadas automaticamente) ou diretamente na configuração do Cursor.| Ferramenta | Descrição | Parâmetros |
|---|---|---|
test_connection() | Valida conexão e retorna versão do SQL Server | - |
pool_stats() | Retorna estatísticas do pool de conexões | - |
| Ferramenta | Descrição | Parâmetros |
|---|---|---|
list_schemas() | Lista schemas disponíveis | - |
list_tables(schema?) | Lista tabelas do banco | schema (opcional) |
list_views(schema?) | Lista views do banco | schema (opcional) |
list_procedures(schema?) | Lista stored procedures | schema (opcional) |
list_functions(schema?) | Lista funções do usuário | schema (opcional) |
| Ferramenta | Descrição | Parâmetros |
|---|---|---|
describe_table(table_name, schema?) | Descreve colunas de uma tabela | table_name, schema |
get_indexes(table_name, schema?) | Retorna índices da tabela | table_name, schema |
get_primary_key(table_name, schema?) | Retorna chave primária | table_name, schema |
get_foreign_keys(table_name, schema?) | Retorna chaves estrangeiras | table_name, schema |
get_table_relationships(table_name, schema?) | Retorna todos os relacionamentos | table_name, schema |
get_table_row_count(table_name, schema?) | Contagem aproximada de linhas | table_name, schema |
| Ferramenta | Descrição | Parâmetros |
|---|---|---|
run_query(sql, max_rows?) | Executa consulta SELECT/CTE | sql, max_rows (padrão: 1000) |
| 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 for SQL Server | Driver ODBC |
SQLSERVER_ENCRYPT | Não | yes | Criptografar conexão |
SQLSERVER_TRUST_SERVER_CERTIFICATE | Não | no | Confiar em certificado autoassinado |
SQLSERVER_TRUSTED_CONNECTION | Não | no | Usar autenticação Windows |
SQLSERVER_LOG_LEVEL | Não | INFO | Nível de log (DEBUG/INFO/WARNING/ERROR) |
SQLSERVER_POOL_SIZE | Não | 5 | Tamanho máximo do pool de conexões |
SQLSERVER_POOL_IDLE_TIME | Não | 300 | Tempo máximo de ociosidade (segundos) |
\*SQLSERVER_USERNAMEeSQLSERVER_PASSWORDsão obrigatórios seSQLSERVER_TRUSTED_CONNECTIONnão estiver comoyes.
O servidor implementa múltiplas camadas de segurança:
SELECT e WITH (CTEs) são permitidosINSERT, UPDATE, DELETE, DROP, CREATE, ALTER, TRUNCATEEXEC, EXECUTE, xp_*, sp_configureOPENROWSET, OPENDATASOURCE, BULKSELECT 1; DROP TABLE x)ROLLBACK automático| Código | Categoria | Descrição |
|---|---|---|
| E101 | Conexão | Falha na conexão |
| E102 | Conexão | Timeout |
| E201 | Configuração | Configuração ausente |
| E301 | Validação | Erro de validação de entrada |
| E303 | Segurança | Query bloqueada por segurança |
| E401 | Execução | Erro na query |
| E402 | Execução | Tabela não encontrada |
| E404 | Execução | Permissão negada |
SQLSERVER_DRIVER=ODBC Driver 18 for SQL ServerSQLSERVER_DRIVER=ODBC Driver 18 for SQL ServerSQLSERVER_DRIVER=ODBC Driver 18 for SQL ServerPara ambientes de desenvolvimento com certificado autoassinado:
SQLSERVER_TRUST_SERVER_CERTIFICATE=yes⚠️ Não use em produção!
SQLSERVER_PORT=1434Para logs detalhados:
SQLSERVER_LOG_LEVEL=DEBUGPara ajustar o pool conforme sua carga:
SQLSERVER_POOL_SIZE=10
SQLSERVER_POOL_IDLE_TIME=600Este servidor MCP pode ser usado em qualquer cliente compatível com o Model Context Protocol. A configuração é similar à do Cursor.
📖 Lista completa de clientes: https://glama.ai/mcp/clients 📖 Especificação MCP: https://modelcontextprotocol.io
Este projeto é não oficial e desenvolvido de forma independente.
Contribuições são bem-vindas! Abra uma issue ou pull request.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.