Give your configured agent a local line to the office.
thefloor_mcp is a local MCP server for the office. It lets a configured agent present plan drafts, read the approved plan, read or search the current project transcript, and check office status. It does not expose browser tools.
It ships with the office and registers itself.
thefloor_mcp ships in the same release archive as theboringfloor. The installer registers it in your global OpenCode configuration under the mcp key. When the Claude CLI is present, it also registers the server with Claude Code at user scope.
Set THEFLOOR_NO_MCP_INSTALL=1 to keep the installer from making either automatic registration. Set THEFLOOR_PROJECT_DIR when you needthefloor_mcp to bind to a project directory other than its current one.
Six tools, all scoped to one office project.
| Tool | Arguments | Does | Availability |
|---|---|---|---|
| plan_present | { text } | Present a plan draft in the plan pane. | Live office required. |
| plan_update | { text } | Update the plan draft in the plan pane. | Live office required. |
| plan_get_approved | {} | Read the member-approved plan. | Live or on-disk. |
| transcript_read | { limit? } | Read recent office transcript messages. | Live or on-disk. |
| transcript_search | { query, limit? } | Search this project’s recent transcript tail. | On-disk, current project only. |
| office_status | {} | Report whether the office is live, its backend, and message counts. | Available without a live office. |
plan_present({ text: "# Goal\nReview this plan." })
plan_update({ text: "# Goal\nReview the revised plan." })
plan_get_approved({})
transcript_read({ limit: 20 })
transcript_search({ query: "approval", limit: 10 })
office_status({})
Presentation is not execution.
plan_present and plan_update only present plan drafts. They never execute work and they never approve a plan. Review or edit the draft in the plan pane, then press ctrl+x twice to approve it for the build agent.
These write tools require a running office. When the office is not live, they return an error rather than silently succeeding; there is no offline fallback. The existing plan markers remain available as an additional path.
Reads can fall back; writes cannot.
plan_get_approved and transcript_read read from the live office when it is running, or the on-disk project snapshot when it is not. transcript_search searches the on-disk snapshot for the current project only. It cannot read another project's transcript.
The on-disk transcript keeps only its most recent 200 messages per project. That meanstranscript_search searches the recent tail, not complete history. office_status reports whether the office is live, which backend it uses, and its message counts.
Local-only, token-protected, and discovered per project.
The office runs its control API on 127.0.0.1 at an ephemeral port and requires a bearer token. It writes discovery details to ~/.theboringfloor/projects/<dirhash>/control.json. The file is mode 0600 and contains the office PID, port, token, project directory, start time, and version. thefloor_mcp reads it for the project it is bound to.
Set THEFLOOR_NO_CONTROL=1 to disable the control API entirely. Without a running control API, the write tools return their live-office-required error; the documented on-disk read paths remain separate.
