使用说明
DB分析器MCP服务器
模型上下文协议(MCP)服务器,为Claude等AI助手提供全面的SQL server数据库分析和查询功能。
特性
此MCP服务器提供了10个强大的数据库分析和管理工具:
连接与测试
ping_db-测试数据库连接并检索服务器信息
查询执行
execute_query-执行具有可选行限制的SELECT查询execute_non_query-执行DDL/DML语句(CREATE、UPDATE、DELETE等)execute_stored_procedure-使用类型化参数调用存储过程
架构发现
list_databases-列出所有具有可选名称筛选的数据库list_schemas-列出特定数据库中的架构list_tables-列出具有可选架构/名称筛选的表get_table_columns-获取详细的列信息,包括类型、约束和主键get_indexes-检索特定表的索引信息
健康状况分析
analyze_schema_health-全面的数据库健康检查包括:- 没有聚集索引的表(堆)
- 表缺少主键
- 使用已弃用的数据类型(text、ntext、image、sql_variant)
- 宽表(可配置列阈值)
- 基于使用统计的未使用索引
- SQL Server DMV缺少索引建议
- 碎片化索引(碎片化>30%,>1000页)
安装
先决条件
- Node.js(建议使用v18或更高版本)
- 访问SQL Server实例
- npm或yarn包管理器
设置
-
克隆存储库:
git clone https://dev.azure.com/goplanet-west/West%20AI/_git/mcp-db-analyzer cd mcp-db-analyzer -
安装依赖项:
npm install -
构建项目:
npm run build
配置
环境变量
服务器支持以下数据库连接环境变量:
| 变量 | 描述 | 默认值 |
|---|---|---|
DB_HOST |
SQL Server主机名 | <database-hostname> |
DB_USER |
数据库用户名 | <database-user> |
DB_PASSWORD |
数据库密码 | <database-password> |
DB_DATABASE |
默认数据库(可选) | 无 |
DB_PORT |
SQL Server端口 | 1433 |
DB_ENCRYPT |
启用连接加密 | true |
DB_TRUST_SERVER_CERT |
信任服务器证书 | true |
DB_POOL_MAX |
最大连接池大小 | 10 |
MCP客户端配置
克劳德桌面版
将以下内容添加到您的Claude Desktop配置文件中:
窗户: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"db-analyzer": {
"command": "node",
"args": ["C:\\MCP-Servers\\db-analyzer\\build\\index.js"],
"env": {
"DB_HOST": "your-server.database.windows.net",
"DB_USER": "your-username",
"DB_PASSWORD": "your-password",
"DB_PORT": "1433",
"DB_ENCRYPT": "true",
"DB_TRUST_SERVER_CERT": "false"
}
}
}
}
Cline(VS代码扩展)
添加到您的Cline MCP设置中:
{
"mcpServers": {
"db-analyzer": {
"command": "node",
"args": ["C:\\MCP-Servers\\db-analyzer\\build\\index.js"],
"env": {
"DB_HOST": "your-server.database.windows.net",
"DB_USER": "your-username",
"DB_PASSWORD": "your-password"
}
}
}
}
Visual Studio代码(GitHub副本)
VS Code通过GitHub Copilot原生支持MCP服务器 代理模式 (VS代码1.99+)。
选项1--工作区配置 (已检查到源代码管理,适用于打开此项目的每个人):
创建或编辑 .vscode/mcp.json 在项目根目录中:
{
"servers": {
"db-analyzer": {
"command": "node",
"args": ["C:\\MCP-Servers\\db-analyzer\\build\\index.js"],
"env": {
"DB_HOST": "your-server.database.windows.net",
"DB_USER": "your-username",
"DB_PASSWORD": "your-password",
"DB_PORT": "1433",
"DB_ENCRYPT": "true",
"DB_TRUST_SERVER_CERT": "false"
}
}
}
}
选项2——用户设置 (适用于您的所有VS Code项目):
打开您的用户 settings.json (Ctrl/Cmd+移动+P → 首选项:打开用户设置(JSON))并添加:
{
"mcp": {
"servers": {
"db-analyzer": {
"command": "node",
"args": ["C:\\MCP-Servers\\db-analyzer\\build\\index.js"],
"env": {
"DB_HOST": "your-server.database.windows.net",
"DB_USER": "your-username",
"DB_PASSWORD": "your-password",
"DB_PORT": "1433",
"DB_ENCRYPT": "true",
"DB_TRUST_SERVER_CERT": "false"
}
}
}
}
}
激活服务器:
- 打开副驾驶聊天面板(Ctrl/Cmd+Alt+一、)
- 切换到 代理模式 使用聊天输入底部的模式选择器
- 点击 工具 按钮(⚙) 验证
db-analyzer出现在工具列表中 - 开始聊天——Copilot将根据需要自动调用MCP工具
注: 如果服务器未出现,请运行 MCP:列出服务器 从命令面板刷新,并检查输出面板是否有错误。
其他MCP客户端
对于其他兼容MCP的客户端(游标、继续等),请参阅其文档以添加自定义MCP服务器。一般模式是:
- 命令:
node(或Node.js的完整路径) - 论据: 路径
build/index.js - 环境: 数据库连接变量
使用示例
连接到MCP客户端后,您可以使用自然语言与数据库交互:
示例提示
连接测试:
"Test the database connection and show me the server version"
架构发现:
"Show me all databases on this server"
"List all tables in the dbo schema"
"What are the columns in the Users table?"
数据查询:
"Get the first 10 rows from the Orders table"
"Show me all customers from California"
健康分析:
"Analyze the database for potential issues"
"Find all tables without primary keys"
"Show me any fragmented indexes"
发展
项目结构
db-analyzer/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript (generated)
├── node_modules/ # Dependencies (generated)
├── package.json # Project metadata and dependencies
├── tsconfig.json # TypeScript configuration
├── .gitignore # Git ignore rules
└── README.md # This file
脚本
npm run build-将TypeScript编译为JavaScriptnpm start-运行已编译的服务器
进行更改
- 编辑
src/index.ts - 跑
npm run build编译 - 重新启动MCP客户端以加载更改
安全考虑
⚠️ 重要安全注意事项:
- 资格证书: 切勿将数据库凭据提交到版本控制。使用环境变量或安全凭据存储。
- 连接加密: 对于生产数据库,设置
DB_ENCRYPT=true和DB_TRUST_SERVER_CERT=false. - 权限: 使用具有最低所需权限的数据库帐户。如果不需要写操作,请考虑只读访问。
- 网络安全: 确保您的SQL Server未暴露于公共互联网。尽可能使用VPN或专用网络。
- SQL注入: 服务器尽可能使用参数化查询,但在自定义查询中使用动态SQL时要谨慎。
连接池管理
服务器为每个数据库维护连接池以优化性能。池在首次使用时自动创建,并在服务器关闭时清理。连接参数:
- 最大连接数:10(可通过配置
DB_POOL_MAX) - 空闲超时:30秒
- 连接丢失时自动重新连接
故障排除
常见问题
连接被拒绝:
- 验证SQL Server是否正在运行且可访问
- 检查防火墙规则是否允许端口1433上的连接
- 如果使用用户名/密码,请确保启用SQL Server身份验证
登录失败:
- 验证凭据是否正确
- 检查用户是否具有适当的数据库权限
- 对于Windows身份验证,请使用适当的连接字符串格式
证书错误:
- 对于自签名证书,设置
DB_TRUST_SERVER_CERT=true - 对于生产,获取适当的SSL证书
MCP服务器未出现:
- 验证路径
build/index.js是正确的 - 检查Node.js是否已安装并可访问
- 查看MCP客户端日志中的错误消息
许可证
[在此处指定您的许可证]
贡献
[在此处指定捐款指南]
支持
对于问题和疑问:
- 在Azure DevOps存储库中创建问题
- 联系您的开发团队