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 客户端调用和理解。
安装步骤
-
环境准备:
- 确保已安装 Python 3.10 或更高版本。
- 安装 Microsoft ODBC Driver 18 for SQL Server。
- 确保可以访问 SQL Server Express 实例,并具有相应的数据库权限。
-
下载仓库:
git clone https://github.com/hanweg/mcp-sqlexpress cd mcp-sqlexpress -
创建并激活虚拟环境:
uv venv .venv\Scripts\activate -
安装依赖:
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 账号和密码。
基本使用方法
- 确保 MCP 服务器已成功配置并启动。
- 在 MCP 客户端(例如 Claude Desktop)中,配置并连接到名为 'sqlexpress' 的 MCP 服务器。
- 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 数据库的安全访问和操作。
信息
分类
数据库与文件