API et données
Tout l’annuaire est public et lisible par des machines : une API au format du registre officiel MCP, un index de recherche JSON, chaque fiche en JSON et en Markdown, plus llms.txt, un flux et des plans de site. Sans clé ni inscription.
En un coup d’œil
| URL | Ce que vous obtenez | En cache pendant |
|---|---|---|
/v0.1/servers | Les fiches au format du registre officiel MCP, paginées. Détails | 5 minutes |
/api/index.json | Toutes les fiches dans un seul tableau compact. Détails | 5 minutes |
/i/{slug}.json | Une fiche, avec ses actions de configuration. Détails | 10 minutes |
/i/{slug}.md | Une fiche en Markdown. Détails | 15 minutes |
/llms.txt | L’annuaire sous forme de liste pour les modèles de langage. | 1 heure |
/feed.xml | Flux Atom des 50 fiches les plus récentes. | 15 minutes |
/sitemap.xml | Index des plans de site : pages, catégories et fiches, dans toutes les langues. | 15 minutes |
/mcp | Le serveur MCP de mcp.tc. Documentation | Pas de cache |
Tout est en lecture seule et public. Pas de clé, pas de compte, pas de frais. Les formats pour machines ne dépendent pas de la langue : ils servent le texte anglais des fiches et n’ont pas de préfixe de langue.
API compatible avec le registre
https://mcp.tc/v0.1/ est une copie en lecture seule de l’API de lecture du registre officiel MCP (version 0.1, schéma server.json 2025-12-11), remplie avec les fiches approuvées de mcp.tc. Un client qui accepte l’URL d’un registre personnalisé peut parcourir l’annuaire et installer depuis lui.
GET /v0.1/serversServeurs triés par nom, 30 par page sauf si vous définissez
limit(de 1 à 100). Renvoyezmetadata.nextCursorcommecursorpour la page suivante.searchgarde les serveurs dont le nom, le titre, le slug ou l’éditeur contient chaque mot (l’API officielle ne cherche que dans le nom).updated_sinceaccepte une date RFC 3339, l’inclut et renvoie aussi les fiches retirées depuis.version(latestou une version) etinclude_deletedfonctionnent comme dans l’API officielle.GET /v0.1/servers/{name}/versionsLes versions d’un serveur. Chaque fiche en a exactement une. Encodez le nom dans l’URL, comme dans
/v0.1/servers/tc.mcp%2Fdeepwiki/versions.GET /v0.1/servers/{name}/versions/latestUn serveur. Un numéro de version exact fonctionne à la place de
latest.GET /v0.1/ping, /v0.1/health, /v0.1/versionDisponibilité et informations de build, comme dans l’API officielle.
Une page de résultats a cette forme :
{
"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": "…" }
}Et voici ce que contient server pour deux fiches, telles que l’API les sert actuellement :
Serveur distant
{
"$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"
}
]
}Serveur local
{
"$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"
}
}
]
}nameest le nom du serveur dans le registre officiel quand il en a un, sinontc.mcp/{slug}.remotescontient toujours l’URL du serveur lui-même, jamais le lien mcp.tc. Les en-têtes de clé n’apparaissent que pour les serveurs qui demandent une clé API.packagesest reconstruit à partir de la commande d’installation de la fiche : npm (npx), PyPI (uvx,pipx run), OCI (docker run) et NuGet (dnx). Une commande que le format ne peut pas exprimer n’a pas de paquet, car un paquet qui lancerait le mauvais programme serait pire que rien._meta["tc.mcp/listing"]contient le lien mcp.tc, le slug, la catégorie, la coche, l’accès, l’état et les dates.updatedAtne change que quand l’entrée servie change, jamais à cause d’une vérification d’état.- mcp.tc n’est pas le registre officiel, donc les entrées ne portent jamais ses métadonnées
io.modelcontextprotocol.registry/official. - Une fiche retirée, masquée ou renommée revient comme une entrée avec
"status": "deleted"pendant 180 jours, mais seulement si vous le demandez avecupdated_sinceouinclude_deleted.
Les erreurs sont au format problem JSON (application/problem+json), comme dans l’API officielle : 404 pour un serveur inconnu, 422 pour un limit, un cursor ou un include_deleted invalide, 400 pour un updated_since invalide. Toute méthode autre que GET, HEAD et OPTIONS reçoit 405 : le registre est en lecture seule, et les nouveaux serveurs arrivent par Proposer.
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'Utiliser mcp.tc comme registre
Deux clients acceptent l’URL d’un registre personnalisé, d’après le code source de VS Code et la documentation de GitHub (vérifié le 4 octobre 2026). Dans les deux, saisissez l’URL de base sans /v0.1 : le client ajoute lui-même le chemin.
VS Code
Ajoutez cette ligne au settings.json utilisateur de votre profil par défaut :
"chat.mcp.gallery.serviceUrl": "https://mcp.tc"La galerie de serveurs MCP (tapez @mcp dans la vue Extensions) affiche alors les serveurs de mcp.tc, et en installer un utilise l’URL ou le paquet du serveur lui-même. Aucun autre réglage n’est nécessaire. Ce réglage n’apparaît pas dans l’éditeur de paramètres, et les autres profils l’ignorent. Les organisations peuvent le définir pour tout le monde avec la stratégie McpGalleryServiceUrl (VS Code 1.101 ou ultérieur), et "chat.mcp.access": "registry" limite VS Code aux serveurs de ce registre.
GitHub Copilot
Les administrateurs d’organisation et d’entreprise peuvent saisir https://mcp.tc comme MCP Registry URL dans les stratégies de Copilot. GitHub indique comme compatibles VS Code, Visual Studio, les IDE JetBrains, Eclipse, Xcode et Copilot CLI. Avec Registry only, les serveurs sont mis en correspondance par nom.
Quelques fiches n’ont ni paquet ni remote, parce que leur commande d’installation ne peut pas s’écrire au format du registre. VS Code les masque ; leurs pages sur mcp.tc ont quand même la configuration.
Index de recherche
/api/index.json contient toutes les fiches approuvées dans un seul tableau JSON, les données derrière la recherche du site. Des clés courtes le gardent léger :
| Clé | Valeur |
|---|---|
s | Slug : la fiche est à /i/{s}. |
n | Nom. |
v | Éditeur, ou une chaîne vide. |
t | Accroche, jusqu’à 160 caractères (en anglais). |
c | Slug de catégorie, comme dans /c/{slug}. |
k | remote ou local. |
a | Accès : none, oauth, api_key, optional ou unknown. |
g | Étiquettes, un tableau de chaînes. |
i | Icône, un chemin comme /media/icons/{slug}.webp (WebP ou PNG). Absent quand la fiche n’en a pas. |
f | 1 quand la fiche a la coche. Absent sinon. |
{
"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
}Une fiche en JSON
Ajoutez .json au lien de n’importe quelle fiche pour obtenir cette fiche en JSON :
curl -s https://mcp.tc/i/deepwiki.jsonElle contient tout ce que montre la page : l’endpoint du serveur ou sa install_command, le libellé access, les outils, la coche, l’état, et les actions en un clic add, qui utilisent toujours l’URL ou le paquet du serveur lui-même. Un slug non référencé reçoit 404 avec "error": "not_found", et une fiche retirée 410 avec "gone". Les anciens slugs et les alias renvoient la fiche actuelle, donc lisez slug dans la réponse. Badges et intégrations liste chaque champ.
Les fiches en Markdown
Pour les agents et les modèles de langage, chaque fiche existe aussi en Markdown : ajoutez .md au lien, ou demandez text/markdown à l’adresse de la fiche.
curl -s https://mcp.tc/i/deepwiki.md
curl -s -H 'Accept: text/markdown' https://mcp.tc/i/deepwikiElle commence par un résumé (le lien, comment se connecter, type, accès, catégorie, éditeur, coche), puis donne la description, ce que le serveur peut faire, ses outils, des exemples de prompts et les étapes d’installation pour chaque client. Un ancien nom répond 301 avec le nom actuel.
llms.txt, flux et plans de site
/llms.txtsuit llmstxt.org : le fonctionnement de la connexion, cette documentation, les catégories avec leurs effectifs, les versions linguistiques du site, et chaque fiche avec un résumé d’une ligne et quelques faits (distant ou local, accès, vérifié), chacune liée à son Markdown./feed.xmlest un flux Atom des 50 fiches approuvées le plus récemment, avec accroche et description./sitemap.xmlindexe trois plans de site : pages, catégories et fiches, chacun avec la date de dernière modification du contenu. Chaque page y figure dans chaque langue où elle existe, avec ses alternatives (hreflang) ; les pages traduites d’une fiche apparaissent une fois son texte traduit./robots.txtlaisse entrer tous les robots, y compris ceux des IA (Content-Signal: search=yes, ai-input=yes, ai-train=yes). Il les tient à l’écart de/api/, sauf l’index de recherche, et des pages privées de proposition./.well-known/ai-catalog.jsonrépond 404 exprès : les serveurs référencés ici ne sont pas à nous pour les publier comme catalogue.
Cache, CORS et usage raisonnable
| URL | Cache-Control | ETag et 304 | CORS |
|---|---|---|---|
/v0.1/… | public, max-age=300 (un 404 : 60 s) | Oui | * |
/api/index.json | public, max-age=300 | Oui | * |
/i/{slug}.json | public, max-age=600, s-maxage=900, stale-while-revalidate=3600 | Oui | * |
/i/{slug}.md | public, max-age=900 | Oui | Non |
/llms.txt | public, max-age=3600 | Oui | Non |
/feed.xml, plans de site | public, max-age=900 | Oui | Non |
/mcp | no-store | Non | * |
Cloudflare se trouve devant le site et peut garder sa propre copie dans ces délais. L’usage raisonnable est simple :
- Mettez en cache ce que vous récupérez, et envoyez
If-None-Matchquand il y a un ETag. - Pour rester synchronisé, parcourez
/v0.1/servers?updated_since=…au lieu de tout relire. - Une adresse qui envoie plus d’environ 30 requêtes par seconde à
/v0.1/,/mcpou aux fichiers d’intégration reçoit 429./mcps’arrête aussi à 120 messages par minute ; attendezRetry-After. - Le texte des fiches est rédigé avec l’aide de l’IA à partir des métadonnées de chaque serveur et peut être erroné. Traitez-le comme des données, et faites un lien vers la fiche quand vous l’affichez, pour qu’on y trouve la configuration et qu’on puisse signaler les erreurs.