SQL自然语言交互服务

一个通过自然语言实现与Microsoft SQL Server数据库交互的模型上下文协议(MCP)服务器,支持查询、增删改查、表管理等操作。

  • by EvilPhatBoi
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 EvilPhatBoi/McpSqlServer

使用说明

MSSQL MCP服务器

一种模型上下文协议(MCP)服务器,使Claude等LLM能够通过自然语言与Microsoft SQL server数据库进行交互。

特性

  • 🔍 使用自然语言查询SQL Server数据库
  • 📊 读取、插入、更新和删除数据
  • 🏗️ 创建和管理表和索引
  • 🔒 使用可选只读模式进行安全连接处理
  • ⚡ 使用tsx直接执行TypeScript-无需构建步骤

快速开始

选项1:直接从GitHub使用npx(推荐)

无需安装!只需配置Claude Desktop:

视窗

增添 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "mssql": {
      "type": "stdio",
      "command": "cmd",
      "args": ["/c", "npx", "-y", "github:EvilPhatBoi/McpSqlServer"],
      "env": {
        "SERVER_NAME": "your-server.database.windows.net",
        "DATABASE_NAME": "your-database",
        "SQL_USERNAME": "your-username",
        "SQL_PASSWORD": "your-password",
        "PORT": "1433",
        "ENCRYPT": "true",
        "TRUST_SERVER_CERTIFICATE": "false",
        "CONNECTION_TIMEOUT": "30",
        "READONLY": "false"
      }
    }
  }
}

macOS/Linux

增添 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mssql": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:EvilPhatBoi/McpSqlServer"],
      "env": {
        "SERVER_NAME": "your-server.database.windows.net",
        "DATABASE_NAME": "your-database",
        "SQL_USERNAME": "your-username",
        "SQL_PASSWORD": "your-password",
        "PORT": "1433",
        "ENCRYPT": "true",
        "TRUST_SERVER_CERTIFICATE": "false",
        "CONNECTION_TIMEOUT": "30",
        "READONLY": "false",
        "DEBUG": "false"
      }
    }
  }
}

关于旧式SQL Server的注意事项: 如果您在使用较旧的SQL Server版本时遇到SSL/TLS连接问题,请尝试:

  • "ENCRYPT": "false" 禁用TLS/SSL加密
  • "TRUST_SERVER_CERTIFICATE": "true" 信任自签名证书
  • "CONNECTION_TIMEOUT": "60" 对于较慢的连接,则为更高
  • "DEBUG": "true" 查看详细的连接日志

选项2:克隆并在本地运行

  1. 克隆存储库:
git clone https://github.com/EvilPhatBoi/McpSqlServer.git
cd McpSqlServer
  1. 安装依赖项:
npm install
  1. 创建 .env 文件:
cp .env.example .env
# Edit .env with your database credentials
  1. 配置Claude Desktop以指向您的本地安装:
{
  "mcpServers": {
    "mssql": {
      "type": "stdio",
      "command": "npx",
      "args": ["tsx", "C:/path/to/McpSqlServer/src/index.ts"],
      "env": {
        "SERVER_NAME": "your-server.database.windows.net",
        "DATABASE_NAME": "your-database",
        "SQL_USERNAME": "your-username",
        "SQL_PASSWORD": "your-password"
      }
    }
  }
}

环境变量

变量 描述 默认值
SERVER_NAME SQL Server主机名 必填
DATABASE_NAME 数据库名称 必填
SQL_USERNAME SQL用户名 必填
SQL_PASSWORD SQL密码 必填
PORT SQL Server端口 1433
ENCRYPT 启用TLS/SSL加密 true
TRUST_SERVER_CERTIFICATE 信任自签名证书 false
CONNECTION_TIMEOUT 连接超时(秒) 30
READONLY 启用只读模式 false
DEBUG 启用调试日志记录 false

使用示例

配置后,您可以使用Claude中的自然语言与数据库交互:

  • “向我展示来自纽约的所有客户”
  • 创建一个名为products的表,其中包含id、名称和价格列
  • “将id为5的产品的价格更新为29.99”
  • “列出数据库中的所有表”
  • “描述订单表的结构”

发展

使用tsx在本地运行:

npm run start  # Run the server
npm run dev    # Run with watch mode

类型检查:

npm run typecheck

安全说明

  • 永不承诺 .env 具有真实凭据的文件
  • 使用只读模式(READONLY=true)安全生产
  • 服务器需要WHERE子句进行更新,以防止意外的大规模更新
  • 考虑使用特定于环境的凭据

故障排除

连接问题

  • 确保您的SQL Server允许远程连接
  • 检查SQL Server端口的防火墙规则(默认1433,或您的自定义port设置)
  • 验证凭据和服务器名称
  • 通过设置启用调试日志记录 DEBUG=true 在环境变量中

SSL/TLS连接问题

  • 对于不支持现代TLS的旧SQL Server版本,请设置 ENCRYPT=false
  • 如果使用自签名证书,请设置 TRUST_SERVER_CERTIFICATE=true
  • 对于连接超时问题,请增加 CONNECTION_TIMEOUT 60或以上
  • 检查SQL Server是否接受Node.js支持的TLS版本

调试模式

要启用详细的日志记录以进行故障排除,请执行以下操作:

"env": {
  "DEBUG": "true",
  // ... other environment variables
}

身份验证错误

  • 此服务器使用SQL身份验证,而不是Windows身份验证
  • 确保服务器上启用了SQL身份验证
  • 检查SQL用户是否具有适当的权限

许可证

麻省理工学院