Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_active_topologyA

Return the currently active lab topology: where the work is performed and which devices and links exist. Settings and the topology YAML are reloaded from disk on every call, so editing lab/settings.yaml takes effect immediately without restarting this server.

get_execution_instructionsA

Return the operating principles, the active scenario, and the active reference knowledge for the current task: how to behave, what to accomplish, and what reusable knowledge is available. Reloaded from disk on every call.

terminal_openA

Open (or reuse) a terminal session for a device in the active topology, launching ssh or telnet inside a dedicated tmux environment. The active topology is reloaded from disk before opening the session. An interactive login prompt from the device itself is answered automatically using the active access-info definition's own private credentials, once it can be safely confirmed to belong to the target device (never a jump host) -- credentials are never returned by this tool or any other. This works for SSH (the client's own password prompt) and for Telnet (a classic-IOS-style Username:/Password: sequence); which one applies depends on the device's own configured transport. A host-key confirmation prompt, or any other situation this cannot safely resolve on its own, is still left for terminal_read()/terminal_send() to handle interactively.

terminal_sendA

Send input to a device's open terminal session. The device must still be present in the active topology, reloaded from disk on every call -- an already-open session does not stay usable if the active topology changes to no longer include this device.

Execution order is fixed and deterministic: if text is given it is sent literally first, then any keys (e.g. "C-c", "Tab", "Up") are sent in the supplied order, then Enter is sent last if enter is true. Nothing is deduplicated: passing keys=["Enter"] together with enter=true sends Enter twice. text is delivered to the pane without ever passing through a subprocess's own argv or appearing in an error message, and this MCP server does not separately log or echo it back in any tool result. It is not hidden from the device's own terminal transcript, though: this project intentionally records the raw pane output via tmux pipe-pane (see show logging), and if the remote endpoint echoes back what it received, that echo may naturally appear in that transcript like any other terminal output.

terminal_readA

Capture recent terminal output for a device, so the caller can inspect the current prompt, command output, a password/interactive prompt, paging state, or unexpected errors. lines limits how much recent scrollback is returned (default 100); the underlying tmux session retains a much larger history buffer. The device must still be present in the active topology, reloaded from disk on every call -- an already-open session does not stay readable if the active topology changes to no longer include this device.

terminal_listA

List every currently managed production terminal session, regardless of whether each device is still present in the active topology -- including a stale session left over from before the active topology changed, so it remains visible and closeable via terminal_close() even though terminal_send()/terminal_read() will refuse to use it. Local validation sessions are never included, regardless of whether a device happens to be named similarly to a validation identifier.

terminal_closeA

Close a device's managed production terminal session. Only ever targets the production session namespace; cannot affect validation sessions. Deliberately does not require the device to still be present in the active topology, so a stale session left over from before the active topology changed can always be closed.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: two retrieve context (topology, instructions) and five handle terminal session lifecycle (open, send, read, list, close). There is no overlap or ambiguity between any of them.

Naming Consistency5/5

Tool names follow a consistent snake_case convention with a clear pattern: `get_*` for information retrieval and `terminal_*` for terminal operations. This makes the naming predictable and easy to navigate.

Tool Count5/5

With 7 tools, the server is well-scoped for its purpose: two context-gathering tools and five terminal management tools cover the necessary actions without unnecessary bloat or gaps.

Completeness5/5

The terminal session lifecycle is fully covered: open, send, read, list, and close. The topology and instructions tools provide sufficient context for the agent to operate. No obvious missing operations exist for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues