MCP server for tmux contextual log fetching and pane management
The server defines 3 tools with complete input schemas and descriptions. Tool naming follows verb_noun convention (describe-context, fetch-log, stream-log), though descriptions could be more concise for LLM optimization. Parameters are typed with constraints (enums, min/max for numeric values). However, parameter descriptions are sparse or missing for several fields. Output schemas are not formally documented. The server shows moderate quality, functional but with room for improvement in description depth and output schema documentation.
Return information about active tmux panes. Pass `paneHint` to target a specific id, session, window, or title.
Fetch logs once from a tmux pane or log file. Set `mode: "capture"` with `paneId` for pane output, `mode: "file"` with `filePath` for files. Use `tmux.stream-log` when you need a live stream.
Start or stop a live tmux pane stream. Start with {"mode":"stream","paneId":"%1"} and stop with the returned id/stopToken.
Parameter descriptions are inconsistent and sparse. 'filters' object has nested properties (timeRange, keywords, levels) but no descriptions for parent 'filters' field itself. 'maskPatterns' lacks explanation of regex vs literal string behavior. Enum values in 'stream-log' (start/stop) are described in the tool description rather than parameter description.
Output schemas are not formally documented for any tool. The code shows buildDescribeContextResult, buildFetchLogResult, buildStreamLogResult but these return types are inferred from implementation, not declared in tool metadata. LLMs cannot plan downstream calls without explicit output schema documentation.
Tool descriptions reference related tools ('Use tmux.stream-log when you need a live stream') but assume the LLM knows tool names without formal discovery. No discovery tool (e.g., list-tmux-panes) exists to help agents understand available panes/streams without trial-and-error parameter passing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'paneHint' in describe-context accepts 'pane ID or keyword to prioritize' but does not specify the format: is it '%1', '0', 'session:window.pane'? Enum constraints are absent. This forces LLMs to guess at valid input formats.
fetch-log's 'lines' parameter has min/max (1 - 10000) but no description explaining what it does. The parameter description is missing entirely, only the constraint is visible in schema. LLM guidance is incomplete.
Error handling provides contextual error codes and messages (createErrorResult returns structured error with code and message), but tool descriptions do not explain error conditions or recovery paths. No guidance for 'pane not found' or 'stream already stopped' scenarios.