使用说明
🗄️ MCP服务器:SQL Server(非官方)
Python开发者:Moises Gomes
Python中的MCP(模型上下文协议)服务器通过查询Microsoft SQL Server pyodbc展示用于数据库挖掘,执行安全查询和结构分析的工具。
📋 索引
📦 先决条件
- Python 3.10+
- 驱动程序ODBC做SQL Server instalado
- 访问 SQL Server
🚀 安装
macOS
-
Instale o自制 (如果还没有):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
安装 ODBC 驱动程序和工具:
brew update brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release brew install --no-sandbox msodbcsql18 mssql-tools18 brew install unixodbc⚠️ 请求时接受 Microsoft 许可证。
-
克隆仓库并配置:
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
Linux(Ubuntu/Debian)
-
添加 Microsoft 仓库:
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 -
安装 ODBC 驱动程序:
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 -
将工具添加到 PATH 中 (可选):
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
视窗
-
下载并安装 ODBC 驱动程序:
- Acesse:https://learn.microsoft.com/pt-br/sql/connect/odbc/download-odbc-driver-for-sql-server
- 下载“ODBC Driver 18 for SQL Server”
- 运行安装程序并按照说明操作
-
安装 Python (如果还没有):
- 下载到 :https://www.python.org/downloads/
- 在安装过程中,选择“Add Python to PATH”
-
克隆仓库并配置:
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 .env
🐳 码头工人
运行服务器而不在本地安装依赖关系的最简单方法。
-
构建图像:
docker build -t sqlserver-mcp . -
创建文件
.env您的凭据:cp .env.example .env # Edite o .env com suas configurações -
执行o容器:
# 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
⚙️ 配置
档案 .env
创建文件 .env 在项目根中,使用以下变量:
# 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=300
可信连接(Trusted Connection)
若要使用 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.py
服务器正在等待 STDIO 连接 。使用 Ctrl+C 锁起来。
连接测试
运行测试客户端以验证配置:
python client_smoke.py
🔌 Cursor 集成
打开光标设置 (Cmd+Shift+J 哦 Ctrl+Shift+J)并添加到 mcpServers:
macOS/Linux
{
"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"
}
}
}
}
💡 智利环境变量可以在文件中定义
.env(自动加载)或直接在光标设置中。
🛠️ 可用工具
连接和诊断
| 工具 | 描述 | 参数 |
|---|---|---|
test_connection() |
有效连接并返回 SQL Server 版本 | - |
pool_stats() |
返回连接池统计 | - |
Schema 探索
| 工具 | 描述 | 参数 |
|---|---|---|
list_schemas() |
可用方案列表 | - |
list_tables(schema?) 银行表格列表。 schema (可选) |
||
list_views(schema?) |
Lista views do banco | schema (可选) |
list_procedures(schema?) |
Lista存储过程 | schema (可选) |
list_functions(schema?) 用户功能列表。 schema (可选) |
表格分析
| 工具 | 描述 | 参数 |
|---|---|---|
describe_table(table_name, schema?) 描述一个表格的列。 table_name, schema |
||
get_indexes(table_name, schema?) 返回表中的索引。 table_name, schema |
||
get_primary_key(table_name, schema?) 返回主键。 table_name, schema |
||
get_foreign_keys(table_name, schema?) 返回外国钥匙 table_name, schema |
||
get_table_relationships(table_name, schema?) 返回所有关系。 table_name, schema |
||
get_table_row_count(table_name, schema?) 大致的行数。 table_name, schema |
执行查询
| 工具 | 描述 | 参数 |
|---|---|---|
run_query(sql, max_rows?) |
咨询执行人选择/CTE | sql, max_rows (标准:1000) |
🔐 环境变量
| 变量 | 标准 | 描述 |
|----------|-------------|--------|-----------|
| SQLSERVER_SERVER |✅ 是 | - | 服务器地址 |
| SQLSERVER_DATABASE | 没有 | - | 数据库名称 |
| SQLSERVER_USERNAME | 条件* | - | 用户身份验证 |
| SQLSERVER_PASSWORD | 条件* | - | 验证密码 |
| SQLSERVER_PORT | 没有 | 1433 | 服务器端口 |
| SQLSERVER_DRIVER | 没有 | ODBC Driver 18 for SQL Server | ODBC Driver |
| SQLSERVER_ENCRYPT | 否 | 是 | 加密连接 |
| SQLSERVER_TRUST_SERVER_CERTIFICATE | 否 | 否 | 信任自签名证书 |
| SQLSERVER_TRUSTED_CONNECTION | 否 | 否 | 使用 Windows 身份验证 |
| SQLSERVER_LOG_LEVEL | 否 | 信息 | 日志级别 (DEBUG/INFO/WARNING/ERROR) |
| SQLSERVER_POOL_SIZE | 否 | 5 | 连接池的最大大小 |
| SQLSERVER_POOL_IDLE_TIME 300 最大空闲时间(秒)
*
SQLSERVER_USERNAMEeSQLSERVER_PASSWORD是强制性的,如果SQLSERVER_TRUSTED_CONNECTION不像yes.
🔒 安全
服务器实现了多个安全层:
1. 查询验证
- ✅ 只
SELECTeWITH(CTE)是允许的 - ❌ 锁定 :
INSERT,UPDATE,DELETE,DROP,CREATE,ALTER,TRUNCATE - ❌ 锁定 :
EXEC,EXECUTE,xp_*,sp_configure - ❌ 锁定 :
OPENROWSET,OPENDATASOURCE,BULK
2. SQL注入保护
- ❌ 多个语句被阻止(例如:
SELECT 1; DROP TABLE x) - ✅ 内部使用参数化查询
3. 只读交易
- 所有查询都在交易中执行
ROLLBACK自动的 - 即使有些东西通过验证,也不会有任何东西持续下去。
错误代码
| 代码 | 类别 | 描述 |
|---|---|---|
| E101 | 连接 | 连接失败 |
| E102 | 连接 | 超时 |
| E201 | 配置 | 缺少配置 |
| E301 | 验证 | 输入验证错误 |
| E303 | 安全性 | 查询被安全性阻止 |
| E401 | 执行 | 查询错误 |
| E402 | 执行 | 表未找到 |
| E404 | 执行 | 权限被拒绝 |
💡 智利
驱动程序ODBC
- macOS:使用
SQLSERVER_DRIVER=ODBC Driver 18 for SQL Server - Linux:使用
SQLSERVER_DRIVER=ODBC Driver 18 for SQL Server - 视窗:使用
SQLSERVER_DRIVER=ODBC Driver 18 for SQL Server
自我认证
对于具有自签名证书的开发环境:
SQLSERVER_TRUST_SERVER_CERTIFICATE=yes
⚠️ 不要在生产中使用。
非标准端口
SQLSERVER_PORT=1434
调试
对于详细日志 :
SQLSERVER_LOG_LEVEL=DEBUG
连接池
要根据您的负载调整池:
SQLSERVER_POOL_SIZE=10
SQLSERVER_POOL_IDLE_TIME=600
🔌 其他兼容客户
此 MCP 服务器可用于任何与 MCP 兼容的客户端。 模型上下文协议设置与光标相似 。
IDE 和编辑器
- 克劳德桌面 (macOS,Windows) - Anthropic官方应用程序
- VS代码+GitHub副本 MCP预览支持
- 泽德 (macOS、Linux)-编辑器moderno
- 帆板运动 专注于AI的IDE
- 继续 VS Code 的开源扩展
移动电子桌面
- 5ire -辅助IA桌面
- 所有 -跨平台聊天客户端
- 杰诺娃AI -移动+桌面
- 系统提示MCP (iOS) - 语音控制
云企业
- 亚马逊Q开发者 -CLI da AWS
- 微软哨兵 MCP的安全性
📖 完整的客户名单:https://glama.ai/mcp/clients
📖 MCP规格:https://modelcontextprotocol.io
📄 许可证
这个项目是非官方的,是独立开发的。
🤝 贡献
欢迎捐款!打开一个 issue 或 pull request。
