关于 SQL Server
SQL Server 是供 AI Agent 和其他 MCP 客户端查询及管理 SQL Server 数据库的 MCP 服务。默认提供只读工具;写入工具取决于连接权限,且每次执行都需确认。
主要功能
- 01只读查询和数据库检查
- 02浏览表、视图、存储过程及函数
- 03查看索引、约束和统计信息
- 04根据数据库权限开放写入工具
- 05写操作需确认
- 06支持 stdio 和 Streamable HTTP 模式
适用场景
- 01检查数据库结构和元数据
- 02执行不涉及写入的 SELECT 查询
- 03确认后执行获准的更新或 DDL
MCP 相关
它通过 stdio 或 Streamable HTTP 向 MCP 客户端提供 SQL Server 查询和管理工具。只有连接具有写入权限时,才会开放写入工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-sqlserver
用于 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 提供的相应驱动程序
- macOS:
安装
通过 PyPI 安装:
pip install sqlserver-mcp-tools
或者,无需安装任何内容(直接从 PyPI 运行,并使用缓存):
uvx --from sqlserver-mcp-tools mcp-sqlserver
配置
服务按以下优先级顺序从相应来源读取连接字符串:
- 环境变量
MSSQL_CONNECTION_STRING - 指向
.env文件的环境变量MSSQL_ENV_FILE - 工作目录(或项目根目录)中的
.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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。