octoport
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@octoportshow me the live tool call log"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π octoport
One local MCP endpoint for every AI coding tool. 8 arms, 1 port.
Your MCP servers are configured in four different places β Claude Code, Cursor, Claude Desktop, Windsurf β each with its own copy of the same JSON, the same API keys, the same drift. octoport is a tiny self-hosted hub that pulls them all behind one endpoint: run one command, and manage everything else from the web dashboard.
Claude Code ββ
Cursor ββΌβββΆ http://127.0.0.1:6286/mcp βββΆ all your MCP servers
Windsurf ββ (octoport)Quickstart β one command, then it's all web
npx octoport up --openThe dashboard walks you through the rest:
Import β octoport scans your Claude Code / Claude Desktop / Cursor / Windsurf / VS Code configs and shows every MCP server it found. Pick and import.
Connect β copy one snippet per client (shown in the wizard).
Clean up β remove the now-duplicate direct entries from your client configs. A timestamped backup of every file is written first, and the octoport connection itself is never touched. Restart running clients after.
From then on: add/edit/toggle servers, watch the live tool-call log, create
per-person access tokens, and export JSONL β all in the dashboard. New servers
propagate to every connected client live (tools/list_changed), no restarts.
Until the npm package is published, run from source:
git clone https://github.com/nullarch/octoport && cd octoport && npm install && npm run build && node dist/cli.js up --open
Start at login:
octoport autostart # launchd (macOS) / systemd --user (Linux)
octoport autostart --removePort 6286 is "OCTO" on a phone keypad. Change it with octoport up --port <n>.
Related MCP server: MCPHub
What you get
One endpoint β N clients Γ M servers becomes 1 Γ M.
Live call log β exactly which tools your agents called, with what, how long it took, and which token (person/machine) made the call. SQLite under the hood, JSONL export.
Named access tokens β one per person or machine. Revoking a token kills its live sessions on the spot.
Process supervision β stdio servers run as child processes with crash isolation and backoff restart, plus a restart button in the dashboard.
Local security by default β
127.0.0.1binding, Host/Origin validation (DNS-rebinding protection), and a per-install bearer token baked into every connection snippet. The MCP Inspector RCE (CVE-2025-49596) happened because a localhost tool skipped exactly these three.
Remote access (optional, explicit)
octoport never exposes itself beyond loopback unless you say so, twice.
Recommended: Tailscale. Keep the default loopback bind on the machine that runs octoport, or bind the tailnet address; either way nothing touches the public internet:
octoport up --host 100.x.y.z --allow-host hub.tailnet-name.ts.net --behind-proxyReverse proxy (Caddy) with a real domain. octoport does not terminate TLS β your proxy does:
# Caddyfile
hub.example.com {
reverse_proxy 127.0.0.1:6286
}octoport up --allow-host hub.example.com --behind-proxyThen connect clients with https://hub.example.com/mcp and a token from the
dashboard. Rules enforced at startup: a non-loopback bind refuses to start
without at least one --allow-host and --behind-proxy.
X-Forwarded-Host is deliberately ignored β the allowlist matches the real
Host header.
Small team setup: run octoport on a shared box behind Tailscale, create one named token per teammate in Settings, and the call log becomes a team-level "which agent did what" record.
Honest scope: every token is full-admin. Any token opens the dashboard, reads server configs (including env secrets), and can create or revoke other tokens. Token names exist for log attribution, not access control β hand one out exactly like you'd hand out SSH access to the box.
Commands
Command | What it does |
| Start the hub |
| Start at login (launchd/systemd) |
| CLI import (the wizard does this too) |
| Print connection snippets |
| Inspect or export the call log |
| List tokens / rotate the default token |
What octoport is not
Not an enterprise governance product. No SSO, no SCIM, no compliance claims. It's a personal/small-team tool; the log is yours.
Not a context optimizer for Claude Code. Claude Code ships native MCP tool search; octoport doesn't compete with it.
Not magic. Tool names are namespaced
server__tool(capped at 48 chars with deterministic hashing) and routed through a mapping table β never string-parsed back.
Known limitations (v0.2)
Tools only:
resourcesandpromptsare not yet aggregated.Legacy bidirectional flows (old-spec
sampling/elicitationinitiated by a downstream server) fail with a clear error instead of being relayed.autostartrequires a permanent install (npm i -g octoportor a repo checkout) β refuses to point launchd at an ephemeral npx cache.Windows: hub works,
autostartnot yet.
Maintenance firewall
MIT-licensed, provided as is. No support guarantees, no response-time promises, PRs may or may not be merged, and the project may be archived at any time. If it's useful, use it; if you need guarantees, fork it.
Development
npm install
npm test # 47 tests: unit + E2E (client β hub β fixture stdio server)
npm run build
node dist/cli.js up --openThis server cannot be installed
Maintenance
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
- Flicense-quality-maintenanceMCP Hub aggregates and proxies multiple Model Context Protocol servers into a unified Streamable HTTP interface. It allows users to combine diverse stdio, SSE, and HTTP-based servers while providing tool namespacing, health monitoring, and secure authentication.781
- Flicense-qualityDmaintenanceA centralized management platform that aggregates multiple Model Context Protocol (MCP) servers into a single unified endpoint for AI agents. It provides a web interface for hot-swappable tool management, proxying of existing servers, and AI-powered generation of custom MCP plugins.1
- Alicense-qualityDmaintenanceMCPGate aggregates multiple MCP servers into a single unified endpoint, enabling centralized tool management with granular filtering, automatic namespacing, and observability. Features a real-time web dashboard and optional PostgreSQL-backed audit trails for monitoring and controlling AI tool access across local and remote deployments.10Apache 2.0
- Alicense-qualityAmaintenanceSelf-hosted MCP proxy and aggregation platform. Register multiple upstream MCP servers and expose them through a single unified endpoint with namespace routing, multi-transport support (HTTP/SSE, stdio, OpenAPIβMCP), per-tool overrides, and a web admin UI.16MIT
Related MCP Connectors
Real-time chat hub for AI agents β Claude Code, Cursor, Cline, Codex over MCP or REST.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors β no code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/nullarch/octoport'
If you have feedback or need assistance with the MCP directory API, please join our Discord server