MCP (Claude access)

kimbap exposes an MCP server over the streamable-HTTP transport at /mcp, so Claude Code or claude.ai can manage the host directly — no local install required, since it's just another authenticated HTTP endpoint on your running kimbap instance.

Creating an MCP API key

  1. Log in to kimbap, go to your user's API keys, and create one with scope mcp (or both, if you also want to use it against the REST API).
  2. The raw key (kbp_...) is shown once — copy it now.

Keys inherit their owning user's role. An admin-role user's MCP key can call every tool; a member-role user's key can manage projects/domains but is rejected by admin-only tools (install_docker, update_docker, provision_traefik).

Connecting Claude Code

Add kimbap as a remote MCP server, passing the key as a bearer token header:

{
  "mcpServers": {
    "kimbap": {
      "url": "https://admin.example.com/mcp",
      "headers": { "Authorization": "Bearer kbp_..." }
    }
  }
}

(Exact config location/format depends on your Claude Code version — see Claude Code's own MCP documentation for where this goes.)

Connecting claude.ai

Add kimbap as a remote connector pointing at https://admin.example.com/mcp. Bearer-token auth (the same header shown above) works with any MCP client that supports custom headers on a remote connector. If claude.ai's connector UI specifically requires OAuth for third-party servers, that's a possible fast-follow — bearer-token auth ships first because it works everywhere today, including Claude Code.

Available tools

Tool Description
list_projects List every project, with desired state.
get_project A project's details, current compose/env content, and live container status.
create_project Create a project from compose/env content. Doesn't deploy it.
update_project Overwrite a project's compose/env content. Doesn't redeploy.
delete_project Stop and permanently delete a project. Requires confirm: true.
deploy_project / start_project docker compose up -d — deploy fresh or apply pending changes.
stop_project Stop containers without removing them.
restart_project Restart containers.
get_project_logs Recent log output, optionally for one service.
list_domains / add_domain / remove_domain Manage a project's Traefik-routed domains.
get_system_status Docker + Traefik installation/running status.
install_docker / update_docker Install/update Docker on the host. Admin only, requires confirm: true.
provision_traefik (Re-)provision kimbap's Traefik instance. Admin only, requires confirm: true.
list_audit_log Recent audit log entries (actions taken via UI, API, or MCP).

Every tool is a thin adapter over the same service layer the REST API and web UI use — there's no separate MCP-only logic to drift out of sync, and every mutating tool call is recorded in the audit log just like its REST/UI equivalent.

Confirmation gating

Destructive or host-level actions (delete_project, install_docker, update_docker, provision_traefik) require an explicit confirm: true argument. This exists specifically for the MCP surface: an LLM acting on a loosely-worded request ("clean this up") shouldn't be able to trigger a host-level action without a clear, deliberate confirmation step in the tool call itself.