If you run more than one project, the question you actually have is rarely about the repo you're sitting in. It's "is anything waiting on me anywhere?"
keel answers that over MCP. Six tools, all read-only, all available from any session:
| Tool | Answers |
|---|---|
keel_status | the whole board for a project |
keel_projects | every project on this machine, one line each |
keel_next | the single next action |
keel_timeline | what just happened |
keel_explain | what a phase permits and refuses |
keel_dashboard | the dashboard URL |
What it looks like in practice
Every tool takes a project argument, so one session can ask about another. You're deep in
the API repo; you ask keel_projects; you find out the blog repo has been sitting at a gate for
twenty minutes waiting for a yes.
That's the whole point. The alternative is remembering to go and look.
The same answer the dashboard gives
These aren't a separate implementation of the board — they read the same state the dashboard draws:
keel_status in a chat and the card on that page are the same facts. Which means the answer you
get in conversation can't drift from the answer on screen, because there's only one of them.
keel_explain is the one I underrated
The others report state. This one reports rules:
> keel_explain phase: red
RED writes the failing test and nothing else. Production
code is denied. A compile error is not a red test.
When an agent is about to do something the phase forbids, it can ask what the phase allows before it tries — rather than attempting the edit, being blocked by a hook, and having to work out why from an error message.
Setting it up
If you have the keel plugin installed, the MCP server comes with it — the plugin manifest points at it, and Claude Code starts it with the session.
One thing worth knowing: the MCP connection is established at session start. If you've just
installed or upgraded keel, /reload-plugins picks up the code, but a genuinely stale connection
sometimes needs a fresh session. If the tools aren't there, that's usually why — not a broken
install.
You can check the server directly:
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{...}}' \
| node mcp/server.js
A clean handshake means the server is fine and the client just needs to reconnect.
It is read-only, on purpose
Every one of these six tools reads. None of them moves a phase, approves a gate, or edits a file.
A tool that can advance the flow is a tool that can advance it by accident — and keel's entire argument is that the human gates are the point. Asking where you are and deciding what happens next are different things, and only one of them belongs in a tool call.
keel is a Claude Code plugin. github.com/MiladNalbandi/keel


