SQL Server Express MCP 服务器

项目简介

本项目实现了一个 Model Context Protocol (MCP) 服务器,旨在为大型语言模型 (LLM) 客户端提供安全可控的 Microsoft SQL Server Express 数据库访问能力。通过预定义的工具,LLM 可以查询数据库信息、执行 SQL 查询以及进行数据操作,所有操作均在授权和安全策略的约束下进行。

主要功能点

  • 安全数据库访问: 仅允许访问预先配置的数据库,防止 LLM 客户端访问未授权数据。
  • 多种身份验证方式: 支持 Windows 身份验证和 SQL Server 身份验证,灵活适应不同的数据库环境。
  • SELECT 查询: 允许 LLM 执行 'SELECT' 查询以检索数据库信息。
  • 数据写入操作: 支持 'INSERT', 'UPDATE', 'DELETE' 等写入操作,允许 LLM 修改数据库数据。
  • 表结构管理: 提供工具列出数据库中的表,并获取表的详细结构信息。
  • 工具化操作: 所有数据库操作都通过预定义的工具进行,方便 LLM 客户端调用和理解。

安装步骤

  1. 环境准备:

    • 确保已安装 Python 3.10 或更高版本。
    • 安装 Microsoft ODBC Driver 18 for SQL Server。
    • 确保可以访问 SQL Server Express 实例,并具有相应的数据库权限。
  2. 下载仓库:

    git clone https://github.com/hanweg/mcp-sqlexpress
    cd mcp-sqlexpress
  3. 创建并激活虚拟环境:

    uv venv
    .venv\Scripts\activate
  4. 安装依赖:

    uv pip install --editable .

服务器配置

要将此 MCP 服务器配置到 MCP 客户端(例如 Claude Desktop),您需要提供服务器的启动命令和参数。以下是一个 'claude_desktop_config.json' 示例配置,请根据您的实际环境进行调整:

{
    "mcpServers": {
        "sqlexpress": {
            "command": "uv",
            "args": [
                "--directory",
                "PATH\\TO\\PROJECT\\mcp-sqlexpress",  // 将 PATH\\TO\\PROJECT\\mcp-sqlexpress 替换为项目 mcp-sqlexpress 的实际路径
                "run",
                "mcp-server-sqlexpress",           // 运行 mcp-server-sqlexpress 脚本
                "--server",
                "server\\instance",                 // SQL Server 实例名称,例如 "localhost\SQLEXPRESS" 或服务器地址
                "--auth",
                "windows",                         // 身份验证类型,可选 "windows" 或 "sql"
                "--trusted-connection",
                "yes",                             // 是否使用 Windows 可信连接,当 auth 为 windows 时通常设置为 yes
                "--trust-server-certificate",
                "yes",                             // 是否信任服务器证书,根据 SQL Server 配置决定
                "--allowed-databases",
                "database1,database2"              // 允许访问的数据库列表,用逗号分隔
            ]
        }
    }
}

参数说明:

  • 'command': 启动服务器的命令,这里使用 'uv run' 来运行 Python 脚本。
  • 'args': 传递给 'mcp-server-sqlexpress' 脚本的参数列表。
    • '--directory': 指定项目 'mcp-sqlexpress' 的路径。请务必替换为您的实际路径。
    • 'run mcp-server-sqlexpress': 运行 'mcp-server-sqlexpress' 入口脚本。
    • '--server': SQL Server 实例名称或地址。
    • '--auth': 身份验证类型,'windows' 为 Windows 身份验证,'sql' 为 SQL Server 身份验证。
    • '--trusted-connection': 是否使用 Windows 可信连接,通常与 '--auth windows' 配合使用。
    • '--trust-server-certificate': 是否信任服务器证书。
    • '--allowed-databases': 允许 LLM 访问的数据库名称列表,用逗号分隔。请根据您的需求配置允许访问的数据库。

SQL Server 身份验证 (当 '--auth' 设置为 'sql' 时):

如果使用 SQL Server 身份验证,您需要添加 '--username' 和 '--password' 参数:

{
    "mcpServers": {
        "sqlexpress": {
            "command": "uv",
            "args": [
                "--directory",
                "PATH\\TO\\PROJECT\\mcp-sqlexpress",
                "run",
                "mcp-server-sqlexpress",
                "--server",
                "server\\instance",
                "--auth",
                "sql",                             // 身份验证类型设置为 sql
                "--username",
                "your_username",                   // SQL Server 用户名,替换为您的用户名
                "--password",
                "your_password",                   // SQL Server 密码,替换为您的密码
                "--trust-server-certificate",
                "yes",
                "--allowed-databases",
                "database1,database2"
            ]
        }
    }
}

请将 'your_username' 和 'your_password' 替换为您的 SQL Server 账号和密码。

基本使用方法

  1. 确保 MCP 服务器已成功配置并启动。
  2. 在 MCP 客户端(例如 Claude Desktop)中,配置并连接到名为 'sqlexpress' 的 MCP 服务器。
  3. LLM 客户端将可以通过以下工具与 SQL Server Express 数据库进行交互:
    • 'get_allowed_databases': 获取允许访问的数据库列表。
    • 'read_query': 执行 'SELECT' 查询。
    • 'write_query': 执行 'INSERT', 'UPDATE', 'DELETE' 查询。
    • 'create_table': 创建新表。
    • 'list_tables': 列出数据库中的表。
    • 'describe_table': 获取表的结构信息。

LLM 可以根据这些工具的描述和输入参数,构建 JSON-RPC 请求来调用 MCP 服务器的功能,从而实现对 SQL Server Express 数据库的安全访问和操作。

信息

分类

数据库与文件