Mcp Data Pipeline Connector

io.github.dbsectrainerPublished by GitHub account dbsectrainerv1.0.1Updated Nov 4, 2026

Universal data connector for CSV, Postgres, and REST APIs via DuckDB

Overview

AI-generated overview

Local MCP server that registers CSV files, PostgreSQL databases and REST APIs, then lets an assistant query and transform them with SQL through embedded DuckDB.

What you can do
  • Register, list and health-check data sources such as CSV files, Postgres databases and REST endpoints
  • List tables and inspect column names and types across sources
  • Run SQL queries with DuckDB, including cross-source joins across CSV sources, with row limits and pagination
  • Apply aggregations, filters, renaming or column selection to a table and return or save the result
When to use it
Useful when an assistant needs to answer questions that span several data sources, for example joining a sales CSV with a Postgres users table, without configuring a separate server per source. A single-source setup is simpler with a dedicated connector.
Requirements
Runs locally over stdio via npx, so Node.js v20.19 or newer and npm are needed. A YAML file (default ~/.mcp/data-sources.yaml) defines the sources; connection strings should come from environment variables. A running PostgreSQL instance is needed for the Postgres connector, and network access for REST sources. An API key variable named YOUR_API_KEY is declared as required.
Before you install
The server executes SQL against the data sources you configure, so grant the agent only the database permissions it needs. Read-only mode is on by default and rejects non-SELECT statements, but it can be turned off. Credentials belong in environment variables such as YOUR_API_KEY and the Postgres connection string variable, not in version-controlled YAML. REST responses are cached by default for 300 seconds.

Installation

In SourceWeft

  1. Open Mcp Data Pipeline Connector in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

MCP Data Pipeline Connector

npm mcp-data-pipeline-connector package

One MCP server for all your data sources — with cross-source SQL joins and no external query service. DuckDB runs embedded in-process, so you can join a CSV file against a Postgres table against a REST API response in a single query, entirely on your machine. Agents work with your data without needing source-specific knowledge or multiple MCP server configs.

Tool reference | Configuration | Contributing | Troubleshooting

Key features

  • Unified query interface: SQL across all connected sources via DuckDB — including cross-source joins.
  • Multiple source types: CSV/JSON files, PostgreSQL databases, and REST API endpoints in a single server.
  • Auto schema detection: Infers column names and types from CSV headers and Postgres metadata.
  • REST caching: REST API responses are cached with a configurable TTL to avoid redundant calls.
  • Schema normalization: Maps source-specific types to a standard set (string, number, date, boolean, json).
  • In-process query engine: DuckDB runs embedded — no separate query service to install or manage.

Why this over separate per-source MCP servers?

The common alternative is running one MCP server per data source — a postgres MCP server, a CSV MCP server, a REST MCP server. Each works fine in isolation, but they can't talk to each other.

mcp-data-pipeline-connectorSeparate per-source servers
Cross-source joinsNative SQL via embedded DuckDBNot possible — agent must fetch and join manually
Config complexityOne server entry in your MCP configOne entry per source type
Query engineDuckDB in-process — no install, no serviceDepends on each source's query capabilities
Schema unificationNormalizes all types to string/integer/number/datetime/boolean/json/unknownEach source uses its own type system
Data residencyAll queries run locallyDepends on each connector's implementation

If you're asking questions that span multiple data sources — "join my sales CSV with the users table" — this is the right tool. If you only ever query one source type, a dedicated single-source server is simpler.

Disclaimers

mcp-data-pipeline-connector connects to data sources you configure and executes queries against them on behalf of your agent. Ensure agents only have the database permissions they need. Connection strings are never logged or transmitted; keep them out of version-controlled config files. Use environment variables for credentials.

Requirements

  • Node.js v20.19 or newer.
  • npm.
  • Optional: A running PostgreSQL instance for the Postgres connector.

Getting started

Add the following config to your MCP client:

json
{  "mcpServers": {    "data-connector": {      "command": "npx",      "args": ["-y", "mcp-data-pipeline-connector@latest"]    }  }}

Define your data sources in ~/.mcp/data-sources.yaml:

yaml
sources:  - name: sales    type: csv    path: ~/data/sales-2025.csv  - name: users    type: postgres    connection_string: "${POSTGRES_URL}"    tables: [users, subscriptions]

Store connection strings in environment variables, not directly in the YAML file.

MCP Client configuration

Amp · Claude Code · Cline · Cursor · VS Code · Windsurf · Zed

Your first prompt

Place a CSV file at ~/data/sample.csv, add it as a source in your config, then enter:

What columns are in the sample table? Show me the first 5 rows.

Your client should return the schema and a preview of the data.

Tools

Sources (2 tools)

  • connect_source
  • list_sources

Schema (2 tools)

  • list_tables
  • get_schema

Data (2 tools)

  • query
  • transform

Health (1 tool)

  • check_health

Configuration

--config / --sources-config

Path to the YAML file defining data sources.

Type: string Default: ~/.mcp/data-sources.yaml

--rest-cache-ttl

Time-to-live in seconds for cached REST API responses. Set to 0 to disable caching.

Type: number Default: 300

--max-rows

Maximum number of rows returned by a single query call. Prevents accidental large result sets.

Type: number Default: 1000

--read-only

Reject any SQL statements that are not SELECT queries. Enforces read-only access across all sources.

Type: boolean Default: true

Pass flags via the args property in your JSON config:

json
{  "mcpServers": {    "data-connector": {      "command": "npx",      "args": ["-y", "mcp-data-pipeline-connector@latest", "--max-rows=5000", "--rest-cache-ttl=60"]    }  }}

Verification

Before publishing a new version, verify the server with MCP Inspector to confirm all tools are exposed correctly and the protocol handshake succeeds.

Interactive UI (opens browser):

bash
npm run build && npm run inspect

CLI mode (scripted / CI-friendly):

bash
# List all toolsnpx @modelcontextprotocol/inspector --cli node dist/index.js --method tools/list
# List resources and promptsnpx @modelcontextprotocol/inspector --cli node dist/index.js --method resources/listnpx @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 argumentsnpx @modelcontextprotocol/inspector --cli node dist/index.js \  --method tools/call --tool-name list_sources --tool-arg key=value

Run before publishing to catch regressions in tool registration and runtime startup.

Contributing

Each connector lives in src/connectors/ and must implement the DataConnector interface. Add fixture data files under tests/fixtures/ for integration tests. Never log connection strings or credentials — sanitize before any output or error message.

bash
npm install && npm test

Listings

mcp-data-pipeline-connector is listed on MCP Registry and MCP Market.

Troubleshooting

  • REST source fails to connect: Confirm the URL is reachable and any auth env var is set. Use check_health to retest after startup.
  • Cross-source join returns no results: Ensure both sources are CSV type and registered before using source='_all'.
  • Query returns truncated: true: Increase --max-rows or add a LIMIT clause to your SQL.

Source: README.md at commit 6914478

Tools

7

connect_source

Register a data source (CSV file, Postgres database, or REST API). Credentials must be in environment variables or a YAML config file — never pass connection strings directly.

Parametersurlnamerequiredpathtyperequiredsource_config_path

list_sources

List all registered data sources and their connection status.

Takes no parameters.

list_tables

List available tables across all sources, or just the named source.

Parameterssource

get_schema

Return the column names and types for a specific table.

Parameterstablerequiredsourcerequired

query

Execute a SQL query against a registered data source using DuckDB. Returns up to --max-rows rows (default 1000). In read-only mode (default), only SELECT statements are allowed. Use source='_all' to query across all CSV sources with cross-source joins. Supports limit and offset for pagination.

Parameterssqlrequiredlimitoffsetsourcesourcesmax_rows

transform

Apply aggregations, filters, renaming, or column selection to a source table and return or save results.

Parameterstablerequiredsourcerequiredoperationsrequiredoutput_format

check_health

Check whether registered data sources are still reachable and responsive.

Parameterssource

Version history

2
  1. v1.0.1LatestNov 4, 2026
  2. v1.0.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts