数据库分析服务

一款为AI助手如Claude提供全面的SQL Server数据库分析和查询功能的MCP服务器。

  • by FusionGuy
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 FusionGuy/mcp-db-analyzer

使用说明

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包管理器

设置

  1. 克隆存储库:

    git clone https://dev.azure.com/goplanet-west/West%20AI/_git/mcp-db-analyzer
    cd mcp-db-analyzer
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    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"
        }
      }
    }
  }
}

激活服务器:

  1. 打开副驾驶聊天面板(Ctrl/Cmd+Alt+一、)
  2. 切换到 代理模式 使用聊天输入底部的模式选择器
  3. 点击 工具 按钮(⚙) 验证 db-analyzer 出现在工具列表中
  4. 开始聊天——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编译为JavaScript
  • npm start -运行已编译的服务器

进行更改

  1. 编辑 src/index.ts
  2. 跑 npm run build 编译
  3. 重新启动MCP客户端以加载更改

安全考虑

⚠️ 重要安全注意事项:

  1. 资格证书: 切勿将数据库凭据提交到版本控制。使用环境变量或安全凭据存储。
  2. 连接加密: 对于生产数据库,设置 DB_ENCRYPT=true 和 DB_TRUST_SERVER_CERT=false.
  3. 权限: 使用具有最低所需权限的数据库帐户。如果不需要写操作,请考虑只读访问。
  4. 网络安全: 确保您的SQL Server未暴露于公共互联网。尽可能使用VPN或专用网络。
  5. 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存储库中创建问题
  • 联系您的开发团队