ollie/doc/NO_MCP.md

2.4 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: shell. Every other capability — file operations, memory, search, sub-agents — is a tool script promoted to a native callable function via the tool registry. Skills 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_query script that calls the database CLI.
  • An MCP server that searches the web becomes a s/{id}/t/web_search script that calls curl or 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_edit already 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) ls $OLLIE_TOOLS_PATH/ + grep for descriptions
tools/call (invoke a tool) shell or promoted tool call
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.Server adapter wrapping the MCP client (tools.NewServer, mcpServer).
  • MCP server configuration in the agent config (mcpServers in 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.