MCP
kprompt mcp serve — read/plan-only Model Context Protocol tools for IDE assistants. Mutations return PlanResult JSON and never auto-apply.
kprompt mcp serve exposes kprompt to IDE assistants (Cursor, Claude Desktop, Windsurf, …) as a read/plan-only Model Context Protocol tool provider. kprompt here is an MCP tool provider, not an agent platform. Mutating prompts return a typed PlanResult and stop — the MCP surface never applies a change to the cluster. Approval stays a human action you run yourself (kprompt "…" --approve in your own terminal).
Transport
Newline-delimited JSON-RPC 2.0 over stdio. Your editor spawns kprompt mcp serve and talks to it on stdin/stdout; kprompt’s human-readable output goes to stderr, keeping stdout clean for the protocol.
kprompt mcp serveTools
| Tool | What it does | Mutates? |
|---|---|---|
| kprompt.read | Natural-language read against the active kubeconfig. Returns PlanResult JSON. | No |
| kprompt.investigate | Multi-hop root-cause walk for a target. | No |
| kprompt.why | Causal analysis of why a target is failing/pending/crashing. | No |
| kprompt.timeline | Chronology of what happened to a target. | No |
| kprompt.impact | Reverse dependencies / blast radius for a target. | No |
| kprompt.plan | Compile a mutation prompt into a typed PlanResult. Never applies. Wipe-class intents hard-deny. | No |
| kprompt.tools | List detected integrations as JSON. | No |
| kprompt.doctor | Read-only environment health report. Never prints API keys. | No |
Reasoning tools need a configured LLM provider because they compile natural language into intent. They honor your kubeconfig RBAC — no cluster credentials leave your machine. kprompt.plan is the explicit mutation surface: it returns the plan an assistant can show you; applying it stays out-of-band. The MCP server exposes no approval path.
Bridge story: IDE plan → CLI apply
One contract, two surfaces — same typed PlanResult. Use Cursor / Claude Desktop MCP for read and plan; apply stays a human action in a terminal you control. Never ask the assistant to “just apply it” over MCP — there is no apply tool and no --approve on the wire (ADR-0024).
Handoff
Cursor / Claude Desktop
└─ MCP tool kprompt.plan / kprompt.investigate / …
└─ PlanResult JSON (risk · actions · blast radius)
└─ you review in the IDE
└─ apply out-of-band:
kprompt "scale api to 3" -n payments --approve
# or: kprompt history rerun N --approve- Do in the IDE (MCP): kprompt.read / investigate / why / timeline / impact / plan / doctor / tools
- Do in the CLI: the same prompts without MCP, plus kprompt "…" --approve after you trust the shape
- VS Code PlanResult extension uses the same handoff — review in IDE, approve via local CLI
Editor configuration
Cursor
~/.cursor/mcp.json or project .cursor/mcp.json
{
"mcpServers": {
"kprompt": {
"command": "kprompt",
"args": ["mcp", "serve"]
}
}
}Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"kprompt": {
"command": "kprompt",
"args": ["mcp", "serve"]
}
}
}Use an absolute path to the kprompt binary if it is not on the editor’s PATH.
Safety
- No remote auto-apply — the server never executes a mutation; --approve is not reachable over MCP
- Hard-denies intact — wipe-class / namespace-delete intents are refused regardless of caller
- Local trust — stdio transport is scoped to the operator who launched the editor; there is no network listener by default
Quick manual check
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| kprompt mcp serve