MCP数据管道连接器
npm mcp-data-pipeline-connector 包
一个MCP服务器用于所有数据源-具有跨源SQL连接,没有外部查询服务。DuckDB运行在嵌入式进程中,因此您可以在单个查询中针对Postgres表和REST API响应连接CSV文件,完全在您的机器上。代理可以处理您的数据,而不需要特定于源的知识或多个MCP服务器配置。
关键特性
- 统一查询接口:通过DuckDB跨所有连接源的SQL -包括跨源连接。
- 多源类型:单个服务器上的CSV/JSON文件、PostgreSQL数据库和REST API端点。
- 自动模式检测:从CSV头和Postgres元数据推断列名和类型。
- 其他缓存REST API响应使用可配置的TTL缓存,以避免冗余调用。
- 模式标准化:将特定于源的类型映射到标准集(字符串、数字、日期、布尔值、json)。
- 进程内查询引擎: DuckDB运行嵌入式-无需安装或管理单独的查询服务。
为什么要在单独的每源MCP服务器上这样做?
常见的替代方案是为每个数据源运行一个MCP服务器——postgres MCP服务器、CSV MCP服务器、REST MCP服务器。每一个都可以独立工作,但它们不能相互交流。
| mcp-data-pipeline-connector | 独立的单源服务器 | |
|---|---|---|
| 到跨源连接 | 本地SQL通过嵌入式DuckDB | 不可能-代理必须手动获取并加入 |
| 配置的复杂性 | MCP配置中的一个服务器条目 | 每个源类型一个条目 |
| 查询引擎 | DuckDB进程-没有安装,没有服务 | 取决于每个源的查询能力 |
| 统一的模式 | 将所有类型归一化为string/integer/number/datetime/boolean/json/unknown | 每个源都使用自己的类型系统 |
| 数据居住 | 所有查询都在本地运行 | 取决于每个连接器的实现 |
如果您要问的问题跨越多个数据源——“将我的销售CSV与用户表连接起来”——这是合适的工具。如果您只查询一种源类型,那么使用专用的单源服务器会更简单。
免责声明
mcp-data-pipeline-connector 连接到您配置的数据源,并代表您的代理对它们执行查询。确保代理只拥有它们所需的数据库权限。连接字符串永远不会被记录或传输;不要让它们出现在版本控制的配置文件中。为凭证使用环境变量。
需求
- Node.js v20.19或更新版本。
- npm。
- 可选:用于Postgres连接器的正在运行的PostgreSQL实例。
开始
在MCP客户端中添加以下配置:
{
"mcpServers": {
"data-connector": {
"command": "npx",
"args": ["-y", "mcp-data-pipeline-connector@latest"]
}
}
}
中定义数据源 ~/.mcp/data-sources.yaml:
sources:
- name: sales
type: csv
path: ~/data/sales-2025.csv
- name: users
type: postgres
connection_string: "${POSTGRES_URL}"
tables: [users, subscriptions]
将连接字符串存储在环境变量中,而不是直接存储在YAML文件中。
MCP客户端配置
Amp·Claude Code·Cline·Cursor·VS Code·Windsurf·Zed
你的第一个提示
将CSV文件放置在 ~/data/sample.csv,将其作为一个源添加到你的配置中,然后输入:
What columns are in the sample table? Show me the first 5 rows.
您的客户端应该返回模式和数据预览。
工具
资源(2个工具)
connect_sourcelist_sources
模式(2个工具)
list_tablesget_schema
数据(2个工具)
querytransform
运行状况(1个工具)
check_health
配置
--config / --sources-config
定义数据源的YAML文件的路径。
类型: string
默认值: ~/.mcp/data-sources.yaml
--rest-cache-ttl
缓存的REST API响应的生存时间(以秒为单位)。设置为 0 禁用缓存。
类型: number
默认值: 300
--max-rows
返回的最大行数 query 呼叫。防止意外的大型结果集。
类型: number
默认值: 1000
--read-only
拒绝任何不是的SQL语句 SELECT 查询。强制对所有源进行只读访问。
类型: boolean
默认值: true
传递标志 args 属性在JSON配置中:
{
"mcpServers": {
"data-connector": {
"command": "npx",
"args": ["-y", "mcp-data-pipeline-connector@latest", "--max-rows=5000", "--rest-cache-ttl=60"]
}
}
}
验证
在发布新版本之前,请使用MCP Inspector验证服务器,以确认所有工具都正确公开并且协议握手成功。
交互式用户界面 (打开浏览器):
npm run build && npm run inspect
CLI模式 (脚本/ ci友好):
# List all tools
npx @modelcontextprotocol/inspector --cli node dist/index.js --method tools/list
# List resources and prompts
npx @modelcontextprotocol/inspector --cli node dist/index.js --method resources/list
npx @modelcontextprotocol/inspector --cli node dist/index.js --method prompts/list
# Call a tool (example — replace with a relevant read-only tool for this plugin)
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name list_sources
# Call a tool with arguments
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name list_sources --tool-arg key=value
在发布之前运行,以在工具注册和运行时启动时捕获回归。
贡献
每个连接器都位于 src/connectors/ 并且必须执行 DataConnector 接口。添加夹具数据文件 tests/fixtures/ 用于集成测试。永远不要记录连接字符串或凭证-在任何输出或错误消息之前进行清理。
npm install && npm test
上市
mcp-data-pipeline-connector 被列在 MCP注册表 和 MCP市场。
故障排除
- REST源连接失败:确认URL是否可达,并设置了任何认证环境变量。使用
check_health启动后重新测试。 - 跨源连接不返回任何结果:确保两个源都是CSV类型并在使用前注册
source='_all'。 - 查询返回
truncated: true:增加--max-rows或者加上LIMIT子句到SQL。