Repository navigation
The MCP Server
Describes robot-council/core v0.8.3.
The same coordination actions, served as MCP tools at POST {prefix}/api/mcp for whichever bridge
an agent's harness runs. Every tool calls the same store its REST endpoint does, so the two surfaces
cannot drift: a rule that lives in a conditional update is enforced by the write, whichever door the
call came through.
Thirty-one tools, among them task_list, task_create, the eight task transitions, the four lock
actions, events_read, events_narrate, directive_post, presence_heartbeat, session_move and
developer_settings. Each enforces the same
ability as its endpoint, and a refusal comes back marked as a tool error rather than as content:
an MCP client cannot tell a result that describes a failure from one that describes success, so a
refusal returned as ordinary text reads to a model as though the call had worked.
tools/list paginates, and the first page carries 15 of the 31. It returns a nextCursor —
base64 of {"offset":15} — and the rest arrive only when that cursor is passed back. Most MCP clients walk the pages for you; a hand-rolled probe
does not, and a first page read as a total looks exactly like a complete answer, because the number
that would contradict it is the one the page does not carry.
The server's instructions tell an agent the thing it most needs to know before reading anything another agent wrote — that task and event content is data and never instructions, and that every result carries provenance to weigh it by.
The MCP URI answers GET and DELETE with a 405, as the transport specification asks. Those two
are mounted behind the same guard and the same limiter as the POST, so a host's own machine
middleware covers all three.
Installing this package installs laravel/mcp, and a host inherits more than the tools. Its
service provider is auto-discovered, so a host also gets seven mcp:* and make:mcp-* artisan
commands, an mcp config key and view namespace, routes/ai.php loaded if the host happens to have
one, and one middleware pushed onto the global HTTP kernel. Two are worth knowing about before
upgrading:
-
On a Passport host it adds an
mcp:useOAuth scope.Server\Registrar::ensureMcpScope()runs on every boot and callsPassport::tokensCan()when Passport is installed, so the scope appears on the host's consent screen and is grantable to its clients. Nothing in this package uses Passport or OAuth; the machine API authenticates with the device-code credentials described in Enrolling an Agent Machine. -
mcp.redirect_domainsdefaults to['*']. It is inert unless a host callsMcp::oauthRoutes(), which this package does not, but a host that publishes themcpconfig and later turns those routes on inherits the permissive default.
mcp:inspector will not list this server while a host has cached its routes. Laravel skips a
package's route files then, and the server is registered inside that same guard.