local-terminal-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LTMCP_HOST | No | HTTP bind host | 127.0.0.1 |
| LTMCP_PORT | No | HTTP bind port | 8000 |
| LTMCP_ROOT | No | Directory the server is confined to | cwd |
| LTMCP_INBOX | No | Staging folder (ideally a repo subdir like incoming) to import files FROM; enables the import tools | |
| LTMCP_TIMEOUT | No | Per-command timeout (seconds) | 120 |
| LTMCP_MCP_PATH | No | Path the MCP endpoint is served at; for path auth, end it with a long random segment | /mcp |
| LTMCP_AUTH_MODE | No | HTTP auth mode: bearer (header) or path (secret in URL) | bearer |
| LTMCP_TRANSPORT | No | Transport mode: stdio or http | stdio |
| LTMCP_AUTH_TOKEN | No | Bearer token (required for bearer mode) | |
| LTMCP_ALLOW_WRITE | No | Enable write_file, write_file_base64, generate_image | false |
| LTMCP_ALLOWED_HOSTS | No | Comma-separated Host header allowlist (e.g. your tunnel hostname) | |
| LTMCP_APPROVALS_DIR | No | Directory to coordinate approvals in file mode | |
| LTMCP_APPROVAL_MODE | No | Ask before running non-allowlisted commands: none/tty/file | none |
| LTMCP_IMAGE_GEN_CMD | No | Local image generator template ({prompt}/{output}); enables generate_image | |
| LTMCP_IMAGE_TIMEOUT | No | Image generation timeout (seconds) | 300 |
| LTMCP_ALLOWLIST_FILE | No | JSON file that "always allow" appends to | |
| LTMCP_ALLOW_COMMANDS | No | Comma-separated allowlist patterns (e.g. git *,rg *) | read-only set |
| LTMCP_INBOX_TTL_DAYS | No | Auto-delete inbox files older than N days (0 = never); use only with a dedicated staging folder | 0 |
| LTMCP_APPROVAL_TIMEOUT | No | Seconds to wait for a decision | 60 |
| LTMCP_MAX_OUTPUT_BYTES | No | Output truncation limit | 100000 |
| LTMCP_CONTAIN_PATH_ARGS | No | Whether to confine command path-args to the root (set to false to disable) | true |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run_commandA | Run a single allowlisted command inside the project root and return its output. Exactly one program per call: pipes, chaining (&&, ;), redirects (>) and command substitution are not allowed. Allowed programs: cat, diff, echo, file, find, git, grep, head, ls, pwd, rg, stat, tail, tree, wc. Optionally set 'cwd' to a subdirectory of the root. |
| read_fileA | Read a UTF-8 text file located inside the project root. |
| list_directoryB | List the entries of a directory inside the project root. |
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 3 tools
The three tools have mostly clear roles, but run_command's allowlist includes cat, ls, find, and grep, which functionally overlaps with read_file and list_directory. An agent could read a file or list a directory via either path, though the dedicated tools are clearly documented as the simpler option.
All three names follow a clean verb_noun snake_case pattern (run_command, read_file, list_directory) with no deviations or mixed conventions.
Three tools is on the lean side, but the server is deliberately a narrow, sandboxed read-only surface, so each tool earns its place and nothing is redundant padding.
The read surface is coherent, but there is no write, create, edit, or delete capability anywhere in the set, and redirects/chaining are blocked in run_command, so agents hit a hard dead end for any mutation task. This may be intentional sandboxing but leaves the lifecycle incomplete.