fivetran-mcp
# Fivetran MCP Server
<!-- mcp-name: io.github.YimingYAN/fivetran-mcp -->
[](https://pypi.org/project/fivetran-mcp/)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://claude.ai/code)
> **Note:** This repository is built and maintained entirely by [Claude Code](https://claude.ai/code), Anthropic's AI coding assistant.
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server for controlling [Fivetran](https://fivetran.com/) data pipelines. Enables AI assistants like Claude to manage syncs, monitor connection status, and control data pipelines through natural language.
## Features
- **List connections** - View all Fivetran connections with status
- **Check sync status** - Get detailed status for any connection including tasks and warnings
- **Trigger syncs** - Start syncs on demand
- **Historical resync** - Trigger full data resync or resync specific tables
- **Pause/Resume** - Control connection scheduling
- **List groups** - View all destination groups
- **Test connection** - Diagnose connectivity and configuration issues
- **Schema visibility** - View schemas, tables, and columns for any connection
- **Reload schema** - Refresh schema configuration from the source
## Quick Start
### Step 1: Get Fivetran API Credentials
1. Log in to [Fivetran Dashboard](https://fivetran.com/dashboard)
2. Click your **username** (top right corner)
3. Click **API Key**
4. Click **Generate API key**
5. Copy both the **API Key** and **API Secret** (secret shown only once!)
See [Fivetran API Getting Started](https://fivetran.com/docs/rest-api/getting-started) for more details.
### Step 2: Store Credentials
Add to your `~/.env.local` (or equivalent):
```bash
# Fivetran API
export FIVETRAN_API_KEY="your-api-key"
export FIVETRAN_API_SECRET="your-api-secret"
```
Then reload:
```bash
source ~/.env.local
```
### Step 3: Verify Credentials
Test that your credentials work:
```bash
curl -s -X GET "https://api.fivetran.com/v1/account/info" \
-H "Accept: application/json" \
-H "Authorization: Basic $(echo -n "$FIVETRAN_API_KEY:$FIVETRAN_API_SECRET" | base64)"
```
Expected response:
```json
{"code":"Success","data":{"account_id":"...","account_name":"..."}}
```
### Step 4: Configure Claude Code
Add to your `~/.claude.json`:
```json
{
"mcpServers": {
"fivetran": {
"type": "stdio",
"command": "uvx",
"args": ["fivetran-mcp@latest"],
"env": {
"FIVETRAN_API_KEY": "${FIVETRAN_API_KEY}",
"FIVETRAN_API_SECRET": "${FIVETRAN_API_SECRET}"
}
}
}
}
```
### Step 5: Restart Claude Code
Restart Claude Code to load the new MCP server. You should now have access to Fivetran tools.
## Available Tools
### Connection Management
| Tool | Description |
|------|-------------|
| `list_connections` | List all connections, optionally filtered by group |
| `get_connection_status` | Get detailed status including tasks, warnings, and sync details |
| `trigger_sync` | Start a sync for a connection (optional `force` flag) |
| `trigger_resync` | Trigger full historical resync |
| `resync_tables` | Resync specific tables only (e.g., `["schema.table_name"]`) |
| `pause_connection` | Pause a connection |
| `resume_connection` | Resume a paused connection |
| `list_groups` | List all groups/destinations |
| `test_connection` | Run diagnostic tests to identify connectivity/configuration issues |
### Schema & Table Visibility
| Tool | Description |
|------|-------------|
| `get_connection_schema` | Get schema info with optional table filter (includes columns when filtering) |
| `get_schema` | Get complete raw schema configuration for a connection |
| `list_tables` | List all tables with enabled status and sync mode |
| `get_table_columns` | Get column details for a specific table |
| `reload_schema` | Refresh schema configuration from the source |
## Limitations
The following capabilities are **not available** via Fivetran's REST API:
| Capability | Status | Notes |
|------------|--------|-------|
| Column data types | Not available | Query your destination database directly for type info |
| Sync history/logs | Not available | Fivetran uses [Log Service](https://fivetran.com/docs/logs) which streams to external destinations |
| Detailed error logs for past syncs | Not available | Only current tasks/warnings are accessible |
| Row-level sync status | Not available | Not exposed via API |
| Data quality metrics | Not available | Not exposed via API |
For sync logs and historical data, consider setting up Fivetran's [Log Service](https://fivetran.com/docs/logs) to stream logs to your data warehouse.
## Environment Variables
The server supports two naming conventions:
| Preferred | Alternative |
|-----------|-------------|
| `FIVETRAN_API_KEY` | `FIVETRAN_SYNC_API_KEY` |
| `FIVETRAN_API_SECRET` | `FIVETRAN_SYNC_API_SECRET` |
## Development
```bash
# Clone the repository
git clone https://github.com/YimingYAN/fivetran-mcp.git
cd fivetran-mcp
# Install dependencies
uv sync
# Run the server locally
uv run fivetran-mcp
```
## Cloud Deployment
### Cloudflare Workers (Free)
Deploy to Cloudflare Workers for a hosted MCP endpoint:
```bash
cd cloudflare
uv tool install workers-py
npx wrangler login
npx wrangler secret put FIVETRAN_API_KEY
npx wrangler secret put FIVETRAN_API_SECRET
uv run pywrangler deploy
```
See [cloudflare/README.md](cloudflare/README.md) for detailed instructions.
## License
[MIT](LICENSE)
TDQS
Scored across 15 tools
All tools have distinct, well-defined purposes. Even similar-sounding tools like get_connection_schema and get_schema differ in scope (one optional table filter, the other full configuration), preventing ambiguity.
All tools use a consistent snake_case pattern with clear verbs (get_, list_, pause_, resume_, reload_, resync_, trigger_, test_) followed by the resource. No mixing of conventions.
With 15 tools, the set is well-scoped for a Fivetran management server. It covers essential operations without being overwhelming, and each tool serves a clear purpose.
The tool surface covers most common Fivetran operations: listing, schema retrieval, status, pause/resume, testing, and sync triggers. Minor gaps exist, such as the inability to modify schema configurations manually or create/delete connections, but these are acceptable for a typical use case.