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.
| 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 |
| Job Logs (Internal API) | |
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 |
| 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.
#### stdio (Cursor / Claude Desktop / Docker)
uv run airbyte-mcp#### Streamable HTTP (remote / MCP Inspector)
uv run airbyte-mcp-http
# Listening on http://127.0.0.1:8080/mcpEvery MCP client (Cursor, Claude Desktop, etc.) can run the server in one of two 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>"
}
}
}
}Option A — uv
uv run airbyte-mcp-http &
claude mcp add --transport http airbyte http://127.0.0.1:8080/mcpOption B — Docker
docker build -f Dockerfile.http -t airbyte-mcp-http:latest .
docker run -d --rm --name airbyte-mcp-http \
-p 8080:8080 \
-e AIRBYTE_API_URL=http://host.docker.internal:8000/api/public/v1 \
-e AIRBYTE_CLIENT_ID=<your-client-id> \
-e AIRBYTE_CLIENT_SECRET=<your-client-secret> \
airbyte-mcp-http:latest
claude mcp add --transport http airbyte http://127.0.0.1:8080/mcp# Start the server in HTTP mode (uv or docker — either works)
uv run airbyte-mcp-http
# or: docker run --rm -p 8080:8080 --env-file .env airbyte-mcp-http:latest
# In another terminal
npx @modelcontextprotocol/inspector
# Then connect to http://127.0.0.1:8080/mcp in the inspector UIIf you just want to exercise the server from the CLI:
# stdio (uv)
uv run airbyte-mcp
# stdio (Docker)
docker run --rm -i --env-file .env airbyte-mcp:latest
# HTTP (uv)
uv run airbyte-mcp-http
# HTTP (Docker)
docker run --rm -p 8080:8080 --env-file .env airbyte-mcp-http: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) |
HTTP_HOST | No | 127.0.0.1 | HTTP transport bind address |
HTTP_PORT | No | 8080 | HTTP transport port |
*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.