一个易于使用的桥梁,使像Claude这样的AI助手可以直接查询和探索Microsoft SQL Server数据库。无需编程经验!
这个工具允许AI助手进行以下操作:
# 克隆此仓库
git clone https://github.com/dperussina/mssql-mcp-server.git
# 导航到项目目录
cd mssql-mcp-server
# 安装依赖项
npm install
# 复制示例环境文件
cp .env.example .env
编辑.env文件,填写你的数据库凭据:
DB_USER=your_username
DB_PASSWORD=your_password
DB_SERVER=your_server_name_or_ip
DB_DATABASE=your_database_name
PORT=3333
HOST=0.0.0.0 # 服务器监听的主机,例如'localhost'或'0.0.0.0'
TRANSPORT=stdio
SERVER_URL=http://localhost:3333
DEBUG=false # 设置为'true'以启用详细日志记录(有助于故障排除)
QUERY_RESULTS_PATH=/path/to/query_results # 查询结果保存为JSON文件的目录
# 使用默认的stdio传输启动
npm start
# 或者使用HTTP/SSE传输以支持网络访问
npm run start:sse
# 运行交互式客户端
npm run client
无需编写SQL即可探索数据库结构
mcp_SQL_mcp_discover_database()
获取特定表的详细信息
mcp_SQL_mcp_table_details({ tableName: "Customers" })
运行安全查询
mcp_SQL_mcp_execute_query({ sql: "SELECT TOP 10 * FROM Customers", returnResults: true })
按名称模式查找表
mcp_SQL_mcp_discover_tables({ namePattern: "%user%" })
使用分页浏览大型结果集
// 第一页
mcp_SQL_mcp_execute_query({
sql: "SELECT * FROM Users ORDER BY Username OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY",
returnResults: true
})
// 下一页
m
cp_SQL_mcp_execute_query({
sql: "SELECT * FROM Users ORDER BY Username OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY",
returnResults: true
})
基于游标的分页以优化性能
// 第一页
mcp_SQL_mcp_execute_query({
sql: "SELECT TOP 10 * FROM Users ORDER BY Username",
returnResults: true
})
// 使用最后一个值作为游标获取下一页
mcp_SQL_mcp_execute_query({
sql: "SELECT TOP 10 * FROM Users WHERE Username > 'last_username' ORDER BY Username",
returnResults: true
})
用自然语言提问
"展示过去一个月订单最多的前五大客户"
捆绑的客户端提供了一个简单的菜单驱动界面:
当通过此MCP服务器与Claude或其他AI助手合作时,你如何表述请求对结果有重大影响。这里是如何帮助AI有效地使用数据库工具:
当提示AI使用此工具时,请遵循以下结构:
你可以使用SQL MCP工具来[你的目标]吗?
例如:
- 检查我的数据库中有哪些表
- 查询Customers表并显示前10条记录
- 找出上个月的所有订单
以下是主要工具及其正确的语法:
// 发现数据库结构
mcp_SQL_mcp_discover_database()
// 获取特定表的详细信息
mcp_SQL_mcp_table_details({ tableName: "YourTableName" })
// 执行查询并返回结果
mcp_SQL_mcp_execute_query({
sql: "SELECT * FROM YourTable WHERE Condition",
returnResults: true
})
// 按名称模式查找表
mcp_SQL_mcp_discover_tables({ namePattern: "%pattern%" })
// 访问保存的查询结果(用于大型结果集)
mcp_SQL_mcp_get_query_results({ uuid: "提供的UUID" })
何时使用每个工具:
对于复杂任务,引导AI通过一系列步骤:
我想分析我们的销售数据。请:
1. 首先使用mcp_SQL_mcp_discover_tables查找与销售相关的表
2. 使用mcp_SQL_mcp_table_details检查相关表的结构
3. 创建一个查询,显示每月按产品类别划分的销售额
首先,发现我的数据库中有哪些表。然后,查看Customers表的结构。最后,显示总购买金额最高的前十大客户。
查询销售额低于预期的前五大产品,基于销售额与预测值,并解释你编写此查询的方法。
提醒AI注意SQL Server的具体语法:
请使用SQL Server语法进行分页:
- 对于偏移量/获取: "OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY"
- 对于基于游标的: "WHERE ID > last_id ORDER BY ID"
如果AI使用了错误的语法,你可以这样帮助它:
这不太对。请使用以下格式调用工具:
mcp_SQL_mcp_execute_query({
sql: "SELECT * FROM Customers WHERE Region = 'West'",
returnResults: true
})
如果AI在处理数据库任务时遇到困难,尝试以下方法:
MCP服务器提供了强大的工具来探索你的数据库结构:
基于模式的表发现:查找匹配特定模式的表
mcp_SQL_mcp_discover_tables({ namePattern: "%order%" })
架构概览:获取按架构分类的表的高层次视图
mcp_SQL_mcp_execute_query({
sql: "SELECT TABLE_SCHEMA, COUNT(*) AS TableCount FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_SCHEMA"
})
列探索:检查任意表的列元数据
mcp_SQL_mcp_table_details({ tableName: "dbo.Users" })
服务器支持多种分页方法来处理大型数据集:
偏移量/获取分页:标准SQL分页使用OFFSET和FETCH
mcp_SQL_mcp_execute_query({
sql: "SELECT * FROM Users ORDER BY Username OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY"
})
基于游标的分页:对于大型数据集更高效
// 获取第一页
mcp_SQL_mcp_execute_query({
sql: "SELECT TOP 10 * FROM Users ORDER BY Username"
})
// 使用最后一个值作为游标获取下一页
mcp_SQL_mcp_execute_query({
sql: "SELECT TOP 10 * FROM Users WHERE Username > 'last_username' ORDER BY Username"
})
计数与数据:同时检索总数和分页数据
mcp_SQL_mcp_execute_query({
sql: "WITH TotalCount AS (SELECT COUNT(*) AS Total FROM Users) SELECT TOP 10 u.*, t.Total FROM Users u CROSS JOIN TotalCount t ORDER BY Username"
})
通过联接操作探索表之间的关系:
mcp_SQL_mcp_execute_query({
sql: "SELECT u.Username, u.Email, r.RoleName FROM Users u JOIN UserRoles ur ON u.Username = ur.Username JOIN Roles r ON ur.RoleId = r.RoleId ORDER BY u.Username"
})
运行聚合和分析查询以获得见解:
mcp_SQL_mcp_execute_query({
sql: "SELECT UserType, COUNT(*) AS UserCount, SUM(CASE WHEN IsActive = 1 THEN 1 ELSE 0 END) AS ActiveUsers FROM Users GROUP BY UserType"
})
MCP服务器支持SQL Server特定的功能:
通过几个简单步骤直接将此工具连接到Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"mssql": {
"command": "node",
"args": [
"/FULL/PATH/TO/mssql-mcp-server/server.mjs"
]
}
}
}
/FULL/PATH/TO/替换为你克隆此仓库的实际路径Cursor是一个由AI驱动的代码编辑器,可以利用此工具进行高级数据库交互。这里是设置方法:
npm run start:sse
一旦连接,你可以在Cursor的AI聊天中直接使用MCP命令:
要求Claude在Cursor中探索你的数据库:
你能展示我数据库中的表吗?
执行特定查询:
查询Customers表的前10条记录
生成并运行复杂查询:
找出上个月价值超过$1000的所有订单
适合:直接与Claude Desktop或捆绑客户端使用
npm start
适合:网络访问或与Web应用程序一起使用
npm run start:sse
npm install以确保所有依赖项已安装如果你是SQL Server的新手,这里有一些关键概念:
这个工具帮助你在不需要成为SQL专家的情况下探索所有这些内容!
MS SQL MCP Server采用模块化架构,分离关注点以提高可维护性和可扩展性:
database.mjs - 数据库连接tools.mjs - 工具注册resources.mjs - 数据库资源pagination.mjs - 结果导航errors.mjs - 错误处理logger.mjs - 日志系统