API e dati

Tutto nell’elenco è pubblico e leggibile dalle macchine: un’API nel formato del registro ufficiale MCP, un indice di ricerca JSON, ogni scheda in JSON e Markdown, più llms.txt, un feed e le sitemap. Niente chiave, niente registrazione.

In breve

URLCosa ottieniIn cache per
/v0.1/serversLe schede nel formato del registro ufficiale MCP, a pagine. Dettagli5 minuti
/api/index.jsonTutte le schede in un unico array compatto. Dettagli5 minuti
/i/{slug}.jsonUna scheda, con le sue azioni di configurazione. Dettagli10 minuti
/i/{slug}.mdUna scheda in Markdown. Dettagli15 minuti
/llms.txtL’elenco come lista per i modelli linguistici.1 ora
/feed.xmlFeed Atom delle 50 schede più recenti.15 minuti
/sitemap.xmlIndice delle sitemap: pagine, categorie e schede, in tutte le lingue.15 minuti
/mcpIl server MCP di mcp.tc. DocumentazioneNessuna cache

Tutto è in sola lettura e pubblico. Niente chiave, niente account, niente costi. I formati per le macchine sono indipendenti dalla lingua: servono il testo inglese delle schede e non hanno prefisso di lingua.

API compatibile con il registro

https://mcp.tc/v0.1/ è una copia in sola lettura dell’API di lettura del registro ufficiale MCP (versione 0.1, schema server.json 2025-12-11), riempita con le schede approvate di mcp.tc. Un client che accetta l’URL di un registro personalizzato può sfogliare l’elenco e installare da lì.

GET /v0.1/servers

Server ordinati per nome, 30 per pagina se non imposti limit (da 1 a 100). Rimanda metadata.nextCursor come cursor per la pagina successiva. search tiene i server il cui nome, titolo, slug o fornitore contiene ogni parola (l’API ufficiale cerca solo nel nome). updated_since accetta un’ora RFC 3339, la include nel conteggio e restituisce anche le schede rimosse da allora. version (latest o una versione) e include_deleted funzionano come nell’API ufficiale.

GET /v0.1/servers/{name}/versions

Le versioni di un server. Ogni scheda ne ha esattamente una. Codifica il nome nell’URL, come in /v0.1/servers/tc.mcp%2Fdeepwiki/versions.

GET /v0.1/servers/{name}/versions/latest

Un server. Al posto di latest funziona anche un numero di versione esatto.

GET /v0.1/ping, /v0.1/health, /v0.1/version

Stato del servizio e informazioni sulla build, come nell’API ufficiale.

Una pagina di risultati ha questa forma:

GET /v0.1/servers
{
  "servers": [
    {
      "server": { "name": "…", "version": "…", … },
      "_meta": {
        "tc.mcp/listing": {
          "link": "https://mcp.tc/i/…",
          "slug": "…",
          "category": "…",
          "verified": true,
          "auth": "none",
          "status": "active",
          "publishedAt": "…",
          "updatedAt": "…"
        }
      }
    }
  ],
  "metadata": { "count": 30, "nextCursor": "…" }
}

Ed ecco cosa contiene server per due schede, così come l’API le serve adesso:

Server remoto

server (tc.mcp/deepwiki)
{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "tc.mcp/deepwiki",
  "description": "Ask questions about any public GitHub repository and read its AI-generated DeepWiki documentation.",
  "title": "DeepWiki",
  "version": "2.14.3",
  "websiteUrl": "https://docs.devin.ai/work-with-devin/deepwiki-mcp",
  "icons": [
    {
      "src": "https://mcp.tc/media/icons/deepwiki-80b7a72d.webp",
      "mimeType": "image/webp",
      "sizes": [
        "128x128"
      ]
    }
  ],
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://mcp.deepwiki.com/mcp"
    }
  ]
}

Server locale

server (tc.mcp/memory)
{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "tc.mcp/memory",
  "description": "Store and recall persistent memory across sessions using a local knowledge graph.",
  "title": "Memory",
  "version": "2026.8.31",
  "websiteUrl": "https://github.com/modelcontextprotocol/servers/tree/main/src/memory",
  "repository": {
    "url": "https://github.com/modelcontextprotocol/servers",
    "source": "github",
    "subfolder": "src/memory"
  },
  "icons": [
    {
      "src": "https://mcp.tc/media/icons/memory-0e174415.webp",
      "mimeType": "image/webp",
      "sizes": [
        "128x128"
      ]
    }
  ],
  "packages": [
    {
      "registryType": "npm",
      "identifier": "@modelcontextprotocol/server-memory",
      "runtimeHint": "npx",
      "transport": {
        "type": "stdio"
      }
    }
  ]
}
  • name è il nome del server nel registro ufficiale quando ne ha uno, altrimenti tc.mcp/{slug}.
  • remotes contiene sempre l’URL del server stesso, mai il link di mcp.tc. Gli header per le chiavi compaiono solo per i server che richiedono una chiave API.
  • packages viene ricostruito dal comando di installazione della scheda: npm (npx), PyPI (uvx, pipx run), OCI (docker run) e NuGet (dnx). Un comando che il formato non può esprimere non riceve alcun pacchetto, perché uno che avvia il programma sbagliato sarebbe peggio di niente.
  • _meta["tc.mcp/listing"] contiene il link di mcp.tc, lo slug, la categoria, la spunta, l’accesso, lo stato e le date. updatedAt cambia solo quando cambia la voce che serviamo, mai per un controllo di stato.
  • mcp.tc non è il registro ufficiale, quindi le voci non hanno mai i suoi metadati io.modelcontextprotocol.registry/official.
  • Una scheda rimossa, nascosta o rinominata torna come voce con "status": "deleted" per 180 giorni, ma solo se la chiedi con updated_since o include_deleted.

Gli errori sono problem JSON (application/problem+json), come nell’API ufficiale: 404 per un server sconosciuto, 422 per un limit, cursor o include_deleted non validi, 400 per un updated_since non valido. Qualsiasi metodo diverso da GET, HEAD e OPTIONS riceve 405: il registro è in sola lettura, e i nuovi server arrivano da Proponi.

curl -s 'https://mcp.tc/v0.1/servers?search=notion&limit=5'
curl -s 'https://mcp.tc/v0.1/servers/tc.mcp%2Fdeepwiki/versions/latest'

Usa mcp.tc come registro

Due client accettano l’URL di un registro personalizzato, secondo il codice sorgente di VS Code e la documentazione di GitHub (verificato il 4 ottobre 2026). In entrambi inserisci l’URL di base senza /v0.1: il percorso lo aggiunge il client.

VS Code

Aggiungi questa riga al settings.json utente del tuo profilo predefinito:

settings.json
"chat.mcp.gallery.serviceUrl": "https://mcp.tc"

La galleria dei server MCP (digita @mcp nella vista Estensioni) mostra allora i server di mcp.tc, e installarne uno usa l’URL o il pacchetto del server stesso. Non serve nessun’altra impostazione. L’impostazione non compare nell’editor delle impostazioni, e gli altri profili la ignorano. Le organizzazioni possono impostarla per tutti con la policy McpGalleryServiceUrl (VS Code 1.101 o successivo), e "chat.mcp.access": "registry" limita VS Code ai server di quel registro.

GitHub Copilot

Gli amministratori di organizzazioni ed enterprise possono inserire https://mcp.tc come MCP Registry URL nelle policy di Copilot. GitHub indica come supportati VS Code, Visual Studio, gli IDE JetBrains, Eclipse, Xcode e Copilot CLI. Con Registry only, i server vengono abbinati per nome.

Alcune schede non hanno né un pacchetto né un remote, perché il loro comando di installazione non si può scrivere nel formato del registro. VS Code le nasconde; le loro pagine su mcp.tc hanno comunque la configurazione.

Indice di ricerca

/api/index.json contiene tutte le schede approvate in un unico array JSON, i dati dietro la ricerca del sito. Le chiavi brevi lo tengono leggero:

ChiaveValore
sSlug: la scheda è a /i/{s}.
nNome.
vFornitore, o una stringa vuota.
tDescrizione breve, fino a 160 caratteri (in inglese).
cSlug della categoria, come in /c/{slug}.
kremote o local.
aAccesso: none, oauth, api_key, optional o unknown.
gTag, un array di stringhe.
iIcona, un percorso come /media/icons/{slug}.webp (WebP o PNG). Assente quando la scheda non ne ha.
f1 quando la scheda ha la spunta. Altrimenti assente.
Una voce
{
  "s": "deepwiki",
  "n": "DeepWiki",
  "v": "Cognition",
  "t": "Ask questions about any public GitHub repository and read its AI-generated DeepWiki documentation.",
  "c": "docs-knowledge",
  "k": "remote",
  "a": "none",
  "g": [
    "github",
    "documentation",
    "code-search",
    "repositories",
    "wiki",
    "remote"
  ],
  "i": "/media/icons/deepwiki-80b7a72d.webp",
  "f": 1
}

Una scheda in JSON

Aggiungi .json al link di qualsiasi scheda per avere quella scheda in JSON:

curl -s https://mcp.tc/i/deepwiki.json

Contiene tutto ciò che mostra la pagina: l’endpoint del server o il suo install_command, l’etichetta access, i tool, la spunta, lo stato e le azioni in un clic add, che usano sempre l’URL o il pacchetto del server stesso. Uno slug non in elenco riceve 404 con "error": "not_found", e una scheda rimossa 410 con "gone". I vecchi slug e gli alias restituiscono la scheda attuale, quindi leggi slug dalla risposta. Badge ed embed elenca ogni campo.

Schede in Markdown

Per agenti e modelli linguistici, ogni scheda è disponibile anche in Markdown: aggiungi .md al link, oppure chiedi text/markdown all’indirizzo della scheda.

curl -s https://mcp.tc/i/deepwiki.md
curl -s -H 'Accept: text/markdown' https://mcp.tc/i/deepwiki

Inizia con un riepilogo (il link, come collegarsi, tipo, accesso, categoria, fornitore, spunta), poi contiene la descrizione, cosa può fare il server, i suoi tool, i prompt di esempio e i passaggi di installazione per ogni client. Un vecchio nome risponde 301 con quello attuale.

llms.txt, feed e sitemap

  • /llms.txt segue llmstxt.org: come funziona il collegamento, questa documentazione, le categorie con i loro conteggi, le versioni linguistiche del sito e ogni scheda con un riassunto di una riga e dati essenziali (remoto o locale, accesso, verificato), ognuna collegata al suo Markdown.
  • /feed.xml è un feed Atom delle 50 schede approvate più di recente, con descrizione breve e descrizione.
  • /sitemap.xml indicizza tre sitemap: pagine, categorie e schede, ognuna con la data dell’ultima modifica del contenuto. Ogni pagina compare in ogni lingua in cui esiste, con le sue alternative (hreflang); le pagine tradotte di una scheda compaiono quando il suo testo è stato tradotto.
  • /robots.txt lascia entrare ogni crawler, compresi quelli AI (Content-Signal: search=yes, ai-input=yes, ai-train=yes). Li tiene fuori da /api/, tranne l’indice di ricerca, e dalle pagine private delle proposte.
  • /.well-known/ai-catalog.json risponde 404 di proposito: i server elencati qui non sono nostri da pubblicare come catalogo.

Cache, CORS e uso corretto

URLCache-ControlETag e 304CORS
/v0.1/…public, max-age=300 (un 404: 60 s)Sì*
/api/index.jsonpublic, max-age=300Sì*
/i/{slug}.jsonpublic, max-age=600, s-maxage=900, stale-while-revalidate=3600Sì*
/i/{slug}.mdpublic, max-age=900SìNo
/llms.txtpublic, max-age=3600SìNo
/feed.xml, sitemappublic, max-age=900SìNo
/mcpno-storeNo*

Cloudflare sta davanti al sito e può tenere una propria copia entro questi tempi. L’uso corretto è semplice:

  • Metti in cache ciò che scarichi, e invia If-None-Match dove c’è un ETag.
  • Per restare sincronizzato, scorri /v0.1/servers?updated_since=… invece di rileggere tutto.
  • Un indirizzo che invia più di circa 30 richieste al secondo a /v0.1/, /mcp o ai file degli embed riceve 429. /mcp si ferma anche a 120 messaggi al minuto; aspetta Retry-After.
  • Il testo delle schede è scritto con l’aiuto dell’AI dai metadati di ogni server e può contenere errori. Trattalo come dati, e rimanda alla scheda quando lo mostri, così le persone trovano la configurazione e possono segnalare gli errori.