PluginBench
MCP Server
Active
MIT

mcp-hub MCP Server

io.github.ni-c/mcp-hub

What is the mcp-hub MCP server?

Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients

How to install mcp-hub

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • EXTERNAL_URL
    required

    Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)

  • PASSWORD_HASH
    required
    secret

    bcrypt hash of the OAuth login password (htpasswd -bnBC 10 "" 'pw' | tr -d ':\n')

  • CONFIG_PATH

    Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)

  • DATA_PATH

    Directory for the JWT key and OAuth client state; must persist across restarts (default /data)

  • TRUSTED_PROXIES

    Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers

  • PORT

    Listen port

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-hub": {
      "command": "npx",
      "args": [
        "-y",
        "@ni-c/mcp-hub"
      ],
      "env": {
        "EXTERNAL_URL": "<YOUR_EXTERNAL_URL>",
        "PASSWORD_HASH": "<YOUR_PASSWORD_HASH>",
        "CONFIG_PATH": "<YOUR_CONFIG_PATH>",
        "DATA_PATH": "<YOUR_DATA_PATH>",
        "TRUSTED_PROXIES": "<YOUR_TRUSTED_PROXIES>",
        "PORT": "<YOUR_PORT>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp-hub": {
      "command": "npx",
      "args": [
        "-y",
        "@ni-c/mcp-hub"
      ],
      "env": {
        "EXTERNAL_URL": "<YOUR_EXTERNAL_URL>",
        "PASSWORD_HASH": "<YOUR_PASSWORD_HASH>",
        "CONFIG_PATH": "<YOUR_CONFIG_PATH>",
        "DATA_PATH": "<YOUR_DATA_PATH>",
        "TRUSTED_PROXIES": "<YOUR_TRUSTED_PROXIES>",
        "PORT": "<YOUR_PORT>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-hub": {
      "command": "npx",
      "args": [
        "-y",
        "@ni-c/mcp-hub"
      ],
      "env": {
        "EXTERNAL_URL": "<YOUR_EXTERNAL_URL>",
        "PASSWORD_HASH": "<YOUR_PASSWORD_HASH>",
        "CONFIG_PATH": "<YOUR_CONFIG_PATH>",
        "DATA_PATH": "<YOUR_DATA_PATH>",
        "TRUSTED_PROXIES": "<YOUR_TRUSTED_PROXIES>",
        "PORT": "<YOUR_PORT>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "mcp-hub": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@ni-c/mcp-hub"
      ],
      "env": {
        "EXTERNAL_URL": "<YOUR_EXTERNAL_URL>",
        "PASSWORD_HASH": "<YOUR_PASSWORD_HASH>",
        "CONFIG_PATH": "<YOUR_CONFIG_PATH>",
        "DATA_PATH": "<YOUR_DATA_PATH>",
        "TRUSTED_PROXIES": "<YOUR_TRUSTED_PROXIES>",
        "PORT": "<YOUR_PORT>"
      }
    }
  }
}
Claude Code
claude mcp add mcp-hub --env EXTERNAL_URL=<YOUR_EXTERNAL_URL> --env PASSWORD_HASH=<YOUR_PASSWORD_HASH> --env CONFIG_PATH=<YOUR_CONFIG_PATH> --env DATA_PATH=<YOUR_DATA_PATH> --env TRUSTED_PROXIES=<YOUR_TRUSTED_PROXIES> --env PORT=<YOUR_PORT> -- npx -y @ni-c/mcp-hub

Related MCP servers

Browse your Audiobookshelf libraries and keep listening progress, bookmarks and playlists in sync

0
TypeScript
MIT
View repository →

Read-only MCP server for Calibre-Web: library search, browsing and covers via the OPDS feed

0
TypeScript
MIT
View repository →

FreshRSS

Active

MCP server for FreshRSS, the self-hosted RSS feed aggregator

0
TypeScript
MIT
View repository →

Manage DNS zones and records (zonefiles, RRSets, TTL, protection) via the Hetzner Cloud API

0
TypeScript
MIT
View repository →

MCP server for Linkwarden, the self-hosted bookmark manager with page preservation

0
TypeScript
MIT
View repository →

MCP server for Mealie, the self-hosted recipe manager and meal planner

0
TypeScript
MIT
View repository →