airbyte-ops-mcp
MCP and API interfaces that let the agents do the admin work.
How to Contribute
- CONTRIBUTING.md — contributor setup, local testing, and development workflows.
- AGENTS.md — agent-specific operating guidance.
Documentation
- CLI Reference —
airbyte-opscommand-line interface - MCP Tools Reference — Model Context Protocol server tools
- Authentication — client auth options (stdio, interactive OIDC, headless bearer token)
- Autopilot Rollouts — operator-facing progressive rollout automation
- Network Security — access controls and auth model for
internal.airbyte.aiservices
Ops Repo Subprojects
| Subproject | Root dir | Description | Release notes |
|---|---|---|---|
airbyte-internal-ops |
. |
MCP server and airbyte-ops CLI for Airbyte admin operations. |
v0 releases |
airbyte-cloud-cli |
airbyte-cloud-cli/ |
Standalone CLI for Airbyte Cloud operations. | v0 releases |
| Sentry infrastructure | infra/sentry/ |
Pulumi project for connector error monitoring configuration. | N/A |
| Agent message bus infrastructure | infra/agent-message-bus/ |
Pulumi and Cloud Run app for internal agent messaging. | N/A |
GitHub's Releases UI does not group releases by package automatically. Use a tag filter with the exact tag namespace and at least major-version precision, such as tag:v0 or tag:airbyte-cloud-cli/v0, or use the links above.
Installing Ops MCP in your Client
This config example will help you add the MCP server to your client:
{
"mcpServers": {
"airbyte-ops-mcp": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--project=/Users/aj.steers/repos/airbyte-ops-mcp/",
"airbyte-ops-mcp"
],
"env": {
"AIRBYTE_MCP_ENV_FILE": "/Users/{user-id}/.mcp/airbyte_mcp.env"
}
},
"airbyte-coral-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"--python=3.11",
"--from=airbyte@latest",
"airbyte-mcp"
],
"env": {
"AIRBYTE_MCP_ENV_FILE": "/Users/{user-id}/.mcp/airbyte_mcp.env"
}
}
}
}
Connecting to the hosted MCP servers
Use interactive OAuth by default. The client opens a browser to complete the
login flow; do not add a headers block:
{
"mcpServers": {
"airbyte-ops-mcp": {
"type": "http",
"url": "https://mcp.internal.airbyte.ai/ops-mcp"
},
"airbyte-cloud-mcp": {
"type": "http",
"url": "https://mcp.internal.airbyte.ai/cloud-mcp"
}
}
}
MCP client configuration syntax is client-specific. The block above uses the
common type: "http" and url spelling. For Goose, use
type: "streamable_http" and uri instead:
{
"mcpServers": {
"airbyte-ops-mcp": {
"type": "streamable_http",
"uri": "https://mcp.internal.airbyte.ai/ops-mcp"
},
"airbyte-cloud-mcp": {
"type": "streamable_http",
"uri": "https://mcp.internal.airbyte.ai/cloud-mcp"
}
}
}
Use the hosted endpoint path exactly as shown; do not append /mcp.
For a headless client, use the two credential headers instead:
{
"mcpServers": {
"airbyte-ops-mcp": {
"type": "http",
"url": "https://mcp.internal.airbyte.ai/ops-mcp",
"headers": {
"Client-Id": "${AIRBYTE_CLOUD_CLIENT_ID}",
"Client-Secret": "${AIRBYTE_CLOUD_CLIENT_SECRET}"
}
},
"airbyte-cloud-mcp": {
"type": "http",
"url": "https://mcp.internal.airbyte.ai/cloud-mcp",
"headers": {
"Client-Id": "${AIRBYTE_CLOUD_CLIENT_ID}",
"Client-Secret": "${AIRBYTE_CLOUD_CLIENT_SECRET}"
}
}
}
}
Whether ${ENV} references are expanded inside a headers block depends on the
client; if not, provide the credential values through that client's supported
secret configuration.
The credential-header form is enabled on airbyte-ops-mcp. It is not yet
enabled on airbyte-cloud-mcp; sending those headers there currently triggers
the client's OAuth fallback, which opens a browser consent page at
https://mcp.internal.airbyte.ai/cloud-mcp/consent and can leave the client
waiting instead of showing the underlying 401. The PyAirbyte server must
first receive the corresponding support. See
docs/authentication.md for the full
authentication model and security guidance.
Your .env file should include the following values:
# Creds for Airbyte Cloud OAuth
AIRBYTE_CLOUD_CLIENT_ID="..."
AIRBYTE_CLOUD_CLIENT_SECRET="..."
# Required for elevated admin operations
AIRBYTE_INTERNAL_ADMIN_FLAG=airbyte.io
AIRBYTE_INTERNAL_ADMIN_USER={my-id}@airbyte.io
# Workspace ID for Testing
AIRBYTE_CLOUD_TEST_WORKSPACE_ID="..."
Onboarding
If this is your first time working with Airbyte's connector tooling, see ONBOARDING.md for instructions on setting up required credentials like GCP_GSM_CREDENTIALS.
Connector Registry
For an overview of the connector registry architecture, operations, and CLI commands, see docs/connector-registry.md.
For release-block marker operations that prevent republishing known-bad connector code after a yank, see docs/release-blocks.md.
For details on known, intentional differences between the new Registry 2.0 generation pipeline and the legacy pipeline, see Connector Registry 2.0 Migration Changes in CONTRIBUTING.md.
Getting Started
Once configured, use the test_my_tools prompt by typing "/test" into your agent and selecting the auto-complete option for the test_my_tools prompt.
This prompt will step through all the tools, demoing their capabilities.
Metadata
Release files for airbyte-internal-ops 0.106.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| airbyte_internal_ops-0.106.0.tar.gz | 1.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| airbyte_internal_ops-0.106.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.6 MB
Release files / airbyte_internal_ops-0.106.0.tar.gz
| Download URL | airbyte_internal_ops-0.106.0.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6514ca8c76af6e4818ddba93b44c2fa27e07ff5e239efb557a2d17f647b6279c
|
|
BLAKE2b-256 checksum How to use checksums |
3551a3ed81e098bd74cca50990b65e0f80044d90c795373e42849931517f464b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.
Transparency logRelease files / airbyte_internal_ops-0.106.0-py3-none-any.whl
| Download URL | airbyte_internal_ops-0.106.0-py3-none-any.whl |
|---|---|
| Size | 778.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d626ff63977b0b6dd754864046e8cb7824fd3143a4b683e777608be5a0f08d0
|
|
BLAKE2b-256 checksum How to use checksums |
2743a4432042575d008c699974a55d534f271b594b7fa601e0e4d32a3c0a05cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.
Transparency log