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主机名 | `` |
DB_USER | 数据库用户名 | `` |
DB_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"
}
}
}
}其他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存储库中创建问题
- 联系您的开发团队
