Tunnel Manager
Tunnel Manager is a production-grade MCP server for managing SSH tunnels, remote hosts, and infrastructure operations via AI agents, CLI, or direct API usage.
Host Inventory Management (
tm_hosts): Add, remove, and list SSH host aliases with connection details (hostname, port, user, password, identity file, proxy command).Remote SSH Operations (
tm_remote): Execute shell commands, send/receive files, check SSH connectivity, test key authentication, set up passwordless SSH, copy SSH configs, rotate keys, and remove host keys on individual remote hosts.Bulk Inventory Operations (
tm_inventory): Execute operations across groups of hosts defined in a YAML inventory — configure key auth, bootstrap mesh networks, run commands, copy SSH configs, rotate keys, and transfer files in bulk with parallel execution.Operation Lifecycle Management (
tm_operations): Start, track progress, cancel, and retrieve metrics for long-running operations and active sessions.Remote System Intelligence (
tm_system): Gather system info, discover running services, analyze logs with pattern matching, and map network topology via SSH.Advanced File Operations (
tm_files): Recursive copy/move/delete/chmod/chown, content search, file watching, cross-host diff comparisons, and backups with compression/incremental support.Security Auditing (
tm_security): Conduct security audits, compliance checks (CIS, PCI-DSS, HIPAA), vulnerability scans, and access control audits on remote hosts.Knowledge Graph Ingestion (
tunnel_ingest_hosts): Push SSH inventory into an epistemic knowledge graph, mapping hosts, groups, and SSH keys as typed nodes with relationship links.AI Agent & Enterprise Features: Hosts a Pydantic AI agent with ACP/AG-UI support, Eunomia policy-based authorization, OIDC token delegation, Tool Guard, Prompt Injection Defense, and native OpenTelemetry/Langfuse telemetry.
Provides native OpenTelemetry exports for telemetry and tracing, allowing observability integration with OpenTelemetry-compatible backends.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Tunnel Manageradd host 'dev-server' with IP 192.168.1.10"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tunnel Manager
CLI or API | MCP | Agent
Version: 3.1.0
Documentation — Installation, deployment, usage across the API, CLI, and MCP and agent interfaces are maintained in the official documentation.
Related MCP server: mcp-ssh
Overview
Tunnel Manager is a production-grade Agent and Model Context Protocol (MCP) server designed to interface directly with Create SSH Tunnels to your remote hosts and host as an MCP Server for Agentic AI!.
Key Features
Consolidated Action-Routed MCP Tools: Minimizes token overhead and eliminates tool bloat in LLM contexts by grouping methods into optimized, togglable tool modules.
Enterprise-Grade Security: Comprehensive support for Eunomia policies, OIDC token delegation, and granular execution context tracking.
Integrated Graph Agent: Built-in Pydantic AI agent supporting the Agent Control Protocol (ACP) and standard Web interfaces (AG-UI).
Native Telemetry & Tracing: Out-of-the-box OpenTelemetry exports and native Langfuse tracing.
CLI or API
This agent wraps the Create SSH Tunnels to your remote hosts and host as an MCP Server for Agentic AI! API. You can interact with it programmatically or via its integrated execution entrypoints.
Detailed instructions on how to use the underlying API wrappers, extended schema bindings, and developer SDK references are maintained in docs/index.md.
MCP
This server utilizes dynamic Action-Routed tools to optimize token overhead and maximize IDE compatibility.
Available MCP Tools
Auto-generated from the live MCP server — do not edit by hand.
Condensed action-routed tools (MCP_TOOL_MODE=condensed)
MCP Tool | Toggle Env Var | Description |
|
| Advanced file operations on remote hosts. |
|
| Manage the local host alias inventory. |
|
| Bulk inventory operations against YAML host groups. |
|
| Operation lifecycle and session management. |
|
| Single-host SSH operations with shared connection params. |
|
| Security scanning and compliance. |
|
| Remote system intelligence via SSH. |
|
| List the managed SSH inventory and push it into the epistemic-graph KG. |
Verbose 1:1 API-mapped tools (MCP_TOOL_MODE=verbose or both)
MCP Tool | Toggle Env Var | Description |
|
| Invoke the add_host operation. |
|
| Get a host config by alias, denying an alias the caller isn't entitled to. |
|
| List the host aliases the CALLER is entitled to, secrets redacted. |
|
| Invoke the load_inventory operation. |
|
| Invoke the remove_host operation. |
|
| Invoke the save_inventory operation. |
8 action-routed tool(s) · 6 verbose 1:1 tool(s). Each is enabled unless its <DOMAIN>TOOL toggle is set false; MCP_TOOL_MODE selects the surface (intent default — the six verb-tools, granular set loaded on demand · condensed action-routed · verbose 1:1 · both). Auto-generated — do not edit.
Detailed tool schemas, parameter shapes, and validation constraints are preserved in docs/usage.md.
Dynamic Tool Selection & Visibility
This MCP server supports dynamic toolset selection and visibility filtering at runtime. This allows you to restrict the set of exposed tools in order to prevent blowing up the LLM's context window.
You can configure tool filtering via multiple input channels:
CLI Arguments: Pass
--toolsor--toolsets(or their disabled counterparts--disabled-toolsand--disabled-toolsets) during startup.Environment Variables: Define standard environment variables:
MCP_ENABLED_TOOLS/MCP_DISABLED_TOOLSMCP_ENABLED_TAGS/MCP_DISABLED_TAGS
HTTP SSE Request Headers: Pass custom headers during transport initialization:
x-mcp-enabled-tools/x-mcp-disabled-toolsx-mcp-enabled-tags/x-mcp-disabled-tags
HTTP SSE Request Query Parameters: Append query parameters directly to your transport connection URL:
?tools=tool1,tool2?tags=tag1
When query strings or parameters are supplied, an LLM-free Knowledge Graph resolution layer (using DynamicToolOrchestrator) matches query intents against known tool tags, names, or descriptions, with safe fallback and automated 24-hour background cache refreshing.
MCP Configuration Examples
Install the connector-focused
[mcp]extra. Examples usetunnel-manager[mcp]to add FastMCP / FastAPI throughagent-utilities[mcp]; the required Agent Utilities core still carriesepistemic-graph[full]. The[agent-runtime]extra additionally enables model orchestration.
stdio Transport (local IDEs — Cursor, Claude Desktop, VS Code)
{
"mcpServers": {
"tunnel-manager-mcp": {
"command": "uvx",
"args": [
"--from",
"tunnel-manager[mcp]",
"tunnel-manager-mcp"
],
"env": {
"MCP_TOOL_MODE": "intent",
"FILETOOL": "True",
"HOSTTOOL": "True",
"INGESTTOOL": "True",
"INVENTORYTOOL": "True",
"OPERATIONSTOOL": "True",
"REMOTETOOL": "True",
"SECURITYTOOL": "True",
"SYSTEMTOOL": "True",
"TUNNEL_IDENTITY_FILE": "~/.ssh/id_ed25519",
"TUNNEL_INVENTORY_GROUP": "all",
"TUNNEL_KG_INGEST": "true",
"TUNNEL_KNOWN_HOSTS": "~/.ssh/known_hosts",
"TUNNEL_MANAGER_HEALTH_AGGREGATE_S": "3600",
"TUNNEL_MANAGER_HEALTH_INGEST": "true",
"TUNNEL_MANAGER_HOSTS": "r510,r710,r820,rw710",
"TUNNEL_MAX_THREADS": "6",
"TUNNEL_PARALLEL": "False",
"TUNNEL_REMOTE_PORT": "22"
}
}
}
}Runtime references require an alias-aware launcher such as GraphOS. Other launchers must omit those entries and inject the resolved values through their own runtime secret boundary.
Streamable-HTTP Transport (networked / production)
{
"mcpServers": {
"tunnel-manager-mcp": {
"command": "uvx",
"args": [
"--from",
"tunnel-manager[mcp]",
"tunnel-manager-mcp",
"--transport",
"streamable-http",
"--port",
"8000"
],
"env": {
"TRANSPORT": "streamable-http",
"HOST": "127.0.0.1",
"PORT": "8000",
"MCP_TOOL_MODE": "intent",
"FILETOOL": "True",
"HOSTTOOL": "True",
"INGESTTOOL": "True",
"INVENTORYTOOL": "True",
"OPERATIONSTOOL": "True",
"REMOTETOOL": "True",
"SECURITYTOOL": "True",
"SYSTEMTOOL": "True",
"TUNNEL_IDENTITY_FILE": "~/.ssh/id_ed25519",
"TUNNEL_INVENTORY_GROUP": "all",
"TUNNEL_KG_INGEST": "true",
"TUNNEL_KNOWN_HOSTS": "~/.ssh/known_hosts",
"TUNNEL_MANAGER_HEALTH_AGGREGATE_S": "3600",
"TUNNEL_MANAGER_HEALTH_INGEST": "true",
"TUNNEL_MANAGER_HOSTS": "r510,r710,r820,rw710",
"TUNNEL_MAX_THREADS": "6",
"TUNNEL_PARALLEL": "False",
"TUNNEL_REMOTE_PORT": "22"
}
}
}
}Alternatively, connect to a pre-deployed Streamable-HTTP instance by url:
{
"mcpServers": {
"tunnel-manager-mcp": {
"url": "http://localhost:8000/tunnel-manager-mcp/mcp"
}
}
}Run a reviewed container image as a least-privilege stdio child (no listener or published port):
docker run -i --rm \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges \
--pids-limit=256 \
--tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
-e TRANSPORT=stdio \
-e MCP_TOOL_MODE=intent \
-e FILETOOL=True \
-e HOSTTOOL=True \
-e INGESTTOOL=True \
-e INVENTORYTOOL=True \
-e OPERATIONSTOOL=True \
-e REMOTETOOL=True \
-e SECURITYTOOL=True \
-e SYSTEMTOOL=True \
-e TUNNEL_IDENTITY_FILE=~/.ssh/id_ed25519 \
-e TUNNEL_INVENTORY_GROUP=all \
-e TUNNEL_KG_INGEST=true \
-e TUNNEL_KNOWN_HOSTS=~/.ssh/known_hosts \
-e TUNNEL_MANAGER_HEALTH_AGGREGATE_S=3600 \
-e TUNNEL_MANAGER_HEALTH_INGEST=true \
-e TUNNEL_MANAGER_HOSTS=r510,r710,r820,rw710 \
-e TUNNEL_MAX_THREADS=6 \
-e TUNNEL_PARALLEL=False \
-e TUNNEL_REMOTE_PORT=22 \
registry.example.invalid/tunnel-manager@sha256:<digest> tunnel-manager-mcpFor containerized network HTTP, supply an authenticated TLS ingress (or
direct server TLS), exact MCP_ALLOWED_HOSTS, and an exact trusted-proxy
CIDR policy through the operator-owned deployment profile. The generator
does not emit an unauthenticated non-loopback listener.
Auto-generated from the code-read env surface (MCP_TOOL_MODE + package vars) — do not edit.
Additional Deployment Options
tunnel-manager can run as a local stdio process or container, or behind a remote
network boundary. The
Deployment guide carries
the detailed transport contract.
Local container — launch a reviewed immutable image as a least-privilege stdio child with no listener or published port.
Remote URL — connect through an operator-supplied authenticated HTTPS ingress. Keep its URL, outbound identity references, trust profile, and exact
MCP_ALLOWED_HOSTSinAgentConfig.
Inventory
tunnel-manager works from a single shared YAML inventory that maps short host
aliases (e.g. edge-node) to their SSH connection details. Every ecosystem surface reads
the same file — the HostManager API, the tunnel-manager CLI, the MCP server,
container-manager-mcp (its cm_* host aliases), and the ssh-bootstrap skill — so
you define your fleet once.
Location —
~/.config/agent-utilities/inventory.yml(.ymlpreferred). A legacyinventory.yamlat the same path is still read when no.ymlexists, so existing installs keep working. Override withTUNNEL_INVENTORY.Manage it with the
inventorysubcommand:tunnel-manager inventory init # write a commented inventory.yml template (--force to overwrite) tunnel-manager inventory doctor # validate hosts/groups; --fix migrates legacy .yaml -> .yml tunnel-manager inventory show # print the resolved path + host/group summary
Full schema, every host field, the copy-paste template, and override options live in the Inventory guide.
Environment Variables
Package environment variables
Variable | Example | Description |
|
| |
|
| |
|
| options: stdio, streamable-http, sse |
|
| |
|
| |
| secret-injected | |
| secret-injected | |
|
| |
|
| options: none, embedded, remote |
|
| |
|
| |
|
| |
|
| |
|
| |
| — | default remote host (e.g. 198.51.100.10) |
|
| default SSH port |
| — | default SSH username |
| — | env://, vault://, secret://, or sqlite:// reference |
|
| independently verified server host keys |
| — | path to an SSH certificate file |
| — | SSH ProxyCommand for jump-host/bastion connections |
| — | path to the inventory file (defaults to XDG config path) |
|
| inventory host group to target |
|
| run host operations in parallel |
|
| max worker threads when TUNNEL_PARALLEL=True |
|
| |
|
| |
|
| |
|
| |
|
| |
| — | base config dir (defaults to ~/.config) for inventory resolution |
|
| Grouped condensed-surface toggles, one per register__tools registrar. |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| KG-ingest tools (list the SSH inventory into epistemic-graph) |
|
| default-on best-effort inventory ingest on |
|
| default-on best-effort network-signal trend ingestion |
|
| window (s) over which samples distill to ONE :HealthTrend node/host/signal |
|
| comma-separated inventory aliases to probe/derive over (default: full inventory) |
| — | best-effort webhook for network-anomaly notifications |
Inherited agent-utilities variables (apply to every connector)
Variable | Example | Description |
|
| Tool surface: |
| — | Comma-separated tool allow-list |
| — | Comma-separated tool deny-list |
| — | Comma-separated tag allow-list |
| — | Comma-separated tag deny-list |
| — | Outbound MCP child auth: |
| — | OIDC client id (service-account auth) |
|
| Runtime secret reference for the OIDC service account |
| — | HTTP Basic username ( |
|
| Runtime secret reference for HTTP Basic auth ( |
|
| URL of the MCP server the agent connects to |
|
| LLM provider for the agent |
|
| Model id for the agent |
|
| Serve the AG-UI web interface |
44 package + 14 inherited variable(s). Auto-generated from .env.example + the shared agent-utilities set — do not edit.
Every variable the server reads, grouped by purpose. See .env.example
for a copy-paste starting point.
SSH connection & credentials
Variable | Description | Default |
| Path to the SSH private key |
|
| SSH username | — |
|
| — |
| Independently verified SSH server-key trust store |
|
| Path to an SSH certificate | — |
| Default remote host | — |
| Default remote SSH port |
|
| SSH | — |
Inventory & parallelism
Variable | Description | Default |
| Path to the shared inventory ( |
|
| Default inventory host group | — |
| Run bulk operations in parallel | — |
| Max concurrent SSH worker threads | — |
| Base config dir used to resolve the inventory |
|
MCP server / transport
Variable | Description | Default |
|
|
|
| Bind host (HTTP transports) |
|
| Bind port (HTTP transports) |
|
| Tool surface: |
|
| Comma-separated tool allow/deny list | — |
| Comma-separated tag allow/deny list | — |
| Verbose logging |
|
| Unbuffered stdout (recommended in containers) |
|
Tool toggles
Each action-routed tool can be disabled individually via its toggle env var (set to false).
The full list is in the Available MCP Tools table above
(HOSTTOOL, REMOTETOOL, INVENTORYTOOL, OPERATIONSTOOL,
SYSTEMTOOL, FILETOOL, SECURITYTOOL).
Telemetry & governance
Variable | Description | Default |
| Enable OpenTelemetry export |
|
| OTLP collector endpoint | — |
| OTLP auth keys | — |
| OTLP protocol (e.g. | — |
| Authorization mode: |
|
| Embedded policy file |
|
| Remote Eunomia server URL | — |
Agent runtime (full [agent] runtime only)
Variable | Description | Default |
| URL of the MCP server the agent connects to |
|
| LLM provider (e.g. |
|
| Model id (e.g. |
|
| Serve the AG-UI web interface |
|
Agent
This repository features a fully integrated Pydantic AI Graph Agent. It communicates over the Agent Control Protocol (ACP) and interacts seamlessly with the Agent Web UI (AG-UI) and Terminal interface.
Running the Agent CLI
To start the interactive command-line agent:
# Set credentials
export TUNNEL_IDENTITY_FILE="your_value"
export DEBUG="your_value"
export PYTHONUNBUFFERED="your_value"
# Run the agent server
tunnel-manager-agent --provider openai --model-id gpt-4oDocker Compose Orchestration
The following docker/agent.compose.yml configures the Agent, Web UI, and Terminal Interface together:
version: '3.8'
services:
tunnel-manager-mcp:
image: example/tunnel-manager:mcp
container_name: tunnel-manager-mcp
hostname: tunnel-manager-mcp
restart: always
env_file:
- ../.env
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=8000
- TRANSPORT=streamable-http
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
tunnel-manager-agent:
image: example/tunnel-manager@sha256:<digest>
container_name: tunnel-manager-agent
hostname: tunnel-manager-agent
restart: always
depends_on:
- tunnel-manager-mcp
env_file:
- ../.env
command: [ "tunnel-manager-agent" ]
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=9002
- MCP_URL=http://tunnel-manager-mcp:8000/mcp
- PROVIDER=${PROVIDER:-openai}
- MODEL_ID=${MODEL_ID:-gpt-4o}
- ENABLE_WEB_UI=True
- ENABLE_OTEL=True
ports:
- "9002:9002"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9002/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
Detailed graph node architecture explanations, custom skill configurations, and agentic trace guides are available in docs/deployment.md.
Security & Governance
Built directly upon the enterprise-ready agent-utilities core, standard security parameters are fully supported:
Access Control & Policy Enforcement
Eunomia Policies: Fine-grained, policy-driven tool authorization. Supports
none, localembedded(mcp_policies.json), or centralizedremotemodes.OIDC Token Delegation: Compliant with RFC 8693 token exchange for flowing authenticating user credentials from Web UI / ACP → Agent → MCP.
Scoped Credentials: Execution context runs restricted to the specific caller identity.
Runtime Security Grid
Feature | Functionality | Enablement |
Tool Guard | Sensitivity inspection with human-in-the-loop validation | Enabled by default |
Prompt Injection Defense | Input scanning, repetition monitoring, and recursive loop blocks | Enabled by default |
Context Safety Guard | Stuck-loop detectors and contextual overflow preemptive alerts | Enabled by default |
Installation
Pick the extra that matches what you want to run:
Extra | Installs | Use when |
| Connector-focused MCP server ( | You only run the MCP server (smallest install / image) |
| Agent runtime ( | You run the integrated agent |
| Everything ( | Development / both surfaces |
# Connector-focused MCP server (includes the shared graph engine)
uv pip install "tunnel-manager[mcp]"
# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "tunnel-manager[agent]"
# Everything (development)
uv pip install "tunnel-manager[all]" # or: python -m pip install "tunnel-manager[all]"Container images (:mcp vs :agent)
One multi-stage docker/Dockerfile builds two right-sized images, selected by --target:
Image tag | Build target | Contents | Entrypoint |
|
|
|
|
|
|
|
|
docker build --target mcp -t example/tunnel-manager:mcp docker/ # connector-focused MCP server
docker build --target agent -t example/tunnel-manager:agent-local docker/ # agent runtimedocker/mcp.compose.yml runs the connector-focused :mcp server; docker/agent.compose.yml runs the
agent (immutable agent digest) with a co-located :mcp sidecar.
Knowledge-graph database (epistemic-graph)
Both [mcp] and [agent] carry the epistemic-graph engine through the required
Agent Utilities core dependency (epistemic-graph[full]). The [mcp] extra keeps
the server connector-focused; [agent] additionally enables model orchestration. Local
deployments can use the bundled engine. For production or shared state, run
epistemic-graph as a dedicated database service and configure the runtime to use it.
Deployment recipes (single-node + Raft HA), connection configuration, and architecture
diagrams are documented in the
epistemic-graph deployment guide.
Documentation
The complete documentation is published as the official documentation site and is the recommended reference for installation, deployment, and day-to-day operation.
Page | Contents |
pip, source, extras, prebuilt Docker image | |
the shared | |
run the MCP and agent servers, Compose, Caddy + Technitium, env config | |
the MCP tools, the | |
ecosystem role, distributed SSH swarm scaling, MCP configuration | |
certificate, proxy and cross-OS connection model | |
concept registry ( |
AGENTS.md is the canonical contributor/agent guidance.
Maintainers
Maintained by the project contributor team. Package metadata intentionally uses a role address rather than personal identity.
Contribute
Contributions are welcome! Please ensure code quality by executing local checks before submitting pull requests:
Format code using
ruff format .Lint code using
ruff check .Validate type-safety with
mypy .Execute test suites using
pytest
Deploy with agent-utilities-deployment
Provision this package with the consolidated agent-utilities-deployment
workflow. It selects an installed-package, editable-source, or immutable-container
path; records only runtime secret and TLS-profile references in AgentConfig; and
runs doctor, registration, policy, observability, and rollback gates. Ask your agent
to "deploy tunnel-manager with agent-utilities-deployment".
Install mode | Command |
Installed package |
|
Editable source |
|
Immutable container | deploy |
The repository embeds no deployment profile, credential value, certificate path, or
environment-specific endpoint. Supply those at runtime through AgentConfig and the
configured secret provider.
Governed capability contract
This package ships a compact canonical skill surface with specialist procedures
kept as referenced workflows. The current MCP tools, skill metadata,
connector_manifest.yml, ontology, mappings, shapes, fixtures, migrations,
tool-schema fingerprints, and certification metadata form one versioned
capability contract. Validate them together; do not rely on stale tool names or
historical per-task skill wrappers.
Runtime endpoints, credentials, certificate trust, tenant identity, retention, and observability policy are deployment inputs and are never packaged values. See Configuration, trust, and privacy before enabling a network transport, connector ingestion, GraphOS delegation, or trace export.
Available Tools
8 toolstm_filesAdvanced File OperationsCDestructive
Advanced file operations on remote hosts.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Permission mode (recursive_ops/chmod). | 755 |
| group | No | Group (recursive_ops/chown). | |
| host1 | No | First host (diff_compare). | |
| host2 | No | Second host (diff_compare). | |
| owner | No | Owner (recursive_ops/chown). | |
| action | Yes | Action: 'recursive_ops', 'content_search', 'watch', 'diff_compare', 'backup' | |
| source | No | Source path (recursive_ops). | |
| pattern | No | Search pattern (content_search). | |
| duration | No | Monitor duration secs (watch). | |
| password | No | SSH password. | |
| username | No | SSH username. | |
| file_path | No | File path to compare (diff_compare). | |
| operation | No | Operation type: copy, move, delete, list, chmod, chown (recursive_ops). | |
| recursive | No | Recursive search (content_search). | |
| backup_dest | No | Backup destination (backup). | |
| compression | No | Enable compression (backup). | |
| destination | No | Destination path (recursive_ops/copy/move). | |
| incremental | No | Incremental backup (backup). | |
| max_results | No | Max results (content_search). | |
| remote_host | No | Remote host. | |
| watch_paths | No | Paths to monitor (watch). | |
| backup_paths | No | Paths to backup (backup). | |
| search_paths | No | Directories to search (content_search). | |
| identity_file | No | SSH identity file path. | |
| case_sensitive | No | Case-sensitive (content_search). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral context beyond the annotations. Annotations already indicate destructiveHint=true, but the description fails to mention that operations may modify or delete files, require SSH credentials, or have side effects. With annotations present, the description should still provide safety or prerequisite details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), but it fails to convey essential information. Conciseness should not come at the cost of usefulness. Every sentence should add value; this sentence is generic and does not help the agent select or invoke the tool effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (25 parameters, 5 actions, output schema exists), the description is severely incomplete. It does not mention the supported actions, prerequisites (SSH credentials), or how to combine parameters. An output schema exists but is not referenced. The description leaves the agent with no guidance on how to operate the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100% with parameter descriptions, the tool's description does not summarize which parameters correspond to which action. With 25 parameters and multiple actions, the description should group parameters or list actions, but it just repeats the title. Baseline for high coverage is 3, but the lack of structural guidance reduces clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Advanced file operations on remote hosts', which indicates the tool's domain (files on remote hosts) and implies operations, but lacks a specific verb-resource pair. It distinguishes from sibling tools like tm_hosts or tm_inventory, so a clear domain is established.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not specify contexts like 'for file management, use this; for host management, use tm_hosts'. An agent must infer from the name and schema alone, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tm_hostsHost ManagementCDestructive
Manage the local host alias inventory.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SSH port. | |
| user | No | Username. | |
| alias | No | Host alias. | |
| action | Yes | Action: 'list', 'add', 'remove' | |
| hostname | No | Real hostname or IP. | |
| password | No | Password (if no key). | |
| identity_file | No | Path to private key. | |
| proxy_command | No | Proxy command. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint=true, but the description does not elaborate on the destructive nature (e.g., removing hosts permanently) or other behavioral traits like authentication requirements or system changes. It adds no value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but under-specified. It lacks critical information such as the available actions or the fact that it modifies local configuration. It is appropriately sized for a simple tool but incomplete for the complexity of 8 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, a required 'action' parameter, and a destructive annotation, the description is too minimal. It does not mention the three actions (list, add, remove) or the potential impacts. Even with an output schema, the description fails to provide essential operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so each parameter is already documented. The description ('Manage...') does not add any additional meaning or context about how parameters relate. The baseline is 3 since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manage the local host alias inventory,' which identifies the resource but uses the vague verb 'manage.' It does not specify the actions (list, add, remove) or how the tool operates. The title 'Host Management' provides context, but the description alone is insufficient to clearly distinguish the tool's specific function from siblings like tm_inventory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as tm_remote or tunnel_ingest_hosts. There are no explicit when-to-use or when-not-to-use conditions, leaving the agent to infer usage from the action parameter and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tm_inventoryInventory OperationsCDestructive
Bulk inventory operations against YAML host groups.
| Name | Required | Description | Default |
|---|---|---|---|
| cfg | No | Local SSH config path (copy_ssh_config). | |
| cmd | No | Shell command (run_command). | |
| key | No | Shared key path (configure_key_auth). | /app/.ssh/id_ed25519 |
| group | No | Target group. | all |
| lpath | No | Local file path (send_file). | |
| rpath | No | Remote file path (send_file/receive_file). | |
| action | Yes | Action: 'configure_key_auth', 'mesh_bootstrap', 'run_command', 'copy_ssh_config', 'rotate_key', 'send_file', 'receive_file' | |
| key_pfx | No | Prefix for new keys (rotate_key). | /root/.ssh/id_ |
| rmt_cfg | No | Remote config path (copy_ssh_config). | /root/.ssh/config |
| timeout | No | Command timeout in seconds. | |
| key_type | No | Key type: rsa or ed25519. | ed25519 |
| parallel | No | Run parallel. | |
| inventory | No | YAML inventory path (default: $XDG_CONFIG_HOME/agent-utilities/inventory.yaml). | /root/.config/agent-utilities/inventory.yml |
| max_threads | No | Max threads. | |
| lpath_prefix | No | Local dir prefix (receive_file). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint=true, but the description adds no behavioral context beyond that. It does not disclose what is destroyed, safety precautions, or any side effects. The description relies solely on the annotations for transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is terse (one sentence) and front-loaded with key terms. However, given the tool's complexity (15 parameters, multiple actions), it is too brief and could benefit from a structured overview.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and 15 parameters, the description fails to provide a high-level explanation of the tool's actions or typical use cases. It is insufficient for an agent to fully understand the tool's capabilities without inspecting the schema extensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter has a description. The tool-level description adds no additional meaning beyond the schema. It is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Bulk inventory operations against YAML host groups' is somewhat vague, using the generic term 'operations' without specifying the types of actions. The title 'Inventory Operations' also lacks specificity. It indicates the resource (YAML host groups) and bulk nature, but does not clearly define the tool's purpose relative to siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like tm_hosts or tm_operations. The description does not mention context, prerequisites, or exclusions, leaving the agent to infer usage from the action parameter alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tm_operationsOperation ManagementCDestructive
Operation lifecycle and session management.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: 'start', 'get_progress', 'cancel', 'get_metrics', 'list_sessions' | |
| details | No | Additional details (start). | |
| total_steps | No | Total steps (start). | |
| operation_id | No | Operation ID (get_progress/cancel/get_metrics). | |
| operation_type | No | Type of operation (start). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description does not need to repeat that. However, it adds no further behavioral context beyond 'lifecycle and session management,' which is adequately covered by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 5 words, which is too terse. While concise, it sacrifices informativeness and does not earn its place given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and annotations, the description is too brief to cover the tool's multiple actions and use cases. It fails to explain how to use the action parameter or what each action entails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information, so it meets the baseline without adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool manages operation lifecycle and sessions, which is a general purpose. It distinguishes from siblings like tm_files or tm_hosts, but lacks specificity about the exact actions (start, cancel, etc.) that are available.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, context for each action, or when to prefer sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tm_remoteRemote SSH OperationsCDestructive
Single-host SSH operations with shared connection params.
| Name | Required | Description | Default |
|---|---|---|---|
| cfg | No | SSH config path. | /root/.ssh/config |
| cmd | No | Shell command (run_command). | |
| key | No | Key path (test_key_auth/setup_passwordless). | |
| host | No | Remote host. | |
| lcfg | No | Local SSH config (copy_ssh_config). | |
| port | No | Port. | |
| rcfg | No | Remote SSH config (copy_ssh_config). | /root/.ssh/config |
| user | No | Username. | |
| lpath | No | Local file path (send_file/receive_file). | |
| proxy | No | Teleport proxy. | |
| rpath | No | Remote file path (send_file/receive_file). | |
| action | Yes | Action: 'run_command', 'send_file', 'receive_file', 'check_ssh', 'test_key_auth', 'setup_passwordless', 'copy_ssh_config', 'rotate_key', 'remove_host_key' | |
| id_file | No | Private key path. | /app/.ssh/id_ed25519 |
| new_key | No | New private key path (rotate_key). | |
| timeout | No | Command timeout in seconds. | |
| key_type | No | Key type: rsa or ed25519 (setup_passwordless/rotate_key). | ed25519 |
| password | No | Password. | |
| certificate | No | Teleport certificate. | |
| known_hosts | No | Known hosts path (remove_host_key). | /root/.ssh/known_hosts |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the agent knows operations may be destructive. The description adds no further behavioral context (e.g., that actions like remove_host_key modify remote host keys, or that some operations require authentication). Minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but overly minimal. It lacks front-loading of key information (e.g., list of actions or critical parameters). Every word earns its place, but additional context would improve usability without adding bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 19 parameters and multiple actions, the description is too sparse. It does not explain the variety of actions, how to use shared parameters, or typical usage patterns. Even with an output schema, the description fails to provide sufficient context for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 19 parameters have brief descriptions). The tool description adds no extra meaning; it only says 'shared connection params.' Baseline is 3 as schema does the heavy lifting, but description does not enhance understanding of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Single-host SSH operations with shared connection params,' which clearly indicates the tool is for SSH actions on one remote host. It distinguishes from siblings like tm_files (local files) or tm_hosts (host management) by specifying SSH and single-host focus. However, it could list the specific actions (e.g., run_command, file transfer) for greater clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It only implies usage for SSH-related tasks on a single host. No exclusion criteria, prerequisites, or comparisons with sibling tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tm_securitySecurity AuditingCRead-onlyIdempotent
Security scanning and compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Security areas to audit (security_audit). | |
| action | Yes | Action: 'security_audit', 'compliance_check', 'vulnerability_scan', 'access_control_audit' | |
| password | No | SSH password. | |
| standard | No | Compliance standard: cis_benchmark, pci_dss, hipaa (compliance_check). | cis_benchmark |
| username | No | SSH username. | |
| scan_type | No | Scan type: basic, package, config (vulnerability_scan). | basic |
| remote_host | Yes | Remote host to audit. | |
| identity_file | No | SSH identity file path. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no behavioral context beyond confirming a read-only, idempotent operation. It fails to disclose that the tool requires SSH access (evident from schema but unmentioned) or to elaborate on side effects of scanning. The description does not add value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (5 words), which is concise but risks under-specification. It front-loads no critical details like supported actions or security implications. While brevity is valued, the lack of structure (no bullet points, no separation of concerns) reduces clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown) and 8 parameters, the description covers almost nothing. It omits the tool's return values, SSH authentication requirements, and the specific actions it can perform. A complete description should at least hint at the action types (e.g., 'supports security_audit, compliance_check, etc.') to unify with the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the structured data already documents each parameter's meaning. The description 'Security scanning and compliance' adds no additional semantics for parameters. Baseline 3 applies since the description does not compensate or elaborate beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Security scanning and compliance' broadly matches the tool name and title, but it lacks a specific verb+resource combination. It vaguely groups scanning and compliance without defining distinct outcomes. Sibling tools (e.g., tm_files, tm_remote) imply a security focus, but the description does not differentiate this tool from potential security-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention when not to use it, prerequisites, or preferred contexts. For a tool requiring SSH credentials and offering multiple action types, this omission hampers correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tm_systemSystem IntelligenceARead-onlyIdempotent
Remote system intelligence via SSH.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: 'get_info', 'discover_services', 'analyze_logs', 'network_topology' | |
| password | No | SSH password. | |
| patterns | No | Search patterns (analyze_logs). | |
| username | No | SSH username. | |
| log_paths | No | Log file paths (analyze_logs). | |
| remote_host | Yes | Remote host. | |
| identity_file | No | SSH identity file path. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that it uses SSH for intelligence, which aligns but doesn't elaborate on behaviors like connection handling or authentication requirements. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose. It is concise and avoids fluff, though slightly more context could improve it without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, annotations covering safety, and full schema coverage, the description is adequate but lacks details on SSH prerequisites, security considerations, or limitations. It could be more complete without being verbose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 7 parameters described. The description itself adds no additional parameter-level meaning beyond what's already in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Remote system intelligence via SSH' clearly states the tool's purpose: to gather intelligence from remote systems over SSH. This verb+resource pattern effectively distinguishes it from sibling tools like tm_files (file operations) or tm_hosts (host management).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance on when to use this tool versus alternatives. It does not specify prerequisites, exclusions, or context. The name and description imply it's for system intelligence, but explicit usage guidance is lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tunnel_ingest_hostsIngest Hosts to Knowledge GraphCRead-onlyIdempotent
List the managed SSH inventory and push it into the epistemic-graph KG.
Maps each alias → a typed :Host node (+ :HostGroup / :SshKey and
their :inGroup / :usesKey links). Best-effort: no-ops cleanly when no
KG engine is reachable.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | HostGroup name to attach the ingested hosts to. | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's claim to 'push it into the epistemic-graph KG' suggests a write operation, contradicting the annotation readOnlyHint=true. Annotations indicate no modifications, while the description implies data ingestion. This is a clear annotation contradiction, lowering the score to 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence stating the core purpose and the second providing behavioral detail. Every word is necessary, and critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and schema coverage is high, the description covers the main action and best-effort behavior. However, it fails to explain the group parameter's role and does not differentiate from sibling tools, leaving gaps for an agent choosing among related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, so baseline is 3. The description does not add any meaning beyond the schema's description of the 'group' parameter; it omits explaining its role in attaching hosts to a host group.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'List the managed SSH inventory and push it into the epistemic-graph KG.' This clearly identifies the verb and resource. However, it does not explicitly differentiate itself from sibling tools like tm_inventory or tm_hosts, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Best-effort: no-ops cleanly when no KG engine is reachable,' which implies safe usage but does not specify when to use this tool versus alternatives like tm_inventory for direct inventory listing or tm_hosts for host management. No explicit when-not or alternative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v2.0.1- First observed
tm_files - First observed
tm_hosts - First observed
tm_inventory - First observed
tm_operations - First observed
tm_remote - First observed
tm_security - First observed
tm_system - First observed
tunnel_ingest_hosts
TDQS
Scored across 8 tools
Most tools have distinct purposes (e.g., files, security, system intelligence), but tm_hosts and tm_inventory overlap in managing host inventory, and tm_remote may conflict with tm_files and tm_system. The outlier tunnel_ingest_hosts is distinct but not clearly related.
Seven tools use the 'tm_' prefix, but one uses 'tunnel_', breaking consistency. The naming pattern is noun-based without clear verb-noun structure, which is acceptable but not ideal.
Eight tools is a well-scoped set for remote host management, covering operations, inventory, security, and system intelligence without being overwhelming.
Covers file operations, SSH sessions, inventory, security, and system intelligence. Minor gaps like individual host CRUD (e.g., create/delete alias) might exist, but bulk operations and KG ingestion fill some needs.
Maintenance
Related MCP Connectors
Run commands and read/write files on your servers over Termalin's keyless tunnels (hosted MCP).
Secure MCP server for exploring incwo CRM data, documents, and email workflows.
Related MCP Servers
- AlicenseBqualityAmaintenanceA server that enables secure interaction with remote SSH hosts through standardized MCP interface, providing functions like listing hosts, executing commands, and transferring files using native SSH tools.733598MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for SSH remote execution, file transfer, and file editing with automatic backup/trash and ~/.ssh/config integration.1171MIT
- AlicenseAqualityCmaintenanceMCP server for managing remote servers via SSH, enabling command execution, file transfer, rsync, tunnels, health checks, backups, and database operations.174251MIT
- AlicenseNot gradedqualityBmaintenanceMCP server providing safe, persistent SSH sessions to remote machines with multi-hop ProxyJump tunneling, SFTP file transfer, and stored host profiles.MIT