Unlisted
Scan MCP registry remote servers for DCR/CIMD support
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Scans the official MCP registry's remote servers for OAuth support, specifically DCR (dynamic client registration) and CIMD (client_id_metadata_document_supported).
collect.ts ──> registry-state blob ──> collect_http.ts ──> probe/*.json ──> dump.ts ──> merged JSON
(page registry) (probe chunks) (per-chunk) (merge + join names)
collect.ts(script, run manually) — pages/v0/servers?limit=100&version=latestwith a 6s timeout, 40s budget, and a resumable cursor saved in theregistry-stateblob. Collects every remote URL with its server name/title/type. Run repeatedly until it logsdone: true.collect_http.ts(HTTP) — probes unique URLs in chunks for OAuth support: MCPinitializePOST, 401 +www-authenticatecheck, protected-resource metadata chain, then authorization-server metadata forregistration_endpoint(DCR) andclient_id_metadata_document_supported(CIMD).GET ?offset=0&n=300— probe URLs[offset, offset+n)→probe/<offset>.json. Repeat untiloffset >= totalUrls.GET ?mode=hosts— buildrecheck-list.json: one representative URL per host that showeddcr|cimd.GET ?mode=recheck&offset=0&n=— re-probe the recheck list →recheck/<offset>.json.
dump.ts(HTTP) — merges all probe chunks and joins back registry names/titles into one JSON array. Reads chunks in parallel (~350ms for 15k results). Query:?set=probe(default) or?set=recheck.
| Key | Contents |
|---|---|
registry-state | registry cursor + all collected entries (name, title, url, type) |
probe/<offset>.json | probe results per chunk |
recheck-list.json | one representative URL per DCR/CIMD host |
recheck/<offset>.json | recheck results per chunk |
url, alive, oauth, dcr, cimd, status, www (www-authenticate header), prm (protected-resource metadata found), metaUrl, registration_endpoint, authorization_endpoint, token_endpoint, issuer, pkce, plus joined names[], titles[], type.
The ?set=probe dump feeds registry-scan-data.ts in stevekrouse/oauth-demos (one entry per hostname, curated hosts excluded). Keep this val separate from oauth-demos: it's an offline batch scraper with its own blob state, while oauth-demos is a live public app.