tunnel-manager
Create SSH Tunnels to your remote hosts and host as an MCP Server for Agentic AI!
Install / Use
claude mcp add Knuckles-Team -- npx -y github:Knuckles-Team/tunnel-managerIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of tunnel-manager
tunnel-manager scores 80/100 on our quality scale, 3605th of 4,662 Development & Engineering skills we index.
Its MCP Server is 30 KB long, well organised into 44 sections with 8 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so tunnel-manager is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 87/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-11-01. Automated pattern scan on 2026-11-01. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
tunnel-manager compared with similar skills
All 4 of these similar skills score higher than tunnel-manager; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| tunnel-manager (this skill)by Knuckles-Team | 80 | 3 | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 107.3k | 7d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 107.1k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.5k | 1d ago | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 68.5k | today | CLAUDE.md |
Frequently asked questions
- How do I install tunnel-manager?
- Run
claude mcp add Knuckles-Team -- npx -y github:Knuckles-Team/tunnel-manager. The install tabs above show the steps for each supported agent. - Which AI agents does tunnel-manager work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is tunnel-manager safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 87/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is tunnel-manager still maintained?
- The repository was last updated today, so tunnel-manager is actively maintained.
Skill content
View source on GitHubTunnel Manager
CLI or API | MCP | Agent
Documentation — Installation, deployment, usage across the API, CLI, and MCP and agent interfaces are maintained in the official documentation.
Overview
Tunnel Manager is a production-grade Agent and Model Context Protocol (MCP) server designed to interface directly with Create SSH Tunnels to the operator's 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: Complete 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 the operator's remote hosts and host as an MCP Server for Agentic AI! API. The operator 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 use 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.
<!-- MCP-TOOLS-TABLE:START -->Condensed action-routed tools (MCP_TOOL_MODE=condensed)
| MCP Tool | Toggle Env Var | Description |
|----------|----------------|-------------|
| tm_files | FILETOOL | Advanced file operations on remote hosts. |
| tm_hosts | HOSTTOOL | Manage the local host alias inventory. |
| tm_inventory | INVENTORYTOOL | Bulk inventory operations against YAML host groups. |
| tm_operations | OPERATIONSTOOL | Operation lifecycle and session management. |
| tm_remote | REMOTETOOL | Single-host SSH operations with shared connection params. |
| tm_security | SECURITYTOOL | Security scanning and compliance. |
| tm_system | SYSTEMTOOL | Remote system intelligence via SSH. |
| tunnel_ingest_hosts | INGESTTOOL | 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)
<details>
<summary>6 per-operation tools — one per public API method (click to expand)</summary>
| MCP Tool | Toggle Env Var | Description |
|----------|----------------|-------------|
| tunnel_manager_add_host | HOST_MANAGERTOOL | Invoke the add_host operation. |
| tunnel_manager_get_host | HOST_MANAGERTOOL | Get a host config by alias, denying an alias the caller isn't entitled to. |
| tunnel_manager_list_hosts | HOST_MANAGERTOOL | List the host aliases the CALLER is entitled to, secrets redacted. |
| tunnel_manager_load_inventory | HOST_MANAGERTOOL | Invoke the load_inventory operation. |
| tunnel_manager_remove_host | HOST_MANAGERTOOL | Invoke the remove_host operation. |
| tunnel_manager_save_inventory | HOST_MANAGERTOOL | 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 the operator to restrict the set of exposed tools to prevent blowing up the LLM's context window.
The operator 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 the operator's 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
<!-- MCP-CONFIG-EXAMPLES:START -->Install the connector-focused
[mcp]extra. Examples usetunnel-manager[mcp]to add FastMCP / FastAPI throughscion-sdk[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": "node-a,node-b,node-c,node-d",
"TUNNEL_MAX_THREADS": "6",
"TUNNEL_PARALLEL": "False",
"TUNNEL_REMOTE_PORT": "22"
}
}
}
}
Runtime references require an alias-aware launcher such as Arbora. 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": "node-a,node-b,node-c,node-d",
"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=node-a,node-b,node-c,node-d \
-e TUNNEL_MAX_THREADS=6 \
-e TUNNEL_PARALLEL=False \
-e TUNNEL_REMOTE_PORT=22 \
registry.example.invalid/tunnel-manager@sha256:<digest> tunnel-manager-mcp
For 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.
Identity and host entitlements
Over stdio, and over HTTP started with --auth-type none (for example behind
arbora), every caller is the trusted local actor and reaches every inventory
alias. With auth configured, a caller reaches only the aliases its roles or
groups grant (ssh:<alias>, ssh:* or admin). A refusal names its cause:
anonymous caller, unauthenticated, no tenant, or not entitled to ssh:<alias>.
See scion-sdk's connector servers: caller identity.
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
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
107.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
107.1kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
78.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
68.5kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
