SQL只读查询服务器

一个提供只读访问Microsoft SQL Server数据库的服务器,通过STDIO或HTTP协议实现Model Context Protocol (MCP),支持JSON输出和多种查询工具。

  • by DominikWoh
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 DominikWoh/mssql_mcp_server

使用说明

MSSQL MCP服务器

一个最小的纯读服务器 模型上下文协议 (MCP) 通过 STDIO 或可选的 HTTP 提供。该项目提供了一小组工具,用于从Microsoft SQL Server数据库查询数据,而不允许写访问。

特性

  • 纯读访问 -只有 SELECT声明是允许的;DDL/DML/EXEC 被阻止。
  • 白名单和黑名单 – 表格或图表可以共享或封锁;可以禁用列和Regex模式。
  • 资源限制 行限制(ROW_LIMIT)和查询超时,以防止过大/昂贵的查询。
  • JSON 输出 – 结果是JSON序列化,二进制数据可以作为占位符,Base64或十六进制编码。
  • 工具 -你。 a. tables, columns, query, sample, paginate, stats, columns_with_examples 和 explain.

安装

git clone https://github.com/DominikWoh/mssql_mcp_server
cd mssql_mcp_server
./scripts/install.sh             # legt venv an und installiert Abhängigkeiten
cp .env.example .env             # Zugangsdaten & Limits anpassen
source .venv/bin/activate        # virtuelle Umgebung aktivieren
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt 2>/dev/null || true
pip install fastapi 'uvicorn[standard]'

配置

连接和安全规则通过环境变量在 .env 控制 :

变量 描述
MSSQL_SERVER 主机和港口,z。 B. 192.168.0.55,1433
MSSQL_DATABASE 目标数据库
MSSQL_USER / MSSQL_PASSWORD 访问数据
MSSQL_ENCRYPT / MSSQL_TRUST_SERVER_CERTIFICATE TLS 选项 pymssql
ALLOW_TABLES 逗号对齐的完整表名白名单
ALLOW_SCHEMAS 允许的方案(例如。 dbo)
DENY_COLUMNS 禁止的列名称(schema.table.col, *.col 或者只是 col)
DENY_PATTERNS 查询中锁定的 Regex 模式
ROW_LIMIT 每个结果的最大行数(默认值:500)
QUERY_TIMEOUT 超时秒数(默认值:10)
BINARY_MODE 二进制数据处理: placeholder, base64 或 hex
BINARY_MAX 在二进制数据中编码的最大字节。
LOG_LEVEL INFO 或 DEBUG

启动服务器

标准输入输出

printf '{"action":"ping"}\n' | mssql-mcp

进程读取JSON行 stdin 并给出答案 stdout 出来。

超文本传输协议

uvicorn mssql_mcp_server.http:app --host 0.0.0.0 --port 8000

请求作为 POST /mcp 使用与 STDIO 相同的形状的 JSON 主体。

支持的动作

操作 参数 描述
ping – 健康检查
tools – 提供所有工具的概述
tables – 共享表列表
columns table 表格的列元数据
columns_with_examples table, n (可选) 元数据加示例值
query sql 执行一个安全的 SELECT
sample table, n (可选) SELECT TOP n * FROM table
paginate sql, offset, fetch 查询页面
stats table, sample_n (可选) 行数 + 样本
explain sql 一个Query的启发式分析

系统集成

对于永久服务,可提供示例单元:

sudo cp scripts/mssql-mcp.service /etc/systemd/system/
sudo systemctl enable --now mssql-mcp

该服务将等待代码和虚拟环境在 /opt/mssql-mcp.

肺炎球菌

该项目利用 pymssql, 媒染剂 和 python dotenv米特 pip install -e . 安装所有依赖关系。