Skip to main content

imbi-mcp

MCP server for the Imbi DevOps service management platform. Exposes Imbi API functionality to AI agents via the Model Context Protocol.

How It Works

At startup the server fetches the OpenAPI spec from a running imbi-api instance and auto-generates MCP tools, resources, and resource templates using FastMCP.

Route mapping rules control what gets exposed:

  • Excluded -- Auth, MFA, status, and thumbnail endpoints are hidden.
  • Resources -- GET endpoints that return collections.
  • Resource templates -- GET endpoints with path parameters.
  • Tools -- Everything else (create, update, delete operations).

The caller's Authorization header is forwarded to the API so that requests run with the caller's permissions.

Authentication

Two modes, which can be used together:

  • Token (always on). The caller's Authorization header — an Imbi ik_ API key or a JWT — is forwarded to the API, which authorizes the request. This works with no extra configuration.
  • OAuth (when configured). Set --public-url and --auth-server-url (see below) to make the server an OAuth 2.0 Resource Server. It then verifies JWT access tokens locally, accepts-and-forwards ik_ API keys, and publishes Protected Resource Metadata so MCP clients can discover the Imbi authorization server and run a browser login flow (authorization-code + PKCE, with Dynamic Client Registration). Local JWT verification uses the shared IMBI_AUTH_JWT_SECRET.

FastMCP's DNS-rebinding Host/Origin guard is opt-in (disabled by default as of fastmcp 3.4.4), so requests arriving through a reverse proxy are accepted normally. To enable it, set FASTMCP_HTTP_HOST_ORIGIN_PROTECTION=true and list the public host(s) in FASTMCP_HTTP_ALLOWED_HOSTS='["your-host"]'.

Requirements

  • Python 3.12+
  • A running imbi-api instance

Quick Start

# Install dependencies
moon run root:setup

# Run the server (imbi-api must be reachable)
uv run imbi-mcp serve

# Or with explicit options
uv run imbi-mcp serve --api-url http://localhost:8000 --transport streamable-http

CLI Options

imbi-mcp serve [OPTIONS]
Option Default Env Var Description
--api-url http://localhost:8000 IMBI_INTERNAL_API_URL Base URL of the Imbi API
--transport streamable-http MCP transport type
--host 127.0.0.1 Host to bind to
--port 8001 Port to bind to
--public-url (none) IMBI_MCP_PUBLIC_URL Public base URL of the host fronting this server, WITHOUT the /mcp path (e.g. https://host); FastMCP appends its own /mcp mount path. Enables OAuth with --auth-server-url
--auth-server-url (none) IMBI_MCP_AUTH_SERVER_URL Imbi OAuth issuer URL (e.g. https://host); enables OAuth with --public-url

Supported transports: stdio, http, sse, streamable-http

Docker

docker build -t imbi-mcp .
docker run -p 8001:8001 -e IMBI_INTERNAL_API_URL=http://imbi-api:8000 imbi-mcp

Development

moon run root:setup                         # Install deps and pre-commit hooks
moon run mcp:test                           # Run tests (90% coverage minimum)
moon run mcp:lint mcp:typecheck mcp:format  # Run ruff + basedpyright + format check
uv run pre-commit run --all-files           # Auto-format code

License

BSD-3-Clause

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

imbi_mcp-2.21.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

imbi_mcp-2.21.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file imbi_mcp-2.21.0.tar.gz.

File metadata

  • Download URL: imbi_mcp-2.21.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for imbi_mcp-2.21.0.tar.gz
Algorithm Hash digest
SHA256 9feb91ccf1789693213044cbe3db0fc84ef36c96f663dd634c68eec2d9f9ce57
MD5 8fb5fe9530b48bd9c2f74b7db23c0293
BLAKE2b-256 600cc172b9561ae47911a4642b1f1ea6324feed68dd4a22112b4d4bb17a731f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for imbi_mcp-2.21.0.tar.gz:

Publisher: release.yml on AWeber-Imbi/imbi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file imbi_mcp-2.21.0-py3-none-any.whl.

File metadata

  • Download URL: imbi_mcp-2.21.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for imbi_mcp-2.21.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d0680ec0fd2edef46c0473ff563cdcd0ee7fc351c3bbd6ccd6f288e214f3732
MD5 d7b9fafe27d1acc311acdf88d52821a1
BLAKE2b-256 e58e23a7adb1f7383f086c9b624fe28909bb7f0317a9adb7272a7b3f795d3d70

See more details on using hashes here.

Provenance

The following attestation bundles were made for imbi_mcp-2.21.0-py3-none-any.whl:

Publisher: release.yml on AWeber-Imbi/imbi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page