An MCP server for terminal session management and command execution, providing tools to create, control, and interact with terminal sessions across multiple backends (tmux, herdr)
Olympus provides 34 well-named tools with consistent verb_noun patterns (start_session, list_sessions, run_command). All tools have descriptions (10 - 200 chars, within baseline 194 avg). Input schemas are present and typed for all tools. However, descriptions are often terse (e.g., 'List all terminal sessions on the backend' = 42 chars), lacking context on WHEN to use each tool or dependencies between them. Parameter descriptions are present but minimal, many lack format/constraint guidance (e.g., 'cols' and 'rows' lack min/max bounds). Output schemas are not documented in the visible code. Error handling is basic (backend.Errorf exists but recovery guidance is absent). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Composition is strong, tools chain well (e.g., start_session → run_command → screen). Security: no secrets in params (good), but no audit trail or permission gates visible.
Get the capabilities of the backend
Create a view onto a session
Run diagnostics on the server and backend
Get the exit status of a completed command run
Bring the server's focus onto a workspace, tab or pane
Focus a view
List all agents on the server
Output schemas not documented. Tool descriptions state what is returned (e.g., 'List all terminal sessions') but do not specify the structure of the response. LLMs cannot plan downstream tool calls without knowing what fields to extract.
Numeric parameters lack bounds. 'cols', 'rows', 'seconds', 'interval_ms', 'lines', 'presses', 'interrupt_timeout_seconds' have no min/max constraints in descriptions. LLMs may pass absurd values (e.g., cols=999999) causing timeouts or errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
List all clients connected to the server
List all session kinds available on the backend
List panes on the backend, optionally limited to one session
List all available servers
List all terminal sessions on the backend
List all views on the backend
Create a new terminal session that must not already exist
Paste text into a session
Poll the status and output of a detached command run
Press named keys in a session
Rename a session, window, tab or pane
Run a command in a session and wait for it to complete
Capture the screen of one or more sessions
Scroll a view's history
Report where the server is running and whether it is inside an Olympus session
Send text to a session with optional verification and submission
Get the environment variables the server is running with
Get detailed information about a terminal session
Get, set, or wait for a session's status
Start a command in a session without waiting for it to complete
Start a server by name
Start or reuse a terminal session with the given name
Stop a server by name
Stop and end a terminal session
Type text into a session's input line
Get the version of the server
Wait for a regular expression pattern to appear on a session's screen
No tool annotations despite clear risk levels. Tools marked DESTRUCTIVE (stop_session, stop_server) and WRITE (type_text, send_text) lack readOnlyHint, destructiveHint, or idempotentHint annotations. LLMs cannot distinguish safe from risky operations.
Minimal error recovery guidance. backend.Errorf exists but tool descriptions do not explain what to do on failure. E.g., 'run_command' does not say 'If timeout, try increasing timeout_seconds or breaking the command into smaller steps.'
Terse descriptions lack context on tool selection. Many descriptions are 40 - 60 chars (e.g., 'List all terminal sessions on the backend'). They do not explain WHEN to use this tool vs. similar ones, or what prerequisites exist. Baseline is 194 chars.