SQL Server查询工具

一个提供SQL Server数据库查询功能的纯JavaScript实现工具,支持加密和非加密连接,通过环境变量配置。

  • by adamdude828
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 adamdude828/mcp-sql-server

使用说明

MCP SQL Server

提供SQL server数据库查询功能的模型上下文协议(MCP)服务器。

特性

  • 使用繁琐的驱动程序支持SQL Server数据库
  • 无原生依赖-纯JavaScript实现
  • 用于执行SQL语句的简单查询工具
  • 基于环境变量的配置
  • 支持加密和未加密连接

安装

npm install
npm run build

配置

使用环境变量配置服务器:

  • DB_HOST:SQL Server主机(默认值: localhost)
  • DB_PORT:SQL Server端口(默认值: 1433)
  • DB_DATABASE (必填):数据库名称
  • DB_USER (必填):数据库用户
  • DB_PASSWORD:数据库密码
  • DB_TRUST_SERVER_CERTIFICATE:设置为 true 信任服务器证书(默认值: false)
  • DB_ENCRYPT:设置为 false 禁用加密(默认值: true)

用法

基础示例

DB_HOST=localhost \
DB_PORT=1433 \
DB_DATABASE=mydb \
DB_USER=sa \
DB_PASSWORD=MyPassword123! \
npm start

使用受信任的证书

DB_HOST=sqlserver.example.com \
DB_DATABASE=production \
DB_USER=appuser \
DB_PASSWORD=SecurePass \
DB_TRUST_SERVER_CERTIFICATE=true \
npm start

无加密(用于本地开发)

DB_HOST=localhost \
DB_DATABASE=testdb \
DB_USER=sa \
DB_PASSWORD=DevPassword \
DB_ENCRYPT=false \
npm start

MCP集成

此服务器提供一个工具:

  • query:对连接的SQL Server数据库执行SQL查询
    • 参数:
      • sql (string):要执行的SQL查询
    • 返回:JSON格式的查询结果

查询示例

-- Select data
SELECT TOP 10 * FROM Users

-- Join tables
SELECT o.OrderID, c.CustomerName, o.OrderDate
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID

-- Aggregate data
SELECT COUNT(*) as TotalOrders, SUM(Amount) as TotalRevenue
FROM Orders
WHERE OrderDate >= '2024-01-01'

发展

# Install dependencies
npm install

# Run in development mode
DB_HOST=localhost \
DB_DATABASE=testdb \
DB_USER=sa \
DB_PASSWORD=TestPass123! \
npm run dev

# Build for production
npm run build

故障排除

连接问题

  1. 登录失败:确保启用了SQL Server身份验证并且凭据正确
  2. 证书错误:设置 DB_TRUST_SERVER_CERTIFICATE=true 用于自签名证书
  3. 加密错误:设置 DB_ENCRYPT=false 适用于较旧的SQL Server版本或本地开发
  4. 网络错误:检查防火墙设置,并确保SQL Server正在侦听正确的端口

SQL Server配置

确保您的SQL Server实例:

  • 是否启用了SQL Server身份验证(不仅仅是Windows身份验证)
  • 配置为接受TCP/IP连接
  • 是否配置了必要的防火墙规则

许可证

麻省理工学院