flow-agent-mcp
An MCP server that exposes Estuary Flow pipeline operations as typed tools, enabling agents to inspect pipeline health, publish captures and materializations, edit/restart tasks, and read landed documents via tool calls.
README
flow-agent-mcp
An MCP server that exposes Estuary Flow pipeline operations as typed tools, plus
three runnable demo pipelines built on public datasets. It wraps Estuary's
flowctl CLI so an agent can drive Flow directly.
What it does
Each tool wraps a real flowctl command with typed, validated inputs and
returns structured JSON. An agent (or a person through Claude Code) can inspect
a pipeline's health, publish captures and materializations, edit and restart
tasks, and read landed documents, all through tool calls rather than hand-typed
CLI commands.
Tools
Every tool maps to a real flowctl invocation, echoed back in the response as
command so the underlying call is always visible.
| Tool | Wraps |
|---|---|
list_tasks |
catalog list --captures/--materializations/--collections --output json |
task_status |
catalog status <task> --output json [--connected] |
task_stats |
raw stats --task <task> --since <dur> |
task_logs |
logs --task <task> --since <dur> (parsed, level-filtered) |
task_health |
status + stats + error logs in one call |
discover_bindings |
discover --source flow.yaml |
create_capture |
catalog publish --source flow.yaml --auto-approve |
create_materialization |
catalog publish --source flow.yaml --auto-approve |
pull_specs |
catalog pull-specs --name <task> |
set_task_enabled |
pull specs → toggle shards.disable → publish |
restart_task |
the disable/verify/enable sequence |
read_collection |
collections read --collection <name> --output json [--since <dur>] |
generate_synthetic_data |
demo record generator (no flowctl) |
Notes on behavior worth knowing:
set_task_enabledhandles the spec surgery. It pulls the live spec, togglesshards.disablecleanly, and republishes, so enable/disable is one call rather than a manual edit-and-publish loop.- Failures return flowctl's own message as a structured MCP error result instead of throwing, so the calling agent gets actionable text.
flowctlpublishes from files, not inline specs, so specs are written to a scratch directory and cleaned up after.
Setup
npm install
npm test # 127 checks, no flowctl or Estuary account needed
Add to Claude Code:
claude mcp add estuary-action -- npx tsx /path/to/estuary-mcp/src/index.ts
Real operations need flowctl on PATH and flowctl auth login. Set
ESTUARY_DRY_RUN=true to echo commands without executing them, or
FLOWCTL_PATH to point at a specific binary.
Demo pipelines
Each demo builds a complete catalog — capture, collections, derivation, materialization — from a public dataset shape.
| Demo | Dataset | Exercises |
|---|---|---|
gpu |
Cloud GPU Price Index | HTTP ingest, filter derivation, BigQuery fan-out |
weather |
Open-Meteo (live, no API key) | polling an open API, threshold alerts, Postgres |
property |
Property Comps | Postgres CDC, aggregation with reduce annotations, Snowflake |
Generate a catalog and publish it:
npm run catalog -- gpu acmeCo/gpu > flow.yaml
flowctl catalog publish --source flow.yaml --auto-approve
Generate data to feed a pipeline:
npm run demo:gpu -- 500 # NDJSON to POST at the ingest endpoint
npm run demo:weather # live Open-Meteo readings
npm run demo:weather -- --watch 300 # poll every 5 minutes
npm run demo:property -- 1000 --sql # INSERTs for the CDC source table
npm run demo:property -- --ddl # table + replication slot + publication
The weather demo pushes directly to Estuary when WEATHER_INGEST_URL and
WEATHER_INGEST_TOKEN are set. The ingest URL is only shown in the dashboard
after publishing, under the capture's Endpoints section.
Aggregation correctness
The property rollup sums sales per market. Aggregating derivations emit one
delta document per source row and rely on schema reduce: annotations to fold
deltas that share a key. The top-level reduce: { strategy: merge } combines
matching deltas and is set alongside the per-field strategies. aggregateSchema()
in src/specs.ts applies both levels, and test/catalog.test.mts asserts they
are present.
Layout
src/
index.ts MCP server and tool definitions
flowctl.ts subprocess wrapper, NDJSON parsing, scratch spec files
specs.ts catalog spec builders (captures, derivations, reductions)
shards.ts shards.disable spec surgery
yaml.ts literal-block YAML so SQL lambdas survive serialization
demos/ three end-to-end pipelines
synthetic/ record generators
test/
shards.test.mts disable/enable spec editing
catalog.test.mts spec shape, key/schema/reduce invariants
mcp-client.test.mts real MCP transport, command construction, validation
Status
Tested (offline, 127 checks): tool registration and schema validation over a
real MCP client connection, exact flowctl command construction for every tool,
shard spec editing, output parsing, and catalog invariants across all three
demos.
Verified against a live Estuary tenant. A full source-to-destination pipeline was published and run end to end:
- an HTTP-ingest capture landing documents into a collection,
- a SQLite derivation filtering those readings into threshold-based alerts,
- schema inference widening a field's bounds and republishing the task on its own,
- a Postgres materialization writing both collections into an external database, confirmed by querying that database directly (8 readings, 3 alerts).
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。