mcpField
S
SQL Server

SQL Server

本地服务
github.com/hlgurgel数据库03 周前更新

关于 SQL Server

SQL Server 是供 AI Agent 和其他 MCP 客户端查询及管理 SQL Server 数据库的 MCP 服务。默认提供只读工具;写入工具取决于连接权限,且每次执行都需确认。

主要功能

  1. 01只读查询和数据库检查
  2. 02浏览表、视图、存储过程及函数
  3. 03查看索引、约束和统计信息
  4. 04根据数据库权限开放写入工具
  5. 05写操作需确认
  6. 06支持 stdio 和 Streamable HTTP 模式

适用场景

  1. 01检查数据库结构和元数据
  2. 02执行不涉及写入的 SELECT 查询
  3. 03确认后执行获准的更新或 DDL

MCP 相关

它通过 stdio 或 Streamable HTTP 向 MCP 客户端提供 SQL Server 查询和管理工具。只有连接具有写入权限时,才会开放写入工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"hlgurgel-sqlserver": {
"command": "uvx",
"args": [
"sqlserver-mcp-tools"
],
"env": {
"MSSQL_CONNECTION_STRING": "<MSSQL_CONNECTION_STRING>"
}
}
}
}
启动命令uvx sqlserver-mcp-tools
需要配置的环境变量
MSSQL_CONNECTION_STRING密钥String de conexão ODBC para o SQL Server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisqlserver-mcp-tools0.1.8

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-sqlserver

PyPI version License: MIT Python versions

用于 SQL Server 的 MCP(Model Context Protocol)服务,支持权限控制, 并且默认采用只读模式。可让 AI Agent(Claude、opencode 及其他 MCP 客户端) 安全地查询和管理 SQL Server 数据库。

安全性

  • LLM 永远无法获取凭据——连接字符串从环境中读取, 不会出现在响应或日志中。
  • 默认只读——consulta 工具会阻止 DDL/DML (INSERT、UPDATE、DELETE、DROP 等)。
  • 按需写入——只有连接用户拥有写入权限时,才会开放写入工具 (executar_update、executar_ddl 等);写入权限包括 sysadmin、db_owner、db_datawriter 或 db_ddladmin 角色。每次执行前 都必须明确确认。

前置条件

  • Python 3.10+
  • ODBC Driver 18 for SQL Server 驱动程序:
    • macOS:brew install msodbcsql18
    • Windows/Linux:安装 Microsoft 提供的相应驱动程序

安装

通过 PyPI 安装:

pip install sqlserver-mcp-tools

或者,无需安装任何内容(直接从 PyPI 运行,并使用缓存):

uvx --from sqlserver-mcp-tools mcp-sqlserver

配置

服务按以下优先级顺序从相应来源读取连接字符串:

  1. 环境变量 MSSQL_CONNECTION_STRING
  2. 指向 .env 文件的环境变量 MSSQL_ENV_FILE
  3. 工作目录(或项目根目录)中的 .env 文件

连接字符串示例:

DRIVER={ODBC Driver 18 for SQL Server};SERVER=localhost,1433;DATABASE=seu_banco;UID=seu_usuario;PWD=sua_senha;TrustServerCertificate=yes

与 MCP 客户端搭配使用

Claude Desktop

将以下内容添加到 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"
      }
    }
  }
}

如果通过 pip install 安装,也可以直接使用 entry point:

{
  "mcpServers": {
    "mcp-sqlserver": {
      "command": "mcp-sqlserver",
      "env": {
        "MSSQL_CONNECTION_STRING": "DRIVER={ODBC Driver 18 for SQL Server};SERVER=...;DATABASE=...;UID=...;PWD=...;TrustServerCertificate=yes"
      }
    }
  }
}
OpenCode

在项目的 opencode.json 中:

{
  "mcp": {
    "sqlserver": {
      "type": "local",
      "command": ["mcp-sqlserver"],
      "environment": {
        "MSSQL_CONNECTION_STRING": "DRIVER={ODBC Driver 18 for SQL Server};SERVER=...;DATABASE=...;UID=...;PWD=...;TrustServerCertificate=yes"
      }
    }
  }
}

或者,指向本地 .env 文件,将密码留在 JSON 之外:

{
  "mcp": {
    "sqlserver": {
      "type": "local",
      "command": ["mcp-sqlserver"],
      "environment": {
        "MSSQL_ENV_FILE": "/caminho/para/seu/.env"
      }
    }
  }
}

HTTP 服务(Streamable HTTP)

除了本地模式(stdio),服务还可以通过 Streamable HTTP 作为 远程 MCP 服务 运行,并公开 /mcp 端点。使用 server extra 安装:

pip install 'sqlserver-mcp-tools[server]'

启动服务:

MSSQL_CONNECTION_STRING="DRIVER={ODBC Driver 18 for SQL Server};SERVER=...;DATABASE=...;UID=...;PWD=...;TrustServerCertificate=yes" \
  mcp-sqlserver-http

也可以通过 MCP_HOST(默认值为 0.0.0.0)和 MCP_PORT (默认值为 8090)调整主机和端口。MCP 端点为 http://<host>:<porta>/mcp。

在 opencode 中远程使用:

{
  "mcp": {
    "sqlserver": {
      "type": "remote",
      "url": "http://10.177.51.228:8090/mcp"
    }
  }
}

可用工具

只读(始终可用):

工具描述
consulta执行 SELECT(只读,阻止 DDL/DML)
listar_bancos列出可访问的数据库
listar_tabelas列出某个数据库中的表和视图
descrever_tabela查看表结构(列、类型、PK)
listar_indices列出表的索引
listar_procedures列出存储过程
ler_procedure查看存储过程的源代码
listar_funcoes列出函数(标量函数和表值函数)
ler_funcao查看函数的源代码
listar_constraints列出表的约束(PK、FK、UNIQUE、CHECK、DEFAULT)
estatisticas_tabela查看统计信息(行数、大小、数据使用情况)
plano_execucao查看估算执行计划(不执行)
status_jobs查看 SQL Agent 作业最近一次执行的状态

写入(仅当连接拥有写入权限时可用):

工具描述
executar_procedure执行存储过程
executar_update执行 UPDATE(必须包含 WHERE)
criar_indice创建索引
alterar_procedure修改存储过程并自动备份
executar_ddl执行 DDL,并备份回滚脚本

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。