Connect MCP servers
MCP servers give octo extra tools — databases, ticket trackers, internal APIs — without writing a
built-in tool for each one. Tools are on by default, so every configured server connects at session
start; its tools, resources, and prompts ride alongside octo’s built-in tools as
mcp__<server>__<tool>.
Add a server
Section titled “Add a server”Servers are declared in ~/.octo/mcp.json (user-global, always loaded) or ./.octo/mcp.json
(project-local, overrides user-global per name), one entry per server:
{ "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] } }}{ "mcpServers": { "linear": { "url": "https://mcp.linear.app/sse" } }}Check what’s connected with /mcp in the TUI, or octo mcp --help for the full config reference.
A server that fails to start or times out during the handshake (10s) is logged and skipped — the
session continues with the others.
Tool Search
Section titled “Tool Search”When MCP servers expose many tools, uploading every schema on every turn wastes context and hurts accuracy. Tool Search keeps built-in tools visible but defers MCP schemas behind a small bridge — every connected tool’s name and one-line description stay listed in the system prompt the whole time, so the model never has to guess whether a tool exists; only the full schema is loaded on demand:
| Tool | Purpose |
|---|---|
mcp_describe |
load the full JSON Schema for one listed tool |
mcp_call |
invoke the tool with arguments matching that schema |
tools: tool_search: enabled: auto # auto (default) | on | off threshold_pct: 10 # activate when deferred schemas ≥ N% of the context windowauto(default) — only enable when the deferred MCP schemas would occupy at leastthreshold_pctof the model’s context window.on— always defer MCP schemas when any MCP tool is connected.off— upload all MCP schemas up front, as before.
Next: MCP tools compose naturally with skills and workflows.