Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273import axios from 'axios'import { logForDebugging } from '../../utils/debug.js'import { errorMessage } from '../../utils/errors.js'
type RegistryServer = { server: { remotes?: Array<{ url: string }> }}
type RegistryResponse = { servers: RegistryServer[]}
// URLs stripped of query string and trailing slash — matches the normalization// done by getLoggingSafeMcpBaseUrl so direct Set.has() lookup works.let officialUrls: Set<string> | undefined = undefined
function normalizeUrl(url: string): string | undefined { try { const u = new URL(url) u.search = '' return u.toString().replace(/\/$/, '') } catch { return undefined }}
/** * Fire-and-forget fetch of the official MCP registry. * Populates officialUrls for isOfficialMcpUrl lookups. */export async function prefetchOfficialMcpUrls(): Promise<void> { if (process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC) { return }
try { const response = await axios.get<RegistryResponse>( 'https://api.anthropic.com/mcp-registry/v0/servers?version=latest&visibility=commercial', { timeout: 5000 }, )
const urls = new Set<string>() for (const entry of response.data.servers) { for (const remote of entry.server.remotes ?? []) { const normalized = normalizeUrl(remote.url) if (normalized) { urls.add(normalized) } } } officialUrls = urls logForDebugging(`[mcp-registry] Loaded ${urls.size} official MCP URLs`) } catch (error) { logForDebugging(`Failed to fetch MCP registry: ${errorMessage(error)}`, { level: 'error', }) }}
/** * Returns true iff the given (already-normalized via getLoggingSafeMcpBaseUrl) * URL is in the official MCP registry. Undefined registry → false (fail-closed). */export function isOfficialMcpUrl(normalizedUrl: string): boolean { return officialUrls?.has(normalizedUrl) ?? false}
export function resetOfficialMcpUrlsForTesting(): void { officialUrls = undefined}