Skip to main content
Glama
SteveZhuhaobo

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

  1. .env.example 文件复制为 .env

    cp .env.example .env
  2. 使用您的 SQL Server 凭据编辑 .env 文件:

    # Edit .env with your settings
    nano .env
  3. 启动容器:

    docker-compose up -d

配置

环境变量

必需变量

变量

描述

示例

SQLSERVER_SERVER

SQL Server 主机名或 IP

myserver.database.windows.net

身份验证变量(选择一种方法)

方法 1:SQL Server 身份验证

变量

描述

示例

SQLSERVER_USERNAME

SQL Server 用户名

sa

SQLSERVER_PASSWORD

SQL Server 密码

MyPassword123!

方法 2:Windows 身份验证

变量

描述

示例

SQLSERVER_USE_WINDOWS_AUTH

使用 Windows 身份验证

true

可选连接变量

变量

描述

默认值

示例

SQLSERVER_DATABASE

默认数据库

master

MyDatabase

SQLSERVER_DRIVER

ODBC 驱动名称

ODBC Driver 17 for SQL Server

ODBC Driver 18 for SQL Server

SQLSERVER_ENCRYPT

加密连接

yes

no

SQLSERVER_TRUST_CERTIFICATE

信任服务器证书

yes

no

身份验证方法

SQL Server 身份验证

使用用户名和密码的最常用身份验证方法:

docker run -e SQLSERVER_SERVER=myserver \
           -e SQLSERVER_DATABASE=mydatabase \
           -e SQLSERVER_USERNAME=myuser \
           -e SQLSERVER_PASSWORD=mypassword \
           sqlserver-mcp:latest

Windows 身份验证

适用于加入域的环境(需要额外的容器配置):

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.txt

Kubernetes 部署

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-unauthenticated

Azure 容器实例

# 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'

解决方案

  1. 验证用户名和密码

  2. 检查用户是否存在并具有必要的权限

  3. 确保已启用 SQL Server 身份验证

  4. 对于 Azure SQL 数据库,请使用完整用户名格式:user@servername

未找到驱动程序

Error: Data source name not found and no default driver specified

解决方案

  1. 验证是否安装了 ODBC 驱动程序(应包含在容器中)

  2. 检查 SQLSERVER_DRIVER 环境变量中的驱动程序名称

  3. 列出可用驱动程序:

    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

解决方案

  1. 设置 SQLSERVER_TRUST_CERTIFICATE=yes

  2. 或者禁用加密:SQLSERVER_ENCRYPT=no

  3. 对于生产环境,请使用正确的 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

健康检查失败

如果健康检查失败:

  1. 检查容器日志:

    docker logs sqlserver-mcp-server
  2. 手动测试连接:

    docker exec -it sqlserver-mcp-server python -c "
    import server
    import asyncio
    result = asyncio.run(server.test_connection())
    print(result)
    "
  3. 验证环境变量:

    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

安全注意事项

密钥管理

  1. 切勿在 Dockerfile 或 compose 文件中硬编码凭据

  2. 使用 Docker secrets 或外部密钥管理系统

  3. 使用环境变量进行配置

  4. 定期轮换凭据

网络安全

  1. 使用专用网络进行容器通信

  2. 限制容器权限(以非 root 用户身份运行)

  3. 为 SQL Server 连接启用 TLS(默认已启用)

  4. 使用防火墙规则限制访问

容器安全

  1. 定期更新:保持基础镜像和依赖项更新

  2. 漏洞扫描:扫描镜像以查找安全漏洞

  3. 资源限制:设置适当的 CPU 和内存限制

  4. 只读文件系统:尽可能将应用程序目录挂载为只读

开发

本地开发

  1. 克隆存储库

  2. 构建容器:

    ./build.sh --test
  3. 使用您的配置运行:

    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')"

支持

如有问题和疑问:

  1. 查看故障排除部分

  2. 查看容器日志以获取错误消息

  3. 验证您的 SQL Server 连接设置

  4. 确保设置了所有必需的环境变量

许可证

本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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 opera
    830
    37
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server for Microsoft SQL Server databases, providing secure database operations through a standardized interface.
    3,043
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server for SQL Server database operations, enabling CRUD operations, schema exploration, and stored procedure execution through natural language.
    8
    MIT

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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