Octoport
БесплатноНе проверенA self-hosted MCP hub that unifies multiple MCP server configurations behind a single local endpoint, with a web dashboard for management, live tool-call loggin
Описание
A self-hosted MCP hub that unifies multiple MCP server configurations behind a single local endpoint, with a web dashboard for management, live tool-call logging, and per-person access tokens.
README
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 --open
The 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 --remove
Port 6286 is "OCTO" on a phone keypad. Change it with octoport up --port <n>.
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-proxy
Reverse 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-proxy
Then 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 |
|---|---|
octoport up [--open] [--port <n>] [--host <addr>] [--allow-host <h>] [--behind-proxy] |
Start the hub |
octoport autostart [--remove] |
Start at login (launchd/systemd) |
octoport import [--dry-run] |
CLI import (the wizard does this too) |
octoport connect [client] |
Print connection snippets |
octoport logs [--limit <n>] [--jsonl [file]] |
Inspect or export the call log |
octoport token [--rotate] |
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 --open
Установка Octoport
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/nullarch/octoportFAQ
Octoport MCP бесплатный?
Да, Octoport MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Octoport?
Нет, Octoport работает без API-ключей и переменных окружения.
Octoport — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Octoport в Claude Desktop, Claude Code или Cursor?
Открой Octoport на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
автор: duxiaohuiSupabase
Database, auth and storage
автор: SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Octoport with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
