2.5 KiB
Why ollie Does Not Support MCP
MCP (Model Context Protocol) is an open protocol that standardizes how applications provide context and tools to LLMs via JSON-RPC over stdio. Many agent frameworks implement MCP client support to interoperate with a growing ecosystem of MCP servers.
ollie removed its MCP client implementation after observing that the protocol adds complexity without adding capability, given ollie's architecture.
The argument
ollie exposes exactly one built-in tool: execute_code. Every other capability — file operations, memory, search, sub-agents — is a shell script in t/ invoked via execute_code {tool: "name", args: [...]}. Skills in sk/ teach the agent when and how to use each tool.
This means any operation an MCP server can perform, a tool script can also perform:
- An MCP server that queries a database becomes a
s/{id}/t/db_queryscript that calls the database CLI. - An MCP server that searches the web becomes a
s/{id}/t/web_searchscript that callscurlor a search CLI. - An MCP server that manages files is redundant —
s/{id}/t/file_read,s/{id}/t/file_write,s/{id}/t/file_editalready exist.
The x/elevate plugin is a concrete example: it replaced an MCP server that ran commands outside the sandbox with a 50-line shell script. Same capability, no protocol overhead, composable with pipes, debuggable with cat.
What MCP adds vs. what ollie already has
| MCP feature | ollie equivalent |
|---|---|
tools/list (structured discovery) |
s/{id}/t/idx (plain text index) + skills |
tools/call (invoke a tool) |
execute_code {tool: "name"} |
| JSON-RPC framing | stdin/stdout/exit code |
| Subprocess lifecycle management | The sandbox manages process lifecycle |
| Typed tool schemas | Tool scripts are self-documenting; skills describe usage |
What MCP costs
- A JSON-RPC client, transport layer, and initialization handshake (
mcp/client.go,mcp/transport.go). - A
tools.Serveradapter wrapping the MCP client (tools.NewServer,mcpServer). - MCP server configuration in the agent config (
mcpServersin config JSON). - Connection management and error handling for subprocess-backed servers.
- An abstraction boundary that obscures what is actually a shell command.
Interop with existing MCP servers
If a third-party MCP server is genuinely needed, a thin bridge script in t/ can shell out to an MCP client CLI. This keeps MCP as an optional external dependency rather than a core architectural concern.