addrbookFor publishers
← The evidence ledger

Evidence row 2594571

Observed , by sync.mcp_registry/1.

Kind
listing
About
source_record mcp_registry:io.github.ni-c/mcp-hub
Recorded
Previous row
#506102
Body SHA-256
db271fb106d4417c72007952e05dc4ae357994618a3bd4ac335b4b13c0d724e4
Leaf
0x5cf29accf152aa4c523edf82b9d080b526def1bb6401c49fb8e895989d692916

What was observed

{
  "endpoints": [
    [
      "web",
      "https://mcp-hub.ni-c.de/"
    ]
  ],
  "name": "mcp-hub",
  "owner_address": null,
  "raw": {
    "_meta": {
      "io.modelcontextprotocol.registry/official": {
        "isLatest": true,
        "publishedAt": "2026-11-03T13:46:35.749504Z",
        "status": "active",
        "statusChangedAt": "2026-11-03T13:46:35.749504Z",
        "updatedAt": "2026-11-03T13:46:35.749504Z"
      }
    },
    "server": {
      "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
      "description": "Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client",
      "name": "io.github.ni-c/mcp-hub",
      "packages": [
        {
          "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"
            },
            {
              "default": "60",
              "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",
              "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"
            }
          ],
          "identifier": "@ni-c/mcp-hub",
          "packageArguments": [
            {
              "type": "positional",
              "value": "--stdio"
            }
          ],
          "registryType": "npm",
          "runtimeHint": "npx",
          "transport": {
            "type": "stdio"
          },
          "version": "0.12.0"
        },
        {
          "environmentVariables": [
            {
              "description": "Public base URL exactly as clients see it, e.g. https://mcp.example.net (no path)",
              "format": "string",
              "isRequired": true,
              "name": "EXTERNAL_URL"
            },
            {
              "description": "bcrypt hash of the OAuth login password (htpasswd -bnBC 10 \"\" 'pw' | tr -d ':\\n')",
              "format": "string",
              "isRequired": true,
              "isSecret": true,
              "name": "PASSWORD_HASH"
            },
            {
              "description": "Set to totp to ask for a one-time code from an authenticator app at every sign-in. Default off.",
              "format": "string",
              "name": "TWO_FACTOR"
            },
            {
              "description": "Base32 secret the authenticator app was set up with (mcp-hub-admin totp init). Read only when TWO_FACTOR is totp.",
              "format": "string",
              "isSecret": true,
              "name": "TOTP_SECRET"
            },
            {
              "description": "Comma-separated IPs/CIDRs of the reverse proxy allowed to set X-Forwarded-* headers",
              "format": "string",
              "name": "TRUSTED_PROXIES"
            },
            {
              "default": "cimd,dcr",
              "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",
              "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"
            },
            {
              "default": "80",
              "description": "Listen port inside the container",
              "format": "number",
              "name": "PORT"
            }
          ],
          "identifier": "ghcr.io/ni-c/mcp-hub:0.12.0",
          "registryType": "oci",
          "transport": {
            "type": "streamable-http",
            "url": "http://localhost:{PORT}/hub"
          }
        }
      ],
      "repository": {
        "source": "github",
        "url": "https://github.com/ni-c/mcp-hub"
      },
      "title": "mcp-hub",
      "version": "0.12.0",
      "websiteUrl": "https://mcp-hub.ni-c.de"
    }
  },
  "source": "mcp_registry",
  "summary": "Many stdio MCP servers from one container, published over HTTPS with OAuth 2.1 for any MCP client"
}

What the leaf hashes

{"body":"db271fb106d4417c72007952e05dc4ae357994618a3bd4ac335b4b13c0d724e4","id":2594571,"kind":"listing","method":"sync.mcp_registry/1","observed_us":1793715571635248,"prev":506102,"subject":"mcp_registry:io.github.ni-c/mcp-hub","subject_kind":"source_record"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (425475 rows).

  1. 0x5cf277f9a98626c93933898123cc69c1df7c11de29de2c1a5da85fda766afda0
  2. 0x3c83a83b520ce0f2205ecb4246339bd5f46420ffa4f4b847efc276ac95ba7fc0
  3. 0xa7a523b431f0c6a911a1936a08b301727fb3fda45b9022692a8ec3a06f90a67f
  4. 0x5196c87475b4a42e16d68fc941b8dd819656507e759277866a46917aab8bb739
  5. 0x41e70504678e27bd631ba08567b2ccd3ae4863a3d2ecce545630aadf8097e2f9
  6. 0x11738f9819e6de966d6ed3ec9e68f19d5501741bbc18a2fa6db53f5f60508da9
  7. 0xc10578828f75bd5a63f56f49663b69030b7d0cfd62d02a09ca5f02d594a80e96
  8. 0x82f022ea55feaff3db462bd088f7e1c5644b17507dd0af058423865a3e7203dc
  9. 0x3bbf0878ac9121d2473b6f6688b3938d0b5c414f441aa2b4073a5f8c9402325b
  10. 0xcca2c8e7aa1f1e5a3f13fb7afdf5428163c1a4f518b7b4f4054669284b5e776d
  11. 0x2c9f1ddd5a12b4c2d756fc23e068c113e1b29aaf47e2f1efb756b10a4be3a39a
  12. 0xc9cb46de0fb34249d46d050d7b3c6e9eb235979a2c666a5e730bbfb605a8d465
  13. 0xcf11475fb1d88adbcfc7a6c6c088c0d1cc115e211d125d8b50181219cb4beecc
  14. 0x1fc4191e8f35bfa53de7e0451b776edb79a6c6dcdf333b4de5afdb414a516e3f
  15. 0x335134861d623e850e919233efd5afeff49bc2ffa02948458dea325cdabfc928
  16. 0xd3872af0d8c282b0d088e008b24701ec7576ad8e40ceab245546a2e300818868
  17. 0x3ef2d6c56d2bc5990e646c07605e90ed24d1c642cbcca8f60a35422b8b7981ee
  18. 0x717b5d7cbc24826c5b1f7b7433bf30b76e9ba1370476af4e1b494a5211897cc3
  19. 0xe35032d4b064b015fe60638756eeb0bc24e7c7943586468d33349341ee0ed3d6
Day root
0xb646ffa569e24bf8336b0a15a9d98d0a2f1239f58e10c2b18a9d22e43343566a
Chained
0x35e926359fd19031c6b5e08fb3b44f2524386a57c8fdd353336c185603f53d43
Published
On Arc Testnet, block 70601990: 0xa5f9dadba13cde129126b950e64b815e6833cb8ff53b75026c9dbe769c3768c7

How to check it · This row as JSON