SQL Server MCP Server
SQL Server MCP 服务器
一个用于 SQL Server 操作的容器化模型上下文协议 (MCP) 服务器。此 Docker 容器提供了一个完整的 MCP 服务器,可以通过 MCP 协议连接到 SQL Server 并执行各种数据库操作。
功能特性
完整的 SQL Server 集成:执行查询、管理表并执行数据库操作
环境变量配置:通过环境变量轻松配置
身份验证支持:支持 SQL Server 和 Windows 身份验证
连接管理:内置连接处理和重试逻辑
健康检查:容器健康监控与验证
多平台支持:支持 AMD64 和 ARM64 架构
ODBC 驱动支持:包含用于 SQL Server 的 Microsoft ODBC Driver 17
Related MCP server: mcp-sqlserver
快速入门
使用 Docker Run
# Basic usage with SQL Server authentication
docker run -e SQLSERVER_SERVER=myserver.database.windows.net \
-e SQLSERVER_DATABASE=mydatabase \
-e SQLSERVER_USERNAME=myuser \
-e SQLSERVER_PASSWORD=mypassword \
sqlserver-mcp:latest使用 Docker Compose
将
.env.example文件复制为.env:cp .env.example .env使用您的 SQL Server 凭据编辑
.env文件:# Edit .env with your settings nano .env启动容器:
docker-compose up -d
配置
环境变量
必需变量
变量 | 描述 | 示例 |
| SQL Server 主机名或 IP |
|
身份验证变量(选择一种方法)
方法 1:SQL Server 身份验证
变量 | 描述 | 示例 |
| SQL Server 用户名 |
|
| SQL Server 密码 |
|
方法 2:Windows 身份验证
变量 | 描述 | 示例 |
| 使用 Windows 身份验证 |
|
可选连接变量
变量 | 描述 | 默认值 | 示例 |
| 默认数据库 |
|
|
| ODBC 驱动名称 |
|
|
| 加密连接 |
|
|
| 信任服务器证书 |
|
|
身份验证方法
SQL Server 身份验证
使用用户名和密码的最常用身份验证方法:
docker run -e SQLSERVER_SERVER=myserver \
-e SQLSERVER_DATABASE=mydatabase \
-e SQLSERVER_USERNAME=myuser \
-e SQLSERVER_PASSWORD=mypassword \
sqlserver-mcp:latestWindows 身份验证
适用于加入域的环境(需要额外的容器配置):
docker run -e SQLSERVER_SERVER=myserver \
-e SQLSERVER_DATABASE=mydatabase \
-e SQLSERVER_USE_WINDOWS_AUTH=true \
sqlserver-mcp:latest可用的 MCP 工具
该服务器提供以下 MCP 工具:
连接管理
test_connection- 测试 SQL Server 连接并返回基本数据库信息
数据库发现
list_tables- 列出 SQL Server 数据库中的所有表get_table_schema- 获取详细的表架构信息
表操作
create_table- 在 SQL Server 中创建新表insert_data- 向 SQL Server 表中插入数据
查询执行
execute_query- 执行带有完整结果集的 SQL 查询
构建容器
构建脚本
使用提供的构建脚本进行简易构建:
# Build with default settings
./build.sh
# Build with specific tag
./build.sh v1.0.0
# Build with registry prefix
REGISTRY=ghcr.io/myorg ./build.sh v1.0.0
# Build and test
./build.sh --test
# Build without cache
./build.sh --no-cache手动构建
# Build the image
docker build -t sqlserver-mcp:latest .
# Build for multiple platforms
docker buildx build --platform linux/amd64,linux/arm64 -t sqlserver-mcp:latest .部署示例
使用 Secrets 的 Docker Compose
version: '3.8'
services:
sqlserver-mcp:
image: sqlserver-mcp:latest
environment:
- SQLSERVER_SERVER=myserver.database.windows.net
- SQLSERVER_DATABASE=mydatabase
- SQLSERVER_USERNAME=myuser
secrets:
- sqlserver_password
environment:
- SQLSERVER_PASSWORD_FILE=/run/secrets/sqlserver_password
secrets:
sqlserver_password:
file: ./secrets/sqlserver_password.txtKubernetes 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: sqlserver-mcp
spec:
replicas: 1
selector:
matchLabels:
app: sqlserver-mcp
template:
metadata:
labels:
app: sqlserver-mcp
spec:
containers:
- name: sqlserver-mcp
image: sqlserver-mcp:latest
env:
- name: SQLSERVER_SERVER
value: "myserver.database.windows.net"
- name: SQLSERVER_DATABASE
value: "mydatabase"
- name: SQLSERVER_USERNAME
value: "myuser"
- name: SQLSERVER_PASSWORD
valueFrom:
secretKeyRef:
name: sqlserver-secret
key: password
resources:
limits:
memory: "512Mi"
cpu: "500m"
requests:
memory: "256Mi"
cpu: "250m"
livenessProbe:
exec:
command:
- python
- -c
- "import server; print('OK')"
initialDelaySeconds: 30
periodSeconds: 30
readinessProbe:
exec:
command:
- python
- -c
- "import server; print('OK')"
initialDelaySeconds: 5
periodSeconds: 10云容器服务
AWS ECS 任务定义
{
"family": "sqlserver-mcp",
"networkMode": "awsvpc",
"requiresCompatibilities": ["FARGATE"],
"cpu": "256",
"memory": "512",
"executionRoleArn": "arn:aws:iam::account:role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"name": "sqlserver-mcp",
"image": "sqlserver-mcp:latest",
"environment": [
{"name": "SQLSERVER_SERVER", "value": "myserver.database.windows.net"},
{"name": "SQLSERVER_DATABASE", "value": "mydatabase"},
{"name": "SQLSERVER_USERNAME", "value": "myuser"}
],
"secrets": [
{
"name": "SQLSERVER_PASSWORD",
"valueFrom": "arn:aws:secretsmanager:region:account:secret:sqlserver-password"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/sqlserver-mcp",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
}
}
]
}Google Cloud Run
# Deploy to Cloud Run
gcloud run deploy sqlserver-mcp \
--image=sqlserver-mcp:latest \
--set-env-vars="SQLSERVER_SERVER=myserver,SQLSERVER_DATABASE=mydatabase,SQLSERVER_USERNAME=myuser" \
--set-secrets="SQLSERVER_PASSWORD=sqlserver-password:latest" \
--platform=managed \
--region=us-central1 \
--allow-unauthenticatedAzure 容器实例
# Create container instance
az container create \
--resource-group myResourceGroup \
--name sqlserver-mcp \
--image sqlserver-mcp:latest \
--environment-variables \
SQLSERVER_SERVER=myserver.database.windows.net \
SQLSERVER_DATABASE=mydatabase \
SQLSERVER_USERNAME=myuser \
--secure-environment-variables \
SQLSERVER_PASSWORD=mypassword \
--cpu 0.5 \
--memory 1故障排除
常见问题
连接超时
Error: Connection timeout解决方案:检查网络连接和服务器可用性:
# Test network connectivity
docker run --rm sqlserver-mcp:latest ping myserver.database.windows.net身份验证失败
Error: Login failed for user 'myuser'解决方案:
验证用户名和密码
检查用户是否存在并具有必要的权限
确保已启用 SQL Server 身份验证
对于 Azure SQL 数据库,请使用完整用户名格式:
user@servername
未找到驱动程序
Error: Data source name not found and no default driver specified解决方案:
验证是否安装了 ODBC 驱动程序(应包含在容器中)
检查
SQLSERVER_DRIVER环境变量中的驱动程序名称列出可用驱动程序:
docker exec -it sqlserver-mcp-server odbcinst -q -d
SSL/TLS 问题
Error: SSL Provider: The certificate chain was issued by an authority that is not trusted解决方案:
设置
SQLSERVER_TRUST_CERTIFICATE=yes或者禁用加密:
SQLSERVER_ENCRYPT=no对于生产环境,请使用正确的 SSL 证书
容器无法启动
Error: SQLSERVER_SERVER environment variable is required解决方案:确保设置了所有必需的环境变量:
docker run -e SQLSERVER_SERVER=myserver \
-e SQLSERVER_USERNAME=myuser \
-e SQLSERVER_PASSWORD=mypassword \
sqlserver-mcp:latest健康检查失败
如果健康检查失败:
检查容器日志:
docker logs sqlserver-mcp-server手动测试连接:
docker exec -it sqlserver-mcp-server python -c " import server import asyncio result = asyncio.run(server.test_connection()) print(result) "验证环境变量:
docker exec -it sqlserver-mcp-server env | grep SQLSERVER
性能调优
针对大数据集的性能优化:
# Increase connection timeout
-e SQLSERVER_CONNECTION_TIMEOUT=60日志记录
启用详细日志记录:
# Add to docker-compose.yml or docker run
environment:
- PYTHONUNBUFFERED=1
- LOG_LEVEL=DEBUG查看日志:
# Docker Compose
docker-compose logs -f sqlserver-mcp
# Docker run
docker logs -f sqlserver-mcp-server安全注意事项
密钥管理
切勿在 Dockerfile 或 compose 文件中硬编码凭据
使用 Docker secrets 或外部密钥管理系统
使用环境变量进行配置
定期轮换凭据
网络安全
使用专用网络进行容器通信
限制容器权限(以非 root 用户身份运行)
为 SQL Server 连接启用 TLS(默认已启用)
使用防火墙规则限制访问
容器安全
定期更新:保持基础镜像和依赖项更新
漏洞扫描:扫描镜像以查找安全漏洞
资源限制:设置适当的 CPU 和内存限制
只读文件系统:尽可能将应用程序目录挂载为只读
开发
本地开发
克隆存储库
构建容器:
./build.sh --test使用您的配置运行:
cp .env.example .env # Edit .env with your settings docker-compose up
测试
运行测试套件:
# Build and test
./build.sh --test
# Manual testing
docker run --rm -e SQLSERVER_SERVER=test sqlserver-mcp:latest python -c "import server; print('Tests passed')"支持
如有问题和疑问:
查看故障排除部分
查看容器日志以获取错误消息
验证您的 SQL Server 连接设置
确保设置了所有必需的环境变量
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
This 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.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides comprehensive access to Microsoft SQL Server databases, enabling Language Models to inspect schemas, execute queries, manage database objects, and perform advanced database operations.8
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that enables AI agents to interact with Microsoft SQL Server databases through secure, intelligent database operations. This server provides comprehensive CRUD capabilities, schema introspection, stored procedure execution, transaction management, and bulk opera83037MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server for Microsoft SQL Server databases, providing secure database operations through a standardized interface.3,043MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for SQL Server database operations, enabling CRUD operations, schema exploration, and stored procedure execution through natural language.8MIT
Related MCP Connectors
MCP server for managing Prisma Postgres.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
MCP server for interacting with the Supabase platform
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/SteveZhuhaobo/sql-server-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server