{"servers":[{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.10.0","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.10.0","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.10.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Which mechanisms a client may use to obtain a client_id: cimd (Client ID Metadata Documents), dcr (RFC 7591 dynamic registration), or both","format":"string","default":"cimd,dcr","name":"CLIENT_REGISTRATION"},{"description":"Comma-separated https origins whose client ID metadata documents are accepted, e.g. https://chatgpt.com; unset admits every https origin","format":"string","name":"CIMD_ALLOWED_ORIGINS"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-26T22:26:18.3082Z","publishedAt":"2026-08-26T22:26:18.3082Z","updatedAt":"2026-08-26T22:26:18.3082Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.11.0","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.11.0","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.11.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Which mechanisms a client may use to obtain a client_id: cimd (Client ID Metadata Documents), dcr (RFC 7591 dynamic registration), or both","format":"string","default":"cimd,dcr","name":"CLIENT_REGISTRATION"},{"description":"Comma-separated https origins whose client ID metadata documents are accepted, e.g. https://chatgpt.com; unset admits every https origin","format":"string","name":"CIMD_ALLOWED_ORIGINS"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-03T12:58:38.005933Z","publishedAt":"2026-09-03T12:58:38.005933Z","updatedAt":"2026-09-03T12:58:38.005933Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.11.1","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.11.1","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.11.1","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Which mechanisms a client may use to obtain a client_id: cimd (Client ID Metadata Documents), dcr (RFC 7591 dynamic registration), or both","format":"string","default":"cimd,dcr","name":"CLIENT_REGISTRATION"},{"description":"Comma-separated https origins whose client ID metadata documents are accepted, e.g. https://chatgpt.com; unset admits every https origin","format":"string","name":"CIMD_ALLOWED_ORIGINS"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-06T11:07:47.022554Z","publishedAt":"2026-09-06T11:07:47.022554Z","updatedAt":"2026-09-06T11:07:47.022554Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.11.2","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.11.2","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.11.2","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Which mechanisms a client may use to obtain a client_id: cimd (Client ID Metadata Documents), dcr (RFC 7591 dynamic registration), or both","format":"string","default":"cimd,dcr","name":"CLIENT_REGISTRATION"},{"description":"Comma-separated https origins whose client ID metadata documents are accepted, e.g. https://chatgpt.com; unset admits every https origin","format":"string","name":"CIMD_ALLOWED_ORIGINS"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-07T19:14:33.550362Z","publishedAt":"2026-09-07T19:14:33.550362Z","updatedAt":"2026-09-07T19:14:33.550362Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.11.3","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.11.3","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.11.3","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Which mechanisms a client may use to obtain a client_id: cimd (Client ID Metadata Documents), dcr (RFC 7591 dynamic registration), or both","format":"string","default":"cimd,dcr","name":"CLIENT_REGISTRATION"},{"description":"Comma-separated https origins whose client ID metadata documents are accepted, e.g. https://chatgpt.com; unset admits every https origin","format":"string","name":"CIMD_ALLOWED_ORIGINS"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-12T11:30:32.453796Z","publishedAt":"2026-09-12T11:30:32.453796Z","updatedAt":"2026-09-12T11:30:32.453796Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.11.4","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.11.4","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.11.4","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Which mechanisms a client may use to obtain a client_id: cimd (Client ID Metadata Documents), dcr (RFC 7591 dynamic registration), or both","format":"string","default":"cimd,dcr","name":"CLIENT_REGISTRATION"},{"description":"Comma-separated https origins whose client ID metadata documents are accepted, e.g. https://chatgpt.com; unset admits every https origin","format":"string","name":"CIMD_ALLOWED_ORIGINS"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-27T11:06:00.509004Z","publishedAt":"2026-09-27T11:06:00.509004Z","updatedAt":"2026-09-27T11:06:00.509004Z","isLatest":true}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container over HTTPS, with a built-in OAuth 2.1 login","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.5.1","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.5.1","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.5.1","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-14T09:24:44.902058Z","publishedAt":"2026-08-14T09:24:44.902058Z","updatedAt":"2026-08-14T09:24:44.902058Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container over HTTPS, with a built-in OAuth 2.1 login","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.6.0","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.6.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.6.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-14T13:04:36.82013Z","publishedAt":"2026-08-14T13:04:36.82013Z","updatedAt":"2026-08-14T13:04:36.82013Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.6.1","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.6.1","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.6.1","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-14T15:02:00.093056Z","publishedAt":"2026-08-14T15:02:00.093056Z","updatedAt":"2026-08-14T15:02:00.093056Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.6.2","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.6.2","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.6.2","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-17T21:02:25.523418Z","publishedAt":"2026-08-17T21:02:25.523418Z","updatedAt":"2026-08-17T21:02:25.523418Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.6.3","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.6.3","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.6.3","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-17T21:26:43.38439Z","publishedAt":"2026-08-17T21:26:43.38439Z","updatedAt":"2026-08-17T21:26:43.38439Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.6.4","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.6.4","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.6.4","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-18T11:15:41.505835Z","publishedAt":"2026-08-18T11:15:41.505835Z","updatedAt":"2026-08-18T11:15:41.505835Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.7.0","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.7.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.7.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-18T15:03:18.836605Z","publishedAt":"2026-08-18T15:03:18.836605Z","updatedAt":"2026-08-18T15:03:18.836605Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.8.0","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.8.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default /config/mcp.json)","format":"string","name":"CONFIG_PATH"},{"description":"Directory for the JWT key and OAuth client state; must persist across restarts (default /data)","format":"string","name":"DATA_PATH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port","format":"number","default":"3000","name":"PORT"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.8.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-18T19:40:52.625962Z","publishedAt":"2026-08-18T19:40:52.625962Z","updatedAt":"2026-08-18T19:40:52.625962Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.9.0","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.9.0","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.9.0","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-19T22:53:57.236116Z","publishedAt":"2026-08-19T22:53:57.236116Z","updatedAt":"2026-08-19T22:53:57.236116Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.9.1","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.9.1","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.9.1","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-19T23:17:57.157617Z","publishedAt":"2026-08-19T23:17:57.157617Z","updatedAt":"2026-08-19T23:17:57.157617Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/mcp-hub","description":"Serve many stdio MCP servers from one container, for ChatGPT, Claude and other MCP clients","title":"mcp-hub","repository":{"url":"https://github.com/ni-c/mcp-hub","source":"github"},"version":"0.9.2","websiteUrl":"https://mcp-hub.ni-c.de","packages":[{"registryType":"npm","identifier":"@ni-c/mcp-hub","version":"0.9.2","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Path to the mcp.json listing the servers to expose, in Claude Code's mcpServers format (default mcp.json in the working directory)","format":"string","name":"CONFIG_PATH"},{"description":"Minutes of inactivity before a server is put to sleep; 0 starts every server at launch and keeps it running (default 60)","format":"number","default":"60","name":"IDLE_TIMEOUT_MINUTES"},{"description":"Tool snapshots of sleeping servers (default .mcp-hub/tool-cache.json beside the config)","format":"string","name":"TOOL_CACHE_PATH"},{"description":"Mirror the hub's log lines into this file; stdout carries the protocol, so logging goes to stderr otherwise","format":"string","name":"LOG_FILE"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/mcp-hub:0.9.2","transport":{"type":"streamable-http","url":"http://localhost:{PORT}/hub"},"environmentVariables":[{"description":"Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)","isRequired":true,"format":"string","name":"EXTERNAL_URL"},{"description":"bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')","isRequired":true,"format":"string","isSecret":true,"name":"PASSWORD_HASH"},{"description":"Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers","format":"string","name":"TRUSTED_PROXIES"},{"description":"Listen port inside the container","format":"number","default":"80","name":"PORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-24T10:02:17.599678Z","publishedAt":"2026-08-24T10:02:17.599678Z","updatedAt":"2026-08-24T10:02:17.599678Z","isLatest":false}}}],"metadata":{"count":17}}
