MS SQL Server MCP Server
用于 MS SQL 集成的 MCP 服务器 - 为 Microsoft SQL Server 提供 ModelContextProtocol 支持
TerraCo89
README
MS SQL Server MCP 服务器
本项目提供了一个 MCP 服务器,用于通过使用模型上下文协议 (MCP) 的 AI 助手与 MS SQL Server 数据库进行交互。
它使用安全的配置文件管理系统,利用系统原生的凭据存储(通过 keyring
库)来避免通过 MCP 发送密码。
前提条件
对于直接 Python 执行:
- Python 3.10+
- Pip (Python 包安装程序)
- 安装在运行服务器的机器上的 SQL Server ODBC 驱动程序。
keyring
库依赖项可能需要系统软件包(例如,Linux 上的dbus-launch
、gnome-keyring
或kwallet
,有关详细信息,请参阅keyring
文档)。
对于 Docker 执行:
- 已安装并运行的 Docker。
- Dockerfile 配置为使用
keyrings.cryptfile
后端,以便在容器的文件系统中安全地存储密码。 这需要挂载卷以实现持久性。
安装
选项 1:直接 Python 执行
- 克隆存储库(如果适用):
git clone <repository_url> cd mcp-server-mssql
- 创建并激活 Python 虚拟环境:
python -m venv venv # 激活 (Windows PowerShell): .\venv\Scripts\Activate.ps1 # 激活 (macOS/Linux): source venv/bin/activate
- 安装依赖项:
pip install -r requirements.txt
选项 2:Docker 执行
- 克隆存储库(如果适用)。
- 构建 Docker 镜像:
(注意:Dockerfile 包括 ODBC 驱动程序安装并配置docker build -t mcp-mssql-server .
keyrings.cryptfile
后端。)
配置:配置文件管理
此服务器使用连接配置文件来安全地管理数据库凭据。
- 配置文件 (
profiles.json
): 在服务器的目录中本地存储非敏感详细信息(驱动程序、服务器、数据库、用户名)。 如果此文件不存在,则会自动创建。 确保将此文件添加到您的.gitignore
中。 - 系统密钥环: 密码使用
keyring
库,以服务名称mcp-mssql-server
安全地存储在您的操作系统凭据管理器(如 Windows 凭据管理器、macOS Keychain)中。 - 添加配置文件: 使用
add_connection_profile
工具。 首次添加配置文件时,系统将提示您在服务器运行的终端中安全地输入密码。 此密码永远不会通过 MCP 发送。 - 管理配置文件: 使用
list_connection_profiles
和remove_connection_profile
工具。
用法
选项 1:直接 Python 执行 (Stdio)
- 激活虚拟环境。
- 在 MCP 客户端设置中配置(例如,
mcp_settings.json
):
相应地调整路径。{ "mcpServers": { // ... 其他服务器 ... "mssql": { "command": "python", // 或 venv python 的完整路径 "args": ["D:/path/to/your/mcp-server-mssql/server.py"], "cwd": "D:/path/to/your/mcp-server-mssql", "alwaysAllow": [ "add_connection_profile", "list_connection_profiles", "remove_connection_profile", "read_table_rows", "create_table_records", "update_table_records", "delete_table_records", "get_table_schema", "list_tables" ] } // ... 其他服务器 ... } }
- 重新启动您的 MCP 客户端/IDE 扩展。 使用
add_connection_profile
工具添加配置文件(需要控制台交互才能输入密码)。
选项 2:Docker 执行 (Stdio)
- 确保已构建 Docker 镜像
mcp-mssql-server
。 - 在 MCP 客户端设置中配置:
{ "mcpServers": { // ... 其他服务器 ... "mssql-docker": { "command": "docker", "args": [ "run", "-i", "--rm", "--env-file", "./mcp-server-mssql/.env_docker", // 示例:在此处存储 KEYRING_CRYPTFILE_PASSWORD "-v", "mssql_keyring_data:/keyring_data", // 挂载卷以存储密钥环数据 "mcp-mssql-server" ], "alwaysAllow": [ "add_connection_profile", // 注意:密码提示将出现在容器日志中 "list_connection_profiles", "remove_connection_profile", "read_table_rows", "create_table_records", "update_table_records", "delete_table_records", "get_table_schema", "list_tables" ] } // ... 其他服务器 ... } }
- 重新启动您的 MCP 客户端/IDE 扩展。
- 重要:
- Dockerfile 配置为使用
keyrings.cryptfile
后端。 您必须提供一个强密码,用于在运行容器时通过KEYRING_CRYPTFILE_PASSWORD
环境变量加密密钥环文件。 强烈建议使用.env
文件(如args
中的示例.env_docker
)或 Docker secrets,而不是直接在命令行上传递密码。 - 必须将 Docker 卷(例如,示例中的
mssql_keyring_data
)挂载到容器内的/keyring_data
,以便在容器重启后持久保存加密的密钥环文件 (keyring_pass.cfg
) 和profiles.json
文件。 add_connection_profile
密码提示仍将出现在容器的日志/终端中。
- Dockerfile 配置为使用
可用工具
配置文件管理:
add_connection_profile(profile_name: str, driver: str, server: str, database: str, username: str)
list_connection_profiles()
remove_connection_profile(profile_name: str)
数据库操作(需要 profile_name
):
read_table_rows(profile_name: str, table_name: str, ...)
create_table_records(profile_name: str, table_name: str, records: List[Dict])
update_table_records(profile_name: str, table_name: str, updates: Dict, filters: Dict)
delete_table_records(profile_name: str, table_name: str, filters: Dict)
get_table_schema(profile_name: str, table_name: str)
list_tables(profile_name: str, schema: Optional[str] = None)
有关详细的参数说明,请参阅 server.py
中的文档字符串。
示例工具用法(概念性)
- 添加配置文件(需要在服务器上进行控制台交互):
“使用
mssql
服务器,调用add_connection_profile
,名称为SalesDB_UK
,驱动程序为{ODBC Driver 17 for SQL Server}
,服务器为myserver.example.com
,数据库为SalesDB
,用户名为report_user
。”(然后在服务器控制台中输入密码)。 - 使用配置文件:
“使用
mssql
服务器,使用配置文件SalesDB_UK
调用read_table_rows
,用于表Customers
。 筛选条件为Country
为 'UK'。”
AI 助手将构建第二个调用,如下所示:
// 概念性 MCP 工具调用
{
"tool_name": "read_table_rows",
"arguments": {
"profile_name": "SalesDB_UK",
"table_name": "Customers",
"filters": {
"Country": "UK"
}
}
}
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。