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
- Log in to kimbap, go to your user's API keys, and create one with scope
mcp(orboth, if you also want to use it against the REST API). - 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.