SQL Server数据库操作服务

一个用于Microsoft SQL Server数据库操作的模型上下文协议(MCP)服务器,支持SQL查询、存储过程执行、多种认证方式和灵活的配置选项。

  • by stilllovee
  • JavaScript
  • 混合部署
  • 更新于
在 GitHub 查看 stilllovee/mssql-mcp-server

使用说明

MSSQL MCP服务器

用于Microsoft SQL server数据库操作的模型上下文协议(MCP)服务器。

特性

  • 对SQL Server执行SQL查询
  • 执行存储过程
  • 获取数据库连接信息
  • 同时支持Windows身份验证和SQL Server身份验证
  • 通过环境变量灵活配置
  • 可流式HTTP传输 用于基于web的应用程序和远程连接
  • 支持多个同时进行的会话

用法

服务器支持两种传输模式:

1.标准运输(默认)

适用于Claude Desktop和其他基于stdio的MCP客户端。

添加到您的Claude Desktop配置中:

{
    "mcpServers": {
        "mssql": {
            "command": "npx",
            "args": [
                "github:stilllovee/mssql-mcp-server"
            ],
            "env": {
                "DB_SERVER": "servername",
                "DB_DATABASE": "dbname",
                "DB_USER": "username", //optional
                "DB_PASSWORD": "password",  //optional
                "DB_TRUST_SERVER_CERTIFICATE": "true",  //optional
                "DB_ENCRYPT": "true"  //optional
            }
        }
    }
}

或者安装在您自己的PC中

npm install
{
    "mcpServers": {
        "mssql": {
            "command": "node",
            "args": ["/path/to/folder"],
            "env": {
                "DB_SERVER": "servername",
                "DB_DATABASE": "dbname",
                "DB_USER": "username", //optional
                "DB_PASSWORD": "password",  //optional
                "DB_TRUST_SERVER_CERTIFICATE": "true",  //optional
                "DB_ENCRYPT": "true"  //optional
            }
        }
    }
}

或者使用连接字符串:

{
    "mcpServers": {
        "mssql": {
            "command": "node",
            "args": ["/path/to/folder"],
            "env": {
                "DB_CONNECTION_STRING": "Server=localhost;Database=ecommerce;Trusted_Connection=yes;TrustServerCertificate=yes"
            }
        }
    }
}

2.流式HTTP传输

对于web应用程序、远程连接和首选HTTP的环境。

启动HTTP服务器

使用数据库配置安装.env文件:

DB_SERVER=localhost
DB_DATABASE=ecommerce
DB_USE_WINDOWS_AUTH=true
# Or use a full connection string
# DB_CONNECTION_STRING=Server=localhost;Database=ecommerce;Trusted_Connection=yes;TrustServerCertificate=yes

运行服务器:

# Using default port 8123
node index-http.js

# Or specify a custom port
node index-http.js --port=3000

服务器将在以下时间可用 http://localhost:8123/mcp (或您的自定义港口)。

HTTP传输特性

  • 会话管理:支持具有唯一会话ID的多个并发客户端连接
  • 服务器发送事件(SSE):通过GET端点实时通知
  • 有状态的连接:跨请求维护会话状态
  • 标准HTTP:适用于任何HTTP客户端或代理
  • 基于API键的连接映射:将不同的API键映射到不同的数据库连接(请参见下文)

基于API键的多数据库支持

HTTP传输支持基于API键的连接映射,使用 Azure表存储,允许不同的客户端使用唯一的API密钥连接到不同的数据库。

启用API密钥映射:

# Set environment variables
USE_API_KEY_MAPPING=true
AZURE_STORAGE_CONNECTION_STRING=your_azure_connection_string

# Start the server
node index-http.js

在Claude Desktop中配置:

"mssql": {
    "type": "http",
    "url": "http://localhost:8123/mcp",
    "headers": {
        "x-api-key": "your-api-key"
    }
},

使用API密钥发出请求:

curl -X POST http://localhost:8123/mcp \
  -H "Content-Type: application/json" \
  -H "x-api-key: your-api-key" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",...}'

管理API密钥:

# List all API keys
node scripts/manage-api-keys.js list

# Add a new API key
node scripts/manage-api-keys.js add my-api-key

# Delete an API key
node scripts/manage-api-keys.js delete my-api-key

有关Azure表存储设置、API密钥管理和安全最佳实践的详细信息,请参阅 Azure表存储文档.

HTTP端点

  • POST /mcp -发送MCP请求并接收响应
  • GET /mcp -建立SSE连接以接收通知(需要 mcp-session-id 头球

可用环境变量

变量 描述 默认值
DB_CONNECTION_STRING 完整连接字符串(覆盖所有其他设置) -
DB_SERVER SQL Server主机名或IP localhost
DB_DATABASE 数据库名称 ecommerce
DB_USER SQL Server身份验证的用户名 -
DB_PASSWORD SQL Server身份验证密码 -
DB_USE_WINDOWS_AUTH 使用Windows身份验证 true (如果未设置用户/密码)
DB_DRIVER ODBC驱动程序名称 ODBC Driver 17 for SQL Server
DB_ENCRYPT 启用连接加密 false
DB_TRUST_SERVER_CERTIFICATE 信任服务器证书 true
USE_API_KEY_MAPPING 启用基于API键的连接映射 false
AZURE_STORAGE_CONNECTION_STRING Azure表存储连接字符串(API密钥映射所需) -
AZURE_TABLE_NAME API密钥映射的Azure表名称 ApiKeyMappings

可用工具

  1. sqlexecutequery -执行SQL查询

    • 参数: query (字符串), params (对象,可选)
  2. sqlexecute过程 -执行存储过程

    • 参数: procedure_name (字符串), params (对象,可选)
  3. sql_get-database_info -获取数据库连接信息

    • 无需参数
  4. 还有更多。..

需求

  • Node.js 14或更高版本
  • 安装了ODBC驱动程序的SQL Server
  • 对于Windows身份验证:在具有适当权限的Windows上运行