termio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| spawnC | Spawn a new persistent interactive process (bash, ssh, python, gdb, docker, etc.) in a PTY. Args: command: Command to execute (defaults to platform shell: bash or powershell.exe). name: Optional friendly name for this session (e.g. 'router-ssh'). cwd: Optional working directory. env: Optional environment variables dictionary. rows: Terminal rows (default: 40). cols: Terminal columns (default: 120). |
| serialB | Connect to a hardware or virtual serial device (UART / router console / microcontroller). Args: port: Serial device path (e.g. '/dev/ttyUSB0', 'COM3'). baudrate: Baud rate (e.g. 115200, 9600, 57600). name: Optional friendly name for this session. |
| list_portsA | Enumerate attached physical and virtual serial ports on the host. |
| exec_expectA | Execute a shell, REPL, or bootloader command and automatically wait for prompt to return. Output preserves original terminal stream (including command echo) as a causal anchor for AI analysis. ANSI escape codes are stripped for readability. Returns a structured result with 'success', 'output', 'timeout', 'process_exited', 'exit_code', and 'elapsed_seconds' fields. IMPORTANT: For long-running commands (e.g. apt-get install, make, large file transfers), use send instead to dispatch the command, then poll with read_buffer periodically to check progress. Do NOT use exec_expect for commands that may take more than a few seconds, as it will report a timeout. Args: command: The command line to execute. prompts: Optional list of prompt patterns (defaults to standard shell and REPL prompts). timeout: Maximum seconds to wait for the prompt to return. session_id: Target session ID (defaults to currently active session). |
| expectA | Atomically send an optional command and match incoming stream against prompt patterns. Ideal for multi-step authentication (SSH login/password), prompts, and U-Boot interception. Args: patterns: List of regex/substring patterns to expect (e.g. ['password:', '# ']). command: Optional command/response to send before waiting. timeout: Maximum seconds to wait. Defaults to 10.0s. poll_cmd: Characters to repeatedly send during wait (e.g. ' ' for autoboot intercept). poll_interval: Interval between repeating poll_cmd. Defaults to 0.05s. session_id: Target session ID (defaults to currently active session). |
| sendB | Send raw characters or escape sequences (e.g. '\x03' for Ctrl+C, '\x1b' for Escape, spaces). Args: text: Raw text or escape sequence string. send_enter: If True, appends a newline. session_id: Target session ID (defaults to currently active session). |
| read_bufferA | Read newly accumulated text from the stream buffer without blocking. Args: clear: If True, flushes the read buffer after fetching. session_id: Target session ID (defaults to currently active session). |
| get_historyA | Retrieve recent chronological line history captured by the background daemon. By default, each line is prefixed with an accurate wall-clock timestamp [YYYY-MM-DD HH:MM:SS.mmm] captured at the transport reception level. If a line was split across packets with a pause of >= 50ms (e.g. driver pause, delayed response), the continuation line is prefixed with '↳ ' and tagged with its own timestamp for precise correlation against test framework logs. Args: limit: Number of recent lines to retrieve (default: 50). with_timestamps: If True (default), attaches wall-clock timestamps and continuation symbols on the fly. If False, returns raw clean text lines without timestamps. session_id: Target session ID (defaults to currently active session). |
| list_sessionsA | List all active PTY and Serial sessions with runtime health status. |
| switch_sessionC | Switch the default active session. Args: session_id: Target session ID to make active. |
| close_sessionB | Close and terminate an interactive session. Args: session_id: Target session ID to close (defaults to active session). |
| statusB | Check connection health, buffer statistics, and background daemon status. Args: session_id: Target session ID (defaults to active session). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Several tools have overlapping purposes: exec_expect and expect both execute/match terminal output, while get_history and read_buffer both retrieve output. Descriptions provide guidance, but an agent could still misselect between them.
Most tools follow a snake_case verb_noun pattern (get_history, list_sessions, switch_session, close_session, read_buffer, list_ports). A few single-word names (serial, spawn, send, status) deviate slightly but remain readable and predictable.
12 tools is well within the ideal range for a terminal/serial session management server. Each tool covers a distinct operational area such as session creation, I/O, discovery, and health monitoring.
The surface covers core lifecycle operations: connect/spawn, list, switch, close, send, read, expect/exec, history, ports, and status. Minor gaps exist (e.g., explicit terminal resize or file transfer), but agents can work around them with existing tools.