Simple MCP server for shared terminal sessions using GNU Screen/tmux
This server implements 7 terminal session management tools with adequate naming and descriptions, but has several quality gaps that prevent a higher score. Tool names follow verb_noun conventions (session_create, session_execute, session_send, session_interrupt, session_close, session_list, file_create), which is good. Descriptions are generally present and contextual (e.g., session_execute explicitly distinguishes itself from session_send with use-case guidance). However, input schemas lack formal constraint documentation (no enums for mode parameters, no explicit min/max for numeric parameters like timeout and max_lines), and output schemas are not formally documented. Error handling is minimal, tools return success/error dicts but lack actionable recovery guidance. Parameters like 'timeout' and 'max_lines' have reasonable defaults but no documented constraints (timeout defaults to 30 with no stated range; max_lines defaults to 10 with no explicit upper bound). The file_create tool accepts an optional 'mode' parameter but does not enumerate valid values. Security risks exist: no permission gate on destructive operations (session_close is unprotected), and no audit/logging pattern visible in the tool definitions themselves.
Create a file with content. Automatically handles small and large files.
Close a session
Create a new terminal session. Set open_terminal=False to create without opening.
Execute a command and WAIT for completion (blocking). Best for quick commands (ls, cat, grep, build, test). Returns output + exit code. For interactive/long-running commands (vim, ssh, servers), use session_send instead.
Send Ctrl-C to interrupt a running command. Use when session is stuck or you need to stop a long-running process.
List all active sessions with their current state
Send a command WITHOUT waiting (async/fire-and-forget). Returns immediately. Use for interactive programs (vim, ssh, htop), long-running commands (servers, watch), or when user will monitor terminal. Check progress with session_output.
No formal output schemas documented for any tool. LLMs cannot predict response structure for downstream planning.
Destructive operation (session_close) lacks permission gate, confirmation pattern, or warning. No audit trail or logging visible.
Parameter constraints missing: 'timeout' has no min/max range; 'max_lines' defaults to 10 but no upper bound; 'mode' in file_create accepts arbitrary strings with no enum or regex.
Error handling generic and non-actionable. Errors return simple dicts (success: false, error: '<message>') without recovery guidance. E.g., 'Session not found' does not suggest session_list or session_create.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
session_close description is extremely minimal (16 chars: 'Close a session'). Lacks context on state preservation, side effects, or when to call it.
session_list lacks pagination guidance. No mention of limit or offset parameters despite returning a list of all active sessions.
file_create 'mode' parameter undocumented: no enum, no examples, no format constraint. LLMs may pass invalid file permission modes.