tunnels.io

Official registry Other

Read a tunnels.io account and put local ports online. Lists only the tools the token was granted.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

MCPB package https://github.com/tunnels-io/tunnels-mcp/releases/download/v0.0.2/tunnels-mcp-0.0.2.mcpb

Environment variables

  • TUNNELS_TOKEN required secret A tunnels.io token, starting tnl_. Create one at tunnels.io/account/tokens under "Connect an AI assistant".
  • TUNNELS_API API base URL.
  • TUNNELS_CLI Path to the tunnels CLI. start_tunnel and stop_tunnel need it.

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. tunnels-mcp
  2. Install
  3. Token
  4. Client setup
  5. Tools
  6. Token handling
  7. Build
  8. Release
  9. Licence

tunnels-mcp

MCP server for tunnels.io.

It runs locally, holds one CLI token, and gives an assistant read access to the account. It can also open a tunnel.

Install

Download a binary for your platform from the releases page, or build it:

go install github.com/tunnels-io/tunnels-mcp/cmd/tunnels-mcp@v0.0.2

Clients that take MCP bundles, such as Claude Desktop, can install tunnels-mcp-<version>.mcpb from the same page. It asks for the token.

The server is listed in the MCP Registry as io.github.tunnels-io/tunnels-mcp.

Token

Create one at tunnels.io/account/tokens. Tick the permissions you want.

Skipping a permission is not a broken tool. The server reads the token's permissions at startup and lists only the tools that work.

An older all-access token (*) works for everything except billing, domains and cloud apps. Those three services refuse *, so the server does not list their tools for such a token. Make a token on the page above to reach them.

TUNNELS_TOKEN     required, starts tnl_
TUNNELS_API       default https://tunnels.io
TUNNELS_CLI       default "tunnels" on PATH
TUNNELS_INSPECT   unset. The CLI inspector is off; set an address to enable it.

A config file works too, at ~/.config/tunnels/mcp.json:

{ "token": "tnl_..." }

The environment wins.

Client setup

{
  "mcpServers": {
    "tunnels": {
      "command": "tunnels-mcp",
      "env": { "TUNNELS_TOKEN": "tnl_..." }
    }
  }
}

Tools

ToolPermission
list_tunnelstunnels:read
get_usageusage:read
get_metricsusage:read
get_accountaccount:read
list_tokenstokens:read
list_invoicesbilling:read
list_domainsregistrar:read
list_notificationsnotifications:read
list_cloud_appscloud:read
start_tunnelnone
stop_tunnelnone

Reads only, apart from the last two. Those shell out to the tunnels CLI, which must be on PATH. No tool changes a plan, buys a domain or deploys anything.

start_tunnel takes http (the default, served as HTTPS on the public URL) or tcp.

Token handling

The token goes to tunnels.io in a Bearer header, and to the CLI through the environment. Never a command line. Never a log. Never a tool result.

Error bodies are redacted before they are shown.

The server contacts tunnels.io and nothing else.

Build

make check
make build

No dependencies.

Release

Push a tag such as v0.0.2. The release workflow builds six binaries and the MCPB bundle, creates the GitHub release, and publishes server.json to the MCP Registry. To build the same files locally, on macOS:

make release V=0.0.2

Licence

MIT. See LICENSE.

Frequently asked questions

What is tunnels.io?

Read a tunnels.io account and put local ports online. Lists only the tools the token was granted.

How do I install tunnels.io?

Follow the installation steps in its documentation, shown on this page and in its repository.

Does tunnels.io need an API key?

Yes. It expects TUNNELS_TOKEN, which you set in its configuration.

Is tunnels.io open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains tunnels.io?

It is published by tunnels-io. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.