❌ Without Untun MCP
Local development can be frustrating when you need to expose your server to the internet:
- ❌ Complex tunnel setup and command-line arguments
- ❌ Hard to track which tunnels are running across different terminal sessions
- ❌ No easy way to manage multiple tunnels from a single interface
✅ With Untun MCP
Untun MCP creates and manages secure tunnels directly from your AI assistant:
- 1️⃣ Simply tell your AI assistant to create a tunnel
- 2️⃣ Get a public URL within seconds
- 3️⃣ Manage all your tunnels with simple natural language commands
No complex CLI commands to remember. No more lost tunnels. Easy management of multiple tunnels.
⚠️ Disclaimer
This project uses the untun package from npm but is not officially affiliated with, endorsed by, or connected to Cloudflare or UnJS. This is an independent, community-developed MCP wrapper around the untun CLI tool.
?️ Getting Started
Requirements
- Node.js >= v18.0.0
- MCP-compatible client (Cursor, Claude Desktop, VS Code, etc.)
untun
CLI tool (installed automatically as needed)
Install in Cursor
Go to: Settings
-> Cursor Settings
-> MCP
-> Add new global MCP server
Paste the following configuration into your Cursor ~/.cursor/mcp.json
file:
{
"mcpServers": {
"untun": {
"command": "npx",
"args": ["-y", "@minte-app/untun-mcp@latest"]
}
}
}
Install in VS Code
Add this to your VS Code MCP config file:
{
"servers": {
"Untun": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@minte-app/untun-mcp@latest"]
}
}
}
Install in Claude Desktop
Add this to your Claude Desktop claude_desktop_config.json
file:
{
"mcpServers": {
"Untun": {
"command": "npx",
"args": ["-y", "@minte-app/untun-mcp@latest"]
}
}
}
? How to Use
Ask your AI assistant to create a tunnel with natural language:
Create a tunnel to my localhost:3000 server
Check your running tunnels:
Show me all my active tunnels
Stop a specific tunnel:
Stop the tunnel to localhost:3000
Available Tools
start_tunnel
: Creates a secure tunnel from a public internet address to your local serverurl
(required): The local URL to expose (e.g., http://localhost:3000)-
name
(optional): Custom name for the tunnel -
stop_tunnel
: Stops a running tunnel or all local tunnels -
name
(optional): Name of a specific tunnel to stop -
list_tunnels
: Lists all active tunnels including their status and details
Troubleshooting
Tunnel Not Starting
If your tunnel doesn t start, try these steps:
- Make sure your local server is running
- Check if there s already a tunnel running for that port
- Use
list_tunnels
to check the status of all tunnels
Remote Tunnels
Tunnels are tracked by hostname. If you see "remote" tunnels that can t be stopped, they are likely running on another machine. You ll need to stop them from the original machine.
Development
Clone the project and install dependencies:
npm install
Build:
npm run build
License
MIT
[
{
"description": "Creates a secure tunnel from a public internet address to your local server. This tool will: - Start an untun tunnel process connecting to your specified local URL - Return a public URL that can be used to access your local server - Allow you to name your tunnel for easier management After starting a tunnel, wait a few seconds and use list_tunnels to check its status and get the public URL.",
"name": "start_tunnel",
"parameters": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Optional custom name for the tunnel. If not provided, default will be used.",
"type": "string"
},
"url": {
"description": "The local URL to expose (e.g., http://localhost:3000)",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
},
{
"description": "Stops a running tunnel or all local tunnels. This tool will: - Stop a specific tunnel identified by name (if provided) - Stop all local tunnels (if no name is provided) - Only affects tunnels running on the current machine - Will not affect tunnels running on other machines After stopping tunnels, you can use list_tunnels to confirm theyve been terminated.",
"name": "stop_tunnel",
"parameters": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Optional name of a specific tunnel to stop. If not provided, all local tunnels will be stopped.",
"type": "string"
}
},
"required": null,
"type": "object"
}
},
{
"description": "Lists all active tunnels including their status and details. This tool will: - Show all tunnels in the registry - Auto-detect any running tunnels not in the registry - Display tunnel status, name, URLs, and runtime information - Indicate whether tunnels are local or running on remote machines Use this tool to check the status of your tunnels and get their public URLs.",
"name": "list_tunnels",
"parameters": {
"additionalProperties": false,
"properties": {},
"required": null,
"type": "object"
}
}
]