Blog

Naftiko Capabilities for Gravitee

·May 8, 2026
Table of contents

Gravitee splits the API platform into two control planes: the Gravitee Management API for APIs, plans, subscriptions, applications, and platform configuration, and Gravitee Access Management for OAuth2 / OIDC security domains, applications, users, roles, identity providers, and authentication flows. The Naftiko capabilities for Gravitee wrap both control planes — turning the day-to-day work of running the platform into structured tool calls an AI agent can audit, propose, and execute against.

What the Capabilities Cover

Two capabilities ship alongside each other in this repo:

  • api-management — the producer / platform-engineer surface. Manage API definitions through their full lifecycle (create → deploy → start / stop → delete), inspect plans and subscriptions, work with applications and users, read platform configuration, and pull audit events.
  • access-management — the security-engineer surface. Manage Gravitee AM security domains, OAuth2 / OIDC applications, users, roles, identity providers, and the authentication flows that bind them together.

Together they give an agent a coherent view of what is exposed and who can reach it — the two halves of any real API governance posture.

MCP Tools Available

API Management: list-apis, get-api, create-api, update-api, delete-api, deploy-api, start-api, stop-api, list-api-plans, create-plan, list-api-subscriptions, list-applications, create-application, list-users, get-configuration, list-audit-events

Access Management: list-domains, get-domain, create-domain, update-domain, delete-domain, list-domain-applications, create-domain-application, list-domain-users, create-domain-user, list-domain-roles, list-identity-providers, list-domain-flows

Capability Specification

naftiko: "1.0.0-alpha1"

info:
  label: "Gravitee API Management"
  description: "API management workflow for platform engineers and API producers to manage Gravitee APIs, plans, subscriptions, applications, and platform configuration through the Management API."
  tags:
    - Gravitee
    - API Management
    - Administration

binds:
  - namespace: env
    keys:
      GRAVITEE_MANAGEMENT_URL: GRAVITEE_MANAGEMENT_URL
      GRAVITEE_MANAGEMENT_TOKEN: GRAVITEE_MANAGEMENT_TOKEN

capability:
  consumes:
    - import: gravitee-management
      location: ./shared/gravitee-management.yaml

  exposes:
    - type: mcp
      port: 9080
      namespace: gravitee-api-management-mcp
      transport: http
      description: "MCP server for AI-assisted Gravitee API management."
      tools:
        - name: list-apis
          description: "List all APIs registered in Gravitee."
          hints:
            readOnly: true
          call: "gravitee-management.list-apis"
          outputParameters:
            - type: object
              mapping: "$."

        - name: deploy-api
          description: "Deploy an API definition to the gateway."
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "gravitee-management.deploy-api"
          with:
            apiId: "tools.apiId"
          outputParameters:
            - type: object
              mapping: "$."

        - name: start-api
          description: "Start an API on the gateway."
          hints:
            readOnly: false
          call: "gravitee-management.start-api"
          with:
            apiId: "tools.apiId"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-api-plans
          description: "List plans associated with an API."
          hints:
            readOnly: true
          call: "gravitee-management.list-api-plans"
          with:
            apiId: "tools.apiId"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-api-subscriptions
          description: "List subscriptions to an API."
          hints:
            readOnly: true
          call: "gravitee-management.list-api-subscriptions"
          with:
            apiId: "tools.apiId"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-audit-events
          description: "List recent audit events on the platform."
          hints:
            readOnly: true
          call: "gravitee-management.list-audit-events"
          outputParameters:
            - type: object
              mapping: "$."

The Access Management capability mirrors this shape over gravitee-access-management — domains, applications, users, roles, identity providers, and flows — so the same agent runtime can read and reason about both planes side by side.

Running It

Set GRAVITEE_MANAGEMENT_URL and GRAVITEE_MANAGEMENT_TOKEN (or GRAVITEE_AM_URL / GRAVITEE_AM_TOKEN for the access-management capability) in your .env file, then:

docker pull ghcr.io/naftiko/framework:latest

docker run -p 9080:9080 \
  -v ./capabilities/api-management.yaml:/app/capability.yaml \
  -v ./capabilities/shared:/app/shared \
  --env-file .env \
  ghcr.io/naftiko/framework:latest /app/capability.yaml

Gravitee’s two-plane architecture is exactly the kind of surface where capability-driven exposure earns its keep: an agent that needs to “audit which APIs an external partner can reach” has to read APIs from the management plane, plans and subscriptions from the same plane, and identity-provider and role bindings from the access-management plane — and have all four answers reconciled in a single, governed call graph. With both Gravitee capabilities exposed as MCP, that workflow is a deterministic chain of typed tool calls an operator can replay, audit, and trust. The Gravitee capabilities are part of the Naftiko Fleet.