Create SSH Tunnels to your remote hosts and host as an MCP Server for Agentic AI!
Project description
Tunnel Manager
Version: 0.0.2
This project provides a Python-based Tunnel class for secure SSH connections and file transfers,
integrated with a FastMCP server (tunnel_mcp.py) to expose these capabilities as tools for AI-driven workflows.
The implementation supports both standard SSH (e.g., for local networks) and
Teleport's secure access platform, leveraging the paramiko library for SSH operations.
Features
Tunnel Class
- Purpose: Facilitates secure SSH connections and file transfers to remote hosts.
- Key Functionality:
- Run Remote Commands: Execute shell commands on a remote host and retrieve output.
- File Upload/Download: Transfer files to/from a remote host using SFTP.
- Teleport Support: Seamlessly integrates with Teleport's certificate-based authentication and proxying.
- Configuration Flexibility: Loads SSH settings from
~/.ssh/configby default, with optional overrides for identity files, certificates, and proxy commands. - Logging: Optional file-based logging for debugging and auditing.
FastMCP Server
- Purpose: Exposes
Tunnelclass functionality as a FastMCP server, enabling AI tools to perform remote operations programmatically. - Tools Provided:
run_remote_command: Runs a shell command on a remote host and returns output.upload_file: Uploads a file to a remote host via SFTP.download_file: Downloads a file from a remote host via SFTP.
- Transport Options: Supports
stdio(for local scripting) andhttp(for networked access) transport modes. - Progress Reporting: Integrates with FastMCP's
Contextfor progress updates during operations. - Logging: Comprehensive logging to a file (
tunnel_mcp.logby default).
Usage:
Tunnel Class
The Tunnel class can be used standalone for SSH operations. Example:
from tunnel_manager import Tunnel
# Initialize with a remote host (assumes ~/.ssh/config or explicit params)
tunnel = Tunnel(
remote_host="example.com",
identity_file="/path/to/id_rsa",
certificate_file="/path/to/cert", # Optional for Teleport
proxy_command="tsh proxy ssh %h", # Optional for Teleport
log_file="tunnel.log"
)
# Connect and run a command
tunnel.connect()
out, err = tunnel.run_command("ls -la /tmp")
print(f"Output: {out}\nError: {err}")
# Upload a file
tunnel.send_file("/local/file.txt", "/remote/file.txt")
# Download a file
tunnel.receive_file("/remote/file.txt", "/local/downloaded.txt")
# Close the connection
tunnel.close()
FastMCP Server
The FastMCP server exposes the Tunnel functionality as AI-accessible tools. Start the server with:
python tunnel_mcp.py --transport stdio
Or for HTTP transport:
python tunnel_mcp.py --transport http --host 127.0.0.1 --port 8080
Installation Instructions:
Use with AI
Configure mcp.json
{
"mcpServers": {
"tunnel_manager": {
"command": "uv",
"args": [
"run",
"--with",
"tunnel-manager",
"tunnel-manager-mcp"
],
"env": {
"TUNNEL_REMOTE_HOST": "user@192.168.1.12", // Optional
"TUNNEL_REMOTE_PORT": "22", // Optional
"TUNNEL_IDENTITY_FILE": "", // Optional
"TUNNEL_CERTIFICATE": "", // Optional
"TUNNEL_PROXY_COMMAND": "", // Optional
"TUNNEL_LOG_FILE": "~./tunnel_log.txt" // Optional
},
"timeout": 200000
}
}
}
Deploy MCP Server as a container
docker pull knucklessg1/tunnel-manager:latest
Modify the compose.yml
services:
tunnel-manager:
image: knucklessg1/tunnel-manager:latest
environment:
- HOST=0.0.0.0
- PORT=8021
ports:
- 8021:8021
Install Python Package
python -m pip install tunnel-manager
or
uv pip install --upgrade tunnel-manager
Repository Owners:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tunnel_manager-0.0.2.tar.gz.
File metadata
- Download URL: tunnel_manager-0.0.2.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
087b81f58b09c10bc8e44099f80e0a029aeae1048610e5b52c9ea75fa2ff8b77
|
|
| MD5 |
4fb645a934c6a20e8d8cb95df56f2543
|
|
| BLAKE2b-256 |
518cf77d750fe32cbe7555e7cc10b622ed4b2f8012aa18e0b5bb4068073d4ce0
|
File details
Details for the file tunnel_manager-0.0.2-py3-none-any.whl.
File metadata
- Download URL: tunnel_manager-0.0.2-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9adaf71159408ed5bf454355bc3f28564b3201309ac36bf1200cad13ae6472b2
|
|
| MD5 |
78c43ef3ddb75131260ce261387a6111
|
|
| BLAKE2b-256 |
173270b3a438c029dfab85372a0fa7d0f252f3d386c4cca1a66ed0a7dd9b1199
|