airbyte-mcp
The airbyte-mcp server provides 36 tools for interacting with an Airbyte instance via any MCP-compatible client, enabling full management of data pipelines, connectors, and sync jobs.
Health Monitoring
Check if the Airbyte API is reachable and credentials are valid.
Workspace Management
List all accessible workspaces and retrieve details (name, data residency, metadata) by UUID.
Source Connectors
List, get, create, and update source connectors. Also list and get source connector definitions (Docker image, spec).
Destination Connectors
List, get, create, and update destination connectors. Also list and get destination connector definitions.
Connections (Pipelines)
List, get, create, and update connections, including stream config, sync modes, schedules, and namespace mappings.
Jobs & Sync Operations
List jobs with rich filtering (by connection, type, status, date range), get job details (status, bytes/rows synced, duration), trigger sync or reset jobs, cancel running jobs, and poll until a job reaches terminal status.
Job Diagnostics & Logs (Self-Managed)
List all job types including refresh and clear, get detailed job info with per-attempt stats, failure reasons, and stack traces, and fetch structured log entries for all or specific attempts.
Cloud Sync Logs (Airbyte Cloud only)
Fetch full-text sync logs with pagination via the Cloud Config API.
Streams
Get available stream properties for a source/destination pair (sync modes, cursor fields, primary keys).
Tags
List, create, update, and delete organizational tags for resources.
Additional Features
Automatic token exchange with in-memory caching and transparent 401 retry.
Output in Markdown or JSON format for summary data, JSON-only for log data.
Compatible with both self-managed Airbyte and Airbyte Cloud; deployable via
uvx,uv, or Docker.
Allows interaction with an Airbyte instance (self-managed or Cloud) to manage workspaces, sources, destinations, connections, jobs, job logs, streams, tags, and connector definitions via the Airbyte Public API and internal Configuration API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@airbyte-mcplist all workspaces"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Airbyte MCP Server (airbyte-mcp)
MCP server for the Airbyte Public API. Built with the official MCP Python SDK (FastMCP).
Lets any MCP-compatible client (Cursor, Claude Desktop, Claude Code, MCP Inspector, etc.) interact with your Airbyte instance through natural language.
Features
36 tools covering workspaces, sources, destinations, connections, jobs, refresh/clear, job logs, tags, streams, and connector definitions
Read and write operations for core resources (create, update, delete)
Job diagnostics via the internal Configuration API (self-managed): detailed failure reasons, per-stream stats, and structured logs
Cloud full-text sync logs via
airbyte_get_cloud_sync_logs(Airbyte Cloud only; parity with official Replication MCP)Automatic token exchange with in-memory caching and transparent 401 retry
Markdown and JSON response formats on summary tools; JSON-only for log tools
Pagination support (limit/offset) on all list tools
Runs over stdio (local) — works with Cursor, Claude Desktop, Claude Code, and Docker
Works with self-managed Airbyte (abctl) and Airbyte Cloud
Related MCP server: Airflow MCP
Available Tools
Tool | Description |
Health | |
| Ping the Airbyte API |
Workspaces | |
| List workspaces with pagination |
| Get workspace details by ID |
Sources | |
| List source connectors (filter by workspace) |
| Get source details by ID |
| Create a new source connector |
| Update an existing source |
Destinations | |
| List destination connectors (filter by workspace) |
| Get destination details by ID |
| Create a new destination connector |
| Update an existing destination |
Connections | |
| List connections / pipelines (filter by workspace) |
| Get connection details including stream config |
| Create a new connection (pipeline) |
| Update an existing connection |
Jobs | |
| List jobs (filter by connection, type, status, dates) |
| Get job details (status, duration, bytes/rows synced) |
| Trigger a sync or reset job |
| Cancel a running job |
| Trigger a per-stream refresh (internal API, self-managed) |
| Clear destination data for streams (internal API, self-managed) |
| Poll until a job reaches a terminal status (internal API) |
Job Logs (Internal API — self-managed only) | |
| List all job types including refresh and clear |
| Per-attempt stats, failure reasons, and stacktraces |
| Structured log entries for all attempts |
| Structured log entries for a specific attempt |
Job Logs (Cloud only — full text) | |
| Full-text sync logs with pagination (Cloud Config API) |
Streams | |
| Get stream properties for a source/destination pair |
Tags | |
| List tags |
| Create a tag |
| Update a tag |
| Delete a tag |
Connector Definitions | |
| List source connector definitions |
| Get a source connector definition |
| List destination connector definitions |
| Get a destination connector definition |
See docs/endpoints.md for the full Airbyte API endpoint checklist.
Prerequisites
A running Airbyte instance — either:
Self-managed via abctl (see docs/local-setup.md)
One of the following to run the server:
uvx (zero-install; runs the published package on demand — see Run with uvx), or
uv + Python 3.13+ (local clone / development), or
Docker (no Python / uv needed on the host)
Quickstart
1. Clone and install
git clone https://github.com/trustxai/airbyte-mcp.git
cd airbyte-mcp
uv sync2. Configure credentials
cp .env.example .envFor self-managed (abctl), retrieve credentials:
abctl local credentialsEdit .env with your client-id and client-secret. See docs/authentication.md for details.
3. Run the server
uv run airbyte-mcpRun with uvx (zero-install)
uvx runs the published PyPI package on demand — no
clone, no virtualenv, no persistent install. The command matches the package
name, so no --from is needed:
uvx airbyte-mcpNot the same as the official Airbyte replication MCP. That one lives in the
airbytepackage and is invoked asuvx --from=airbyte@latest airbyte-mcp. Here the PyPI package isairbyte-mcp, souvx airbyte-mcpunambiguously resolves to this server.
Credentials are passed via the client's env block (see below), or exported in
your shell for a manual run:
AIRBYTE_API_URL=http://localhost:8000/api/public/v1 \
AIRBYTE_CLIENT_ID=<your-client-id> \
AIRBYTE_CLIENT_SECRET=<your-client-secret> \
uvx airbyte-mcpPython version: the package targets Python 3.13+. uv auto-provisions a matching interpreter, so this normally just works. If your environment pins an older default, force it with
uvx --python=3.13 airbyte-mcp.
Client config (e.g. Cursor .cursor/mcp.json) using uvx:
{
"mcpServers": {
"airbyte": {
"command": "uvx",
"args": ["airbyte-mcp"],
"env": {
"AIRBYTE_API_URL": "http://localhost:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Client Configuration
Every MCP client (Cursor, Claude Desktop, etc.) can run the server in one of three ways:
uvx — zero-install; runs the published package on demand (see Run with uvx).
uv — from a local clone; best for development.
Docker — no Python / uv required on the host; everything runs in a container. Build the image once and every client config reuses it.
Host networking note: if Airbyte is running on your host machine (e.g. via
abctl), inside the Docker containerlocalhostdoes not point to your host. Usehttp://host.docker.internal:8000/api/public/v1on macOS/Windows, or add--network=hostto thedocker runargs on Linux.
Build the Docker image (one-time)
docker build -t airbyte-mcp:latest .Cursor
Add to .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
Option A — uv
{
"mcpServers": {
"airbyte": {
"command": "uv",
"args": ["--directory", "/path/to/airbyte-mcp", "run", "airbyte-mcp"],
"env": {
"AIRBYTE_API_URL": "http://localhost:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Option B — Docker
{
"mcpServers": {
"airbyte": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--name", "airbyte-mcp",
"-e", "AIRBYTE_API_URL",
"-e", "AIRBYTE_CLIENT_ID",
"-e", "AIRBYTE_CLIENT_SECRET",
"airbyte-mcp:latest"
],
"env": {
"AIRBYTE_API_URL": "http://host.docker.internal:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Claude Desktop
Add to claude_desktop_config.json:
Option A — uv
{
"mcpServers": {
"airbyte": {
"command": "uv",
"args": ["--directory", "/path/to/airbyte-mcp", "run", "airbyte-mcp"],
"env": {
"AIRBYTE_API_URL": "http://localhost:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Option B — Docker
{
"mcpServers": {
"airbyte": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--name", "airbyte-mcp",
"-e", "AIRBYTE_API_URL",
"-e", "AIRBYTE_CLIENT_ID",
"-e", "AIRBYTE_CLIENT_SECRET",
"airbyte-mcp:latest"
],
"env": {
"AIRBYTE_API_URL": "http://host.docker.internal:8000/api/public/v1",
"AIRBYTE_CLIENT_ID": "<your-client-id>",
"AIRBYTE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
}Claude Code
claude mcp add \
--env AIRBYTE_API_URL=http://localhost:8000/api/public/v1 \
--env AIRBYTE_CLIENT_ID=<your-client-id> \
--env AIRBYTE_CLIENT_SECRET=<your-client-secret> \
--transport stdio \
airbyte \
-- uvx airbyte-mcpMCP Inspector
The Inspector can launch the stdio server directly:
npx @modelcontextprotocol/inspector uvx airbyte-mcpSet AIRBYTE_API_URL, AIRBYTE_CLIENT_ID, and AIRBYTE_CLIENT_SECRET in the
Inspector's environment panel (or export them in your shell first).
Running Manually (without a client)
If you just want to exercise the server from the CLI:
# uvx — no clone
uvx airbyte-mcp
# uv
uv run airbyte-mcp
# Docker
docker run --rm -i --env-file .env airbyte-mcp:latestEnvironment Variables
Variable | Required | Default | Description |
| No |
| Airbyte API base URL |
| Yes* | — | Application client ID |
| Yes* | — | Application client secret |
| No | — | Pre-fetched token (skips exchange) |
| No | (derived) | Override Config API base (Cloud: |
| No |
| Default HTTP timeout for public API calls |
| No |
| Timeout for internal/Cloud Config API log endpoints |
*Not required if AIRBYTE_ACCESS_TOKEN is provided.
Documentation
Authentication — token exchange, credentials setup
Architecture — system design, package layout, token lifecycle
Comparison vs Official MCPs — open-source-first positioning vs official MCPs
Endpoints Checklist — full Airbyte API coverage status
Local Setup — abctl installation walkthrough
Contributing — development workflow, PR guidelines
Security — vulnerability reporting
Changelog — release history
Contributing
Contributions are welcome! See docs/CONTRIBUTING.md to get started.
License
Apache-2.0 — see LICENSE for details.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/trustxai/airbyte-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server