Connect your agent to Metraipolis (MCP)

Metraipolis is a free, read-only MCP server: search ~1.5 million open documents and the HTTP RFCs 9110–9114, read the source, and get a ready citation with a stable URL. No account, key or token. Endpoint (streamable HTTP, POST, stateless):

https://metraipolis.com/mcp

By default the server lists six tools: search_archive, read_document, cite_source, search_clauses, get_clause, get_rfc_status. All other tools (HTTP trace checks, developer checks, city tools) stay callable by name; to list them all use https://metraipolis.com/mcp?tools=all.

Claude Code

claude mcp add --transport http metraipolis https://metraipolis.com/mcp

Claude Desktop / claude.ai

Settings → Connectors → Add custom connector, URL https://metraipolis.com/mcp. Older Desktop versions, in claude_desktop_config.json:

{
  "mcpServers": {
    "metraipolis": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://metraipolis.com/mcp"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "metraipolis": {
      "url": "https://metraipolis.com/mcp"
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "metraipolis": {
      "type": "http",
      "url": "https://metraipolis.com/mcp"
    }
  }
}

Windsurf (~/.codeium/windsurf/mcp_config.json)

{
  "mcpServers": {
    "metraipolis": {
      "serverUrl": "https://metraipolis.com/mcp"
    }
  }
}

OpenAI Codex CLI (~/.codex/config.toml)

[mcp_servers.metraipolis]
url = "https://metraipolis.com/mcp"

Gemini CLI (~/.gemini/settings.json)

{
  "mcpServers": {
    "metraipolis": {
      "httpUrl": "https://metraipolis.com/mcp"
    }
  }
}

Any HTTP client

curl -s https://metraipolis.com/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_clauses","arguments":{"query":"must-revalidate when origin is unreachable","limit":3}}}'

Three real tasks (tested on this server)

  1. Can a cache serve a stale response marked must-revalidate when the origin is down?

    search_clauses({"query":"must-revalidate when origin is unreachable","limit":3})
    get_clause({"id":"rfc9111-s5.2.2.2-c2"})
    cite_source({"id":"rfc9111-s5.2.2.2-c2"})

    Result: No. RFC 9111 §5.2.2.2: the cache MUST NOT reuse the stale response without successful validation, even when disconnected; the adjacent rule recommends a 504. Citable page: https://metraipolis.com/clausola/rfc9111-s5.2.2.2-c2.

  2. If a request carries both If-None-Match and If-Modified-Since, which one wins?

    search_clauses({"query":"If-None-Match and If-Modified-Since together","limit":3})
    cite_source({"id":"rfc9110-s13.1.3-c1"})

    Result: If-None-Match: a recipient MUST ignore If-Modified-Since when the request also contains If-None-Match (RFC 9110 §13.1.3). Citable page: https://metraipolis.com/clausola/rfc9110-s13.1.3-c1.

  3. Is CVE-2025-24813 (Apache Tomcat) actively exploited, and what is the required action? Cite the source.

    search_archive({"query":"CVE-2025-24813 Apache Tomcat","limit":3})
    read_document({"document_id":"dc_5a122ec84996"})
    cite_source({"id":"dc_5a122ec84996"})

    Result: Yes: it is in the CISA Known Exploited Vulnerabilities catalog (added 2025-04-01); required action: apply vendor mitigations or discontinue use, due 2025-04-22. Source: CISA KEV (CC0), original at nvd.nist.gov. Citable page: https://metraipolis.com/documento/dc_5a122ec84996.

Good to know