SQL Server查询工具

MCP SQL Server集成是一个安全、只读的SQL Server查询工具,为Claude Desktop提供高级数据库查询和探索功能。

  • by LuisHRF
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 luishrf/mcp_sqlserver

使用说明

MCP SQL Server集成

项目概述

此模型上下文协议(MCP)为Claude Desktop提供了一个安全的只读SQL Server集成,实现了高级数据库查询和探索功能。MCP充当Claude的自然语言界面和SQL Server数据库之间的桥梁,允许智能、上下文感知的数据库交互。

特性

MCP为数据库交互提供了以下关键工具:

  • execute_query:对数据库运行只读SQL查询
  • list_tables:检索数据库中可用表的列表
  • describe_table:获取特定表的详细架构信息
  • get_connection_info:检索高级连接元数据

技术栈

  • 语言:Python 3.9+
  • 关键库:
    • MCP-SDK
    • pyodbc
    • 媒染剂
  • 数据库驱动:SQL Server的ODBC驱动程序18
  • 支持的SQL Server版本:SQL Server 2022

安装

先决条件

  1. Python 3.9或更高版本
  2. SQL Server的ODBC驱动程序18
  3. 推荐虚拟环境

设置步骤

  1. 克隆存储库:

    git clone <repository-url>
    cd mcp_mssql
    
  2. 创建虚拟环境:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装依赖项:

    pip install .
    

配置

环境变量

创建一个 .env 项目根目录中的文件具有以下配置:

MSSQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=your_server\instance;Database=your_database;UID=username;PWD=password;Encrypt=yes;TrustServerCertificate=yes;Application Intent=ReadOnly;"

Windows身份验证示例:

MSSQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=your_server\instance;Database=your_database;Trusted_Connection=yes;Encrypt=yes;TrustServerCertificate=yes;Application Intent=ReadOnly;"

连接字符串选项

  • 使用Windows身份验证(Trusted_Connection)
  • 如果需要,请指定特定凭据
  • 确保最小只读权限

Claude桌面集成

设置配置

  1. 创建或编辑您的Claude Desktop配置文件:

    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 添加MCP服务器配置:

    {
      "mcpServers": {
        "mcp-mssql": {
          "command": "python",
          "args": ["-m", "mcp_mssql.server"],
          "cwd": "/path/to/your/mcp_mssql",
          "env": {
            "PYTHONPATH": "/path/to/your/mcp_mssql/src",
            "MSSQL_CONNECTION_STRING": "your_connection_string_here"
          }
        }
      }
    }
    
  3. 重新启动克劳德桌面

  4. 开始使用自然语言进行查询

使用示例

查询表格

  • “列出数据库中的所有表”
  • “显示客户表的架构”
  • “从销售表中检索前10行”

支持的数据库模式

  • dbo:默认架构
  • fact:用于分析查询的事实表
  • err:错误和审核日志记录
  • meta:元数据和系统信息
  • dim:用于报告的尺寸数据

(这些是我特定案例中的一些示例,包含在server.py中的模式示例中,以防需要更改)

安全考虑

  • 只读访问:严格防止写入操作
  • 连接安全性:
    • 使用最小权限数据库帐户
    • 加密连接字符串
    • 无直接数据修改功能

局限性

  • 只读访问
  • 无法修改数据库架构
  • 不支持存储过程执行
  • 仅限于SELECT查询
  • 最大结果集大小可能受到限制

禁止

严禁操作:

  • INSERT、UPDATE、DELETE语句
  • 数据定义语言(DDL)命令
  • 执行存储过程
  • 访问系统或敏感表
  • 运行复杂或资源密集型查询

故障排除

常见问题

  1. 连接失败

    • 验证连接字符串
    • 检查网络连接
    • 确保已安装ODBC驱动程序
  2. 查询限制

    • 简化复杂的查询
    • 分解大型结果集请求
    • 避免跨数据库连接
  3. 权限问题

    • 确认只读访问
    • 验证数据库用户权限

日志记录

在配置中启用详细日志记录以进行详细诊断。

贡献

开发设置

  1. 分叉存储库
  2. 创建虚拟环境
  3. 安装开发依赖项:
    pip install -e .[dev]
    

运行测试

# Run validation tests
python validate_mcp_for_claude.py

代码的风格

  • 遵循PEP 8指南
  • 使用类型提示
  • 编写全面的文档字符串

版本

当前版本:0.1.0

支持

对于问题或功能请求,请在项目存储库中提交问题。