关于 Run Sql Connectorx
Run Sql Connectorx 是通过 ConnectorX 执行 SQL 并将结果写入 CSV 或 Parquet 文件的 MCP 服务。它适用于需要分块输出文件、避免大型内嵌结果的数据库查询流程。
主要功能
- 01通过 ConnectorX 执行 SQL
- 02以 RecordBatch 分块流式处理结果
- 03输出 CSV 或 Parquet 文件
- 04支持多种数据库来源
- 05可选统计 CSV 令牌数
适用场景
- 01将大型查询结果导出到文件
- 02将 SQL 结果保存为 CSV 或 Parquet
- 03按阈值检查 CSV 令牌数量
MCP 相关
提供 `run_sql` 工具,从文件读取 SQL,并将查询结果写入指定的 CSV 或 Parquet 文件。它支持 ConnectorX 连接令牌,并返回状态消息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
run-sql-connectorx
一个通过 ConnectorX 执行 SQL,并将结果以 PyArrow RecordBatch 分块流式写入 CSV 或 Parquet 的 MCP 服务。
- 输出格式:
csv或parquet - CSV:UTF-8 编码,始终写入标题行
- Parquet:使用 PyArrow 默认设置;批次之间的模式不匹配时会引发错误
- 返回值:成功时返回字符串
"OK",失败时返回"Error: <message>" - 失败时会删除部分写入的输出文件
- CSV 令牌计数(可选):使用
tiktoken(o200k_base)逐行统计令牌,并设有警告阈值
为什么选择这个库?
- 高效流式处理:以 Arrow
RecordBatch分块处理大型结果 - 节省 MCP 令牌:通过文件交换数据,而非内联载荷
- 通过 ConnectorX 支持跨数据库操作:一个工具即可适配多种后端
- 可靠的 I/O:处理 CSV 标题、验证 Parquet 模式,并在出错时安全清理
支持的数据源(ConnectorX)
ConnectorX 支持多种数据库。常见示例包括:
- PostgreSQL
- MySQL / MariaDB
- SQLite
- Microsoft SQL Server
- Amazon Redshift
- Google BigQuery
如需查看受支持数据库及其连接令牌(conn)格式的完整最新列表,请参阅官方文档:
- ConnectorX 仓库:https://github.com/sfu-db/connector-x/
- 数据库连接令牌:https://github.com/sfu-db/connector-x/tree/main/docs/databases
快速开始
uvx run-sql-connectorx \
--conn "<connection_token>" \
--csv-token-threshold 500000
<connection_token> 是 ConnectorX 使用的连接令牌(conn),适用于 SQLite、PostgreSQL、BigQuery 等。
CLI 选项
--conn <connection_token>(必填):ConnectorX 连接令牌(conn)--csv-token-threshold <int>(默认值为0):当值> 0时,启用基于tiktoken(o200k_base)的 CSV 逐行令牌计数;该值为警告阈值
延伸阅读
- ConnectorX 仓库:https://github.com/sfu-db/connector-x/
- 各数据库的连接令牌格式:https://github.com/sfu-db/connector-x/tree/main/docs/databases
从 mcp.json 运行
要从 Cursor 等兼容 MCP 的客户端启动服务,请将以下代码片段添加到项目根目录下的
.cursor/mcp.json:
{
"mcpServers": {
"run-sql-connectorx": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/gigamori/mcp-run-sql-connectorx",
"run-sql-connectorx",
"--conn", "<connection_token>"
]
}
}
}
行为与限制
- 流式处理:ConnectorX 以 RecordBatch 分块流式传输结果;默认
batch_size为100 000行。 - 空结果:
- CSV – 会创建一个空文件
- Parquet – 会写入一个空表
- 错误处理:发生任何异常时都会删除输出文件。
- CSV 令牌计数(当
--csv-token-threshold > 0时):- 计数文本:与
csv.writer写入的内容完全一致(包括存在时的标题行、分隔符、引号和换行符),采用 UTF-8 编码 - 流式处理方式:使用
tiktoken(o200k_base)对写入的每一行 CSV 进行令牌化
- 计数文本:与
调用输出
该工具返回一条文本消息。
- 成功时:
- Parquet:
OK - CSV:
- 如果
--csv-token-threshold = 0:OK - 如果
--csv-token-threshold > 0:OK N tokens(或当N >= threshold时返回OK N tokens. Too many tokens may impair processing. Handle appropriately) - 启用计数且结果为空时:
OK 0 tokens
- 如果
- Parquet:
- 失败时:
Error: <message>(会删除任何部分输出文件)
MCP 工具规范
该服务提供一个 MCP 工具 run_sql。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
sql_file | 字符串 | 是 | 包含要执行的 SQL 文本的文件路径 |
output_path | 字符串 | 是 | 查询结果的目标文件 |
output_format | 枚举 | 是 | "csv" 或 "parquet" 之一 |
batch_size | 整数 | 否 | RecordBatch 大小(默认值为 100000) |
调用示例
{
"tool": "run_sql",
"arguments": {
"sql_file": "sql/queries/sales.sql",
"output_path": "output/sales.parquet",
"output_format": "parquet",
"batch_size": 200000
}
}
许可证
根据 MIT License 分发。详情请参阅 LICENSE。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。