MCP SQL Server服务器
一种模型上下文协议(MCP)服务器,提供与SQL server数据库交互的工具。此服务器允许Cursor和其他MCP客户端智能地查询、分析和管理SQL server数据。
特性
- 执行SQL查询:安全运行SELECT查询以检索数据
- 列表表格:查找数据库中的所有表
- 获取表架构:检查表结构、列和数据类型
- 获取表统计信息:查看行数和列信息
- 插入数据:向表中添加新记录
- 更新数据:修改现有记录
先决条件
- Node.js v22.14.0或更高版本
- Docker 28.3.3或更高版本
- 在Docker中运行的SQL Server(或访问现有的SQL Server实例)
分步设置指南
步骤1:安装依赖项
npm install这将安装所有必需的软件包,包括:
@modelcontextprotocol/sdk-用于构建服务器的MCP SDKmssql-Node.js的SQL Server驱动程序typescript-TypeScript编译器tsx-TypeScript执行环境
步骤2:使用Docker启动SQL Server
该项目包括 docker-compose.yml 该文件将自动执行以下操作:
- 启动SQL Server 2022
- 创建
SampleDB数据库 - 创建示例表(客户、产品、订单、订单项)
- 插入示例数据
启动SQL Server容器:
docker-compose up -d验证容器是否正在运行:
docker ps您应该看到一个名为的容器 mcp-sqlserver 跑步。
等待初始化: 数据库初始化脚本会自动运行。您可以查看日志:
docker logs mcp-sqlserver注: 默认密码为 YourStrong@Passw0rd。如果需要更改,请更新两者 docker-compose.yml 和 .env 文件夹。
步骤3:配置环境变量
复制示例环境文件:
copy .env.example .env编辑 .env 并确保连接细节与您的Docker设置相匹配:
SQL_SERVER_HOST=localhost
SQL_SERVER_PORT=1433
SQL_SERVER_DATABASE=SampleDB
SQL_SERVER_USER=sa
SQL_SERVER_PASSWORD=YourStrong@Passw0rd
SQL_SERVER_ENCRYPT=false步骤4:构建MCP服务器
编译TypeScript代码:
npm run build这将创建 dist/ 目录中包含已编译的JavaScript。
步骤5:测试MCP服务器
您可以手动测试服务器以确保其正常工作:
npm start服务器将启动并监听stdio(标准输入/输出)。按Ctrl+C停止。
步骤6:配置游标IDE
要在Cursor中使用此MCP服务器,您需要将其添加到Cursor的MCP配置中。
选项A:使用光标设置UI
- 打开光标IDE
- 首选 设置 (Ctrl+,)
- 搜索“MCP”或“模型上下文协议”
- 点击“MCP服务器”或“添加MCP服务器”
- 使用以下设置添加新服务器:
- 名字: sqlserver - 命令: node - 参数: ["dist/index.js"] - 工作目录: C:\OrgProjects\SkillUps\ModelContextProtocol (或您的实际项目路径) - 环境变量: - SQL_SERVER_HOST=localhost - SQL_SERVER_PORT=1433 - SQL_SERVER_DATABASE=SampleDB - SQL_SERVER_USER=sa - SQL_SERVER_PASSWORD=YourStrong@Passw0rd - SQL_SERVER_ENCRYPT=false
选项B:使用配置文件(Windows)
- 导航到Cursor的配置目录:
%APPDATA%\Cursor\User\globalStorage\saoudrizwan.claude-dev\settings\- 编辑或创建
cline_mcp_settings.json并添加:
{
"mcpServers": {
"sqlserver": {
"command": "node",
"args": ["C:\\\\OrgProjects\\\\SkillUps\\\\ModelContextProtocol\\\\dist\\\\index.js"],
"env": {
"SQL_SERVER_HOST": "localhost",
"SQL_SERVER_PORT": "1433",
"SQL_SERVER_DATABASE": "SampleDB",
"SQL_SERVER_USER": "sa",
"SQL_SERVER_PASSWORD": "YourStrong@Passw0rd",
"SQL_SERVER_ENCRYPT": "false"
}
}
}
}重要提示: 替换 C:\\OrgProjects\\SkillUps\\ModelContextProtocol 根据您的实际项目路径。
- 重新启动Cursor IDE以使更改生效。
步骤7:在游标中验证MCP服务器
- 重新启动游标 添加配置后
- 在Cursor中打开聊天
- 试着问以下问题:
- “列出数据库中的所有表” - “显示Customers表的架构” - “获取Products表的统计信息” - “运行查询以显示所有客户” - “向我展示来自纽约的客户”
人工智能现在应该能够使用MCP工具与您的SQL Server数据库进行交互!
可用的MCP工具
1. execute_query
执行SELECT查询以检索数据。
例子:
{
"query": "SELECT TOP 10 * FROM Customers"
}2. list_tables
列出数据库中的所有表。
例子:
{}3. get_table_schema
获取特定表的架构。
例子:
{
"tableName": "Customers"
}4. get_table_stats
获取表的统计信息(行数、列数)。
例子:
{
"tableName": "Products"
}5. execute_insert
将新记录插入表中。
例子:
{
"tableName": "Customers",
"data": {
"FirstName": "John",
"LastName": "Doe",
"Email": "john.doe@example.com",
"City": "Seattle"
}
}6. execute_update
更新表中的现有记录。
例子:
{
"tableName": "Customers",
"data": {
"City": "Portland"
},
"where": {
"CustomerID": 1
}
}示例数据库架构
初始化脚本创建了一个示例电子商务数据库,其中包含:
- 客户:客户信息
- 产品:产品目录
- 订单:客户订单
- 订单项目:订单行项目
发展
以开发模式运行
npm run dev这使用 tsx watch 在文件更改时自动重新编译。
项目结构
.
├── src/
│ └── index.ts # Main MCP server implementation
├── dist/ # Compiled JavaScript (generated)
├── init-db/ # SQL initialization scripts
│ └── 01-init-sample-db.sql
├── docker-compose.yml # Docker setup for SQL Server
├── package.json # Node.js dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # This file故障排除
SQL Server连接问题
- 检查SQL Server是否正在运行:
docker ps- 检查SQL Server日志:
docker logs mcp-sqlserver- 验证连接详细信息 在
.env匹配您的Docker设置
- 手动测试连接:
docker exec -it mcp-sqlserver /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P YourStrong@Passw0rd -Q "SELECT @@VERSION"MCP服务器未出现在光标中
- 验证路径 配置是正确和绝对的
- 检查构建是否成功:
npm run build - 确保服务器启动时没有错误:
npm start - 重新启动游标 配置更改后
- 检查Cursor的开发人员控制台 MCP相关错误
权限问题
- 确保SQL Server凭据正确
- 验证数据库是否存在并且可以访问
- 检查SA密码是否与两者匹配
docker-compose.yml和.env
安全说明
- 永不承诺
.env文件 到版本控制 - 这
execute_query出于安全考虑,该工具仅允许SELECT查询 - 在生产环境中使用强密码
- 考虑使用特定于环境的配置
后续步骤
- 在Cursor中使用自然语言查询探索示例数据
- 尝试提出需要加入的复杂问题
- 根据需要添加更多表或修改架构
- 根据您的用例,使用其他工具扩展MCP服务器
许可证
麻省理工学院
