Before starting, make sure you have the following:
- ✓ Claude Code installed —
npm i -g @anthropic-ai/claude-code
- ✓ A Fivetran account with at least one destination configured
- ✓ Fivetran API key + secret (Account Settings → API Config)
- ✓ Python 3.10+ available on your machine
- ~
git for cloning Fivetran's MCP repo
Note
The Fivetran MCP server is open source and self-hosted. It runs as a local Python process and talks to Fivetran's REST API on your behalf. Your credentials never leave your machine.
Clone Fivetran's official MCP repository and set up a Python virtual environment:
$ git clone https://github.com/fivetran/fivetran-mcp-server.git ~/.claude/fivetran-mcp
$ cd ~/.claude/fivetran-mcp
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install .
Successfully installed fivetran-mcp-0.x.x
✓ MCP server installed at ~/.claude/fivetran-mcp/
Why self-hosted
Unlike a hosted SaaS MCP, this server runs locally. You hold the API key. The server is a thin proxy over the public Fivetran REST API plus a few quality-of-life helpers. Source:
github.com/fivetran/fivetran-mcp-server.
Register the MCP server with Claude Code. The fastest way is the claude mcp add command:
$ claude mcp add fivetran \
--env FIVETRAN_API_KEY=your-api-key \
--env FIVETRAN_API_SECRET=your-api-secret \
--env FIVETRAN_ALLOW_WRITES=false \
-- ~/.claude/fivetran-mcp/.venv/bin/python ~/.claude/fivetran-mcp/server.py
✓ Registered MCP server: fivetran (user scope)
Or add it directly to your ~/.claude.json:
{
"mcpServers": {
"fivetran": {
"command": "/Users/you/.claude/fivetran-mcp/.venv/bin/python",
"args": ["/Users/you/.claude/fivetran-mcp/server.py"],
"env": {
"FIVETRAN_API_KEY": "your-api-key",
"FIVETRAN_API_SECRET": "your-api-secret",
"FIVETRAN_ALLOW_WRITES": "false"
}
}
}
}
Important
Keep FIVETRAN_ALLOW_WRITES at "false" by default. Step 6 explains the safety pattern in detail. You will flip it to "true" only for the specific window when you want the agent to mutate state.
Restart Claude Code, then ask the agent to introspect the server:
Claude Code
·
> List my Fivetran groups and connections
⌟ list_groups (MCP)
↳ fivetran: 1 group found
⌟ list_connections_in_group (MCP)
↳ fivetran: 12 connections returned
Connected to Fivetran. You have 1 group and 12 connections.
Active syncs: 9. Paused: 2. Broken: 1 (postgres_prod, see step 4).
Claude Code
|
MCP: fivetran ✓ 161 tools
You’re ready
If you see 161 tools listed, the connection is working. Move to step 4.
These work out of the box in read-only mode. Copy, paste, run.
01
“List all my connections grouped by status. Flag anything broken or paused for more than 24 hours.”
Health audit. Surfaces stuck syncs and silent failures across the whole account in one pass.
02
“For connection [name], list every table and column currently enabled. Highlight tables I might want to disable to control MAR.”
Cost audit. Pulls the full schema config and recommends candidates for the skip list before they hit your bill.
03
“Show me every webhook configured at the account and group level. List which events each one fires on.”
Observability inventory. Useful when migrating to a new alerting tool or auditing what your monitoring actually covers.
04
“For connection [name], get the last sync time, the next scheduled sync, and any historical sync still in progress.”
Status drill-down. Faster than the UI when you are debugging a stale dashboard and need ground truth in one prompt.
05
“Inspect destination [id] and tell me which connections write to it. Group results by schema prefix.”
Warehouse hygiene. Helps you see which sources are landing where, and catch overlapping or orphaned schemas.
The flagship workflow. Instead of clicking through 20+ checkboxes in the Fivetran UI, you describe the desired state in plain English and the agent generates a schema-config patch.
A real example: a HelpScout connector with 26 tables. Customer support sent a written shortlist (11 parents to keep, 15 children to skip) to keep MAR under control. The whole config landed in 4 prompts:
Claude Code
·
> Reload the schema for the helpscout connector and show me all tables with their current sync state.
⌟ reload_connection_schema_config (MCP)
⌟ get_connection_schema_config (MCP)
↳ fivetran: 26 tables returned
All 26 tables currently set to ALLOW_ALL. Top noisy children:
- conversation_thread_history
- conversation_field_history
- mailbox_assignment_history
+ 12 more *_history tables.
> Keep only these 11 tables: customers, conversations, conversation_threads, conversation_tags,
conversation_users, mailboxes, mailbox_users, users, tags, teams, workflows. Disable the rest.
Generate the JSON patch first. I'll review before you apply.
Proposed patch (write would be blocked: FIVETRAN_ALLOW_WRITES=false):
schema_change_handling: ALLOW_COLUMNS
tables.customers.enabled: true
tables.conversation_thread_history.enabled: false
… 24 more entries
> Looks good. I will flip ALLOW_WRITES on for the next 5 minutes. Apply when ready.
⌟ modify_connection_schema_config (MCP)
↳ fivetran: 26 tables updated
Schema patched. 11 tables enabled, 15 disabled.
The whole exchange takes about 3 minutes. The diff is reviewable in chat. The patch is reproducible. If you do this on production weekly, the time savings stack up fast.
Tip
Always ask the agent to generate the patch first, then apply. The pattern is “dry run, review, apply”: it gives you a diff before any state changes.
6
Read-only safety pattern
The Fivetran MCP server has a top-level kill switch: the FIVETRAN_ALLOW_WRITES environment variable. When set to false, every mutating operation is rejected before it reaches the API. The agent can read everything, change nothing.
Recommended workflow:
- ✓ Default state:
FIVETRAN_ALLOW_WRITES="false". The agent inspects, audits, generates patches, drafts docs.
- ✓ Mutation window: flip to
"true", restart Claude Code, run the specific change, verify it landed.
- ✓ Close the window: flip back to
"false", restart Claude Code. Total elevated time: 5–10 minutes.
This mirrors how production engineers use sudo: privileged for the minute the change happens, locked down the rest of the time. The fact that the toggle lives in your config (not a Fivetran-side permission) means you can keep all the audit benefits of agent automation while keeping accidental writes structurally impossible.
Bonus
For higher-stakes accounts, scope the API key itself. Fivetran lets you create role-scoped keys (read-only, group-scoped). Combine that with ALLOW_WRITES=false and you have two independent layers of protection.