termic.dev
Documentation menu

MCP endpoint: drive Termic from an MCP client

A loopback MCP server that exposes Termic's task verbs as tools, so an outside client like Claude Desktop can create, prompt, watch and archive tasks without being handed a terminal. Phase A, experimental.


The Termic CLI lets a shell drive the app. The MCP endpoint is the same idea for MCP clients: a scoped control plane a model can call as tools, without being handed a terminal to type into.

It is a loopback HTTP listener speaking the stateless MCP revision (2026-07-28), aimed at outside clients such as Claude Desktop or claude mcp add.

Experimental, Phase A. The endpoint carries one full-scope credential. Per-task scoped tokens, which the stateless revision is what makes possible, are Phase B and are not built. Turn it on deliberately.

Turning it on

Settings → MCP endpoint → Enable MCP endpoint.

The endpoint is bound only while it is enabled. There is no auto-launch path and no dormant listener: off means not bound, and the settings page says so rather than implying something is running.

Settings also has one-click setup for the clients people actually use:

  • Add to Claude Code, which gives you the claude command to run.
  • Add to Codex, which gives you the codex config block.

The bound port is preferred across enable and disable cycles and across restarts, so a config you pasted into a client keeps working instead of going stale the next time you launch.

The tools

MCP dispatch goes through the same code path as the CLI, so the endpoint is a presentation of Termic’s verbs rather than a second implementation of them. What the CLI can do, these tools do, identically.

ToolWhat it does
task_listList tasks
task_statusThe state of one task, including its tab strip
task_newCreate a task, optionally with a first prompt
task_sendSend a prompt to a task’s agent
task_waitBlock until an agent goes quiet
task_resultRead what the agent produced
task_logRead a tab’s output
task_diffThe task’s diff
task_applyLand the task’s changes
task_openBring a task forward in the window
task_renameRetitle a task
task_archiveArchive a task
task_tab / task_tab_closeOpen and close tabs in a task
task_agentsThe configured agent registry

Together that is enough for a client to fan work out to several tasks, wait on them, read back what they produced, and clean up, which is the whole point of exposing it.

The threat model

Loopback TCP is reachable by every process on your machine, so the token is the entire boundary. Phase A compensates from day one rather than deferring it:

  • Its own credential. The endpoint uses an mcp-token file (0600, 244 bits), never the CLI’s token. It is never placed in the app’s process environment and never in any terminal overlay, so an agent Termic spawns does not silently inherit it.
  • Constant-time token comparison, with backoff on repeated auth failures.
  • Browser requests are refused. Any request carrying an Origin header is rejected outright. A Host outside the loopback names is rejected too, which is the DNS-rebinding case, since that arrives same-origin and therefore carries no Origin. No CORS header is ever emitted, and preflight is never answered usefully.
  • No peer identification is attempted. Logs are telemetry, not an authorisation input.
  • The port is not a secret; the token is.

Last reviewed: August 27, 2026