conventional-commits — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited conventional-commits (Rules) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
airbyte_get_cloud_sync_logs (Airbyte Cloud only; parity with official Replication MCP)| Tool | Description |
|---|---|
| Health | |
airbyte_health_check | Ping the Airbyte API |
| Workspaces | |
airbyte_list_workspaces | List workspaces with pagination |
airbyte_get_workspace | Get workspace details by ID |
| Sources | |
airbyte_list_sources | List source connectors (filter by workspace) |
airbyte_get_source | Get source details by ID |
airbyte_create_source | Create a new source connector |
airbyte_update_source | Update an existing source |
| Destinations | |
airbyte_list_destinations | List destination connectors (filter by workspace) |
airbyte_get_destination | Get destination details by ID |
airbyte_create_destination | Create a new destination connector |
airbyte_update_destination | Update an existing destination |
| Connections | |
airbyte_list_connections | List connections / pipelines (filter by workspace) |
airbyte_get_connection | Get connection details including stream config |
airbyte_create_connection | Create a new connection (pipeline) |
airbyte_update_connection | Update an existing connection |
| Jobs | |
airbyte_list_jobs | List jobs (filter by connection, type, status, dates) |
airbyte_get_job | Get job details (status, duration, bytes/rows synced) |
airbyte_trigger_sync | Trigger a sync or reset job |
airbyte_cancel_job | Cancel a running job |
airbyte_trigger_refresh | Trigger a per-stream refresh (internal API, self-managed) |
airbyte_trigger_clear | Clear destination data for streams (internal API, self-managed) |
airbyte_wait_for_job | Poll until a job reaches a terminal status (internal API) |
| Job Logs (Internal API — self-managed only) | |
airbyte_list_jobs_internal | List all job types including refresh and clear |
airbyte_get_job_details | Per-attempt stats, failure reasons, and stacktraces |
airbyte_get_job_logs | Structured log entries for all attempts |
airbyte_get_attempt_logs | Structured log entries for a specific attempt |
| Job Logs (Cloud only — full text) | |
airbyte_get_cloud_sync_logs | Full-text sync logs with pagination (Cloud Config API) |
| Streams | |
airbyte_get_stream_properties | Get stream properties for a source/destination pair |
| Tags | |
airbyte_list_tags | List tags |
airbyte_create_tag | Create a tag |
airbyte_update_tag | Update a tag |
airbyte_delete_tag | Delete a tag |
| Connector Definitions | |
airbyte_list_source_definitions | List source connector definitions |
airbyte_get_source_definition | Get a source connector definition |
airbyte_list_destination_definitions | List destination connector definitions |
airbyte_get_destination_definition | Get a destination connector definition |
See docs/endpoints.md for the full Airbyte API endpoint checklist.
git clone https://github.com/trustxai/airbyte-mcp.git
cd airbyte-mcp
uv synccp .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.
uv run airbyte-mcpuvx 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 theairbytepackage 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>"
}
}
}
}Every MCP client (Cursor, Claude Desktop, etc.) can run the server in one of three ways:
Host networking note: if Airbyte is running on your host machine (e.g. viaabctl), 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.
docker build -t airbyte-mcp:latest .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>"
}
}
}
}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 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-mcpThe 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).
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:latest| Variable | Required | Default | Description |
|---|---|---|---|
AIRBYTE_API_URL | No | http://localhost:8000/api/public/v1 | Airbyte API base URL |
AIRBYTE_CLIENT_ID | Yes* | — | Application client ID |
AIRBYTE_CLIENT_SECRET | Yes* | — | Application client secret |
AIRBYTE_ACCESS_TOKEN | No | — | Pre-fetched token (skips exchange) |
AIRBYTE_INTERNAL_API_URL | No | (derived) | Override Config API base (Cloud: https://cloud.airbyte.com/api/v1) |
AIRBYTE_REQUEST_TIMEOUT_SECONDS | No | 30 | Default HTTP timeout for public API calls |
AIRBYTE_INTERNAL_LOG_TIMEOUT_SECONDS | No | 120 | Timeout for internal/Cloud Config API log endpoints |
*Not required if AIRBYTE_ACCESS_TOKEN is provided.
Contributions are welcome! See docs/CONTRIBUTING.md to get started.
Apache-2.0 — see LICENSE for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.