Skip to main content
Glama
s3hq4y
by s3hq4y

Portal

Portal

English · 简体中文

Portal is a VS Code extension that exposes the current workspace as a public MCP endpoint. It is deliberately small: commands and file transfer only.

Connect any MCP client (Claude, ChatGPT, Cursor, a custom agent, curl) to your machine over a tunnel. The agent can run shells and move files. It cannot edit text through MCP tools — there are none.

What you get

Surface

Role

MCP Streamable HTTP

https://<tunnel>/mcp/<token>

File HTTP API

https://<tunnel>/files/<token>/… (same token)

Sidebar + settings

Flat Win10-style panel: start/stop, copy URL, tunnel health

Portal Agent terminal

Optional live mirror of run_command I/O

Related MCP server: local-bridge

MCP tools (exactly five)

Tool

Purpose

run_command

Foreground command. Default timeout 120s (max 600s). Use command + shell, or executable + args (preferred when you do not need shell syntax).

start_command

Start a long-running process. Returns command_id and PID. Up to four concurrent jobs.

read_command

Incremental stdout/stderr by offset. Omit command_id to list retained jobs. Completed records expire after 10 minutes.

stop_command

Stop a background job and its process tree (force skips the 2s graceful window).

file_transfer_info

Public file-API base URL, size limit, and curl examples.

Shells: powershell (Windows default), pwsh, cmd, bash / sh (Git Bash when present). UTF-8 is set up automatically.

Session: reuse the Mcp-Session-Id from initialize. If it is lost or rejected, initialize again — do not invent an ID.

There are no read_file / write_file / edit_file / list_* / search_files tools. Read and write with the shell or the HTTP file API.

File transfer (bidirectional HTTP)

Same tunnel and token as MCP. Default max size: 64 MiB (portal.maxTransferBytes). Uploads replace atomically. Downloads support Range and return SHA-256.

GET    {base}?op=info              capability + workspace
GET    {base}?glob=**/*            list files
GET    {base}/<relpath>            download
HEAD   {base}/<relpath>            metadata
PUT    {base}/<relpath>            upload
DELETE {base}/<relpath>            delete
POST   {base}?op=pack              zip  JSON { "paths": ["src"] }
POST   {base}?op=unpack&dest=.     unzip (raw zip body)

Free ngrok domains need the header ngrok-skip-browser-warning: 1.

# download
curl -fsSL -H "ngrok-skip-browser-warning: 1" \
  "$BASE/README.md" -o README.md

# upload
curl -fsSL -H "ngrok-skip-browser-warning: 1" \
  -T ./photo.png "$BASE/incoming/photo.png"

# pack a folder
curl -fsSL -H "ngrok-skip-browser-warning: 1" \
  -H "Content-Type: application/json" \
  -d '{"paths":["src"]}' "$BASE?op=pack" -o src.zip

Tunnel providers

Provider

URL

Notes

cloudflare-quick (default)

new random trycloudflare.com each start

Fast to try; not stable

cloudflare-named

fixed hostname

Needs stored Tunnel token, public hostname, fixed local port

ngrok-reserved

reserved domain (e.g. *.ngrok-free.dev)

Persistent URL

custom

your command or an existing URL

Placeholders: {{port}} {{token}} {{workspace}}. Empty command + customTunnelUrl = attach mode

Route token is the secret path segment. MCP lives at /mcp/<token>. Leave portal.routeToken empty to generate one on start.

Commands (palette)

  • Portal: Start / Stop

  • Portal: Copy URL

  • Portal: Check Tunnel

  • Portal: Settings

  • Portal: Install cloudflared / Install/Upgrade ngrok

  • Portal: Show Log / Show Agent Terminal

Useful settings: portal.startOnActivation (default on), portal.showCommandsInTerminal, portal.localPort (0 = auto, except named Cloudflare).

Build

Requires Node 18+ and VS Code ^1.95.0.

npm install
npm run build      # esbuild → dist/extension.js
npm run typecheck
npm run package    # .vsix (no bundled node_modules)

Load the packaged VSIX, or run the extension in a desktop VS Code host (extensionKind: ui + workspace).

License

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Connects local tools (browser, shell) to a remote MCP server via reverse-MCP, enabling the server agent to control your local browser and execute shell commands.
    237
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes a local development project as a secure MCP server over a stable HTTPS URL via Cloudflare tunnel, with configurable access permissions and 33 development tools for file, command, Git, and process operations.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables remote MCP clients like ChatGPT to run shell commands and manage files on your local machine via a Cloudflare tunnel, exposing tools for file operations, search, and task management.
    MIT

View all related MCP servers

Related MCP Connectors

  • A MCP server built for developers enabling Git based project management with project and personal…

  • An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform

  • MCP server for interacting with the Supabase platform

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/s3hq4y/portal'

If you have feedback or need assistance with the MCP directory API, please join our Discord server