CertIndex MCP
officielLe seul serveur MCP de transparence des certificats. Recherchez parmi plus de 2,15 milliards de certificats TLS, surveillez les domaines pour les nouvelles émissions, diffusez le flux global CT vers votre agent.
Que pouvez-vous faire avec CertIndex MCP ?
- Rechercher des certificats par domaine ou émetteur — Trouvez des certificats TLS correspondant à un domaine, CN, émetteur ou motif SAN à l'aide de
search_certificates. - Récupérer un certificat par empreinte — Obtenez les données PEM complètes et les métadonnées du journal CT pour une empreinte SHA-256 spécifique avec
get_certificate. - Lister tous les certificats pour un domaine — Obtenez tous les certificats jamais émis pour un domaine exact via
get_domain_certificates, éventuellement filtrés pour n'afficher que les certificats actuellement valides. - Énumérer les sous-domaines vus dans les journaux CT — Découvrez les sous-domaines uniques observés pour un domaine à l'aide de la pagination par curseur dans
get_subdomains. - Trouver les certificats expirant bientôt — Identifiez les certificats d'un domaine qui expirent dans un nombre donné de jours à l'aide de
get_expiring_certs. - Lancer un balayage global de l'index — Soumettez une recherche asynchrone de sous-chaîne sur l'ensemble du corpus CT par CN ou SAN avec
submit_global_sweep, puis interrogez les résultats avecget_sweep_results.
Documentation
certindex-mcp
Un serveur MCP (Model Context Protocol) qui expose les outils de recherche de Transparence des Certificats de CertIndex à tout client compatible MCP (Claude Desktop, l'inspecteur MCP, Continue, etc.).
CertIndex indexe l'intégralité du corpus CT public (~5 M de certificats, en croissance d'environ 100 k/jour). Ce paquet enveloppe l'API REST publique de CertIndex afin qu'un LLM puisse poser des questions telles que :
- "Liste tous les certificats TLS jamais émis pour
example.com." - "Quels sous-domaines Let's Encrypt a-t-il vus pour
mycompany.io?" - "Montre-moi les certificats expirant dans les 30 prochains jours pour
api.mycompany.io." - "Récupère le PEM complet et les métadonnées du journal CT pour le SHA-256
<fingerprint>."
Pourquoi ce dépôt existe
Le monorepo CertIndex inclut un serveur MCP (monté sur
https://api.ctindex.io/mcp) qui dialogue directement avec l'index
Postgres de production. Ce paquet autonome est une fine couche d'adaptation côté client :
il parle MCP à votre éditeur / agent et transmet chaque appel d'outil
à l'API REST hébergée de CertIndex via HTTPS. Deux conséquences :
- Vous n'avez pas besoin d'une copie de l'index — inscrivez-vous pour obtenir une clé API gratuite sur https://ctindex.io et c'est terminé.
- Le paquet a une empreinte de dépendances minuscule (
mcp,httpx,pydantic) — facile à auditer, facile à intégrer, pas de pilotes de base de données.
Installation
pip install certindex-mcp
Ou avec uvx pour une utilisation ponctuelle :
uvx certindex-mcp
Pour installer la dernière version de développement depuis les sources à la place :
pip install git+https://github.com/certindex/certindex-mcp
Démarrage rapide — Claude Desktop
Ajoutez à ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows) :
{
"mcpServers": {
"certindex": {
"command": "uvx",
"args": ["certindex-mcp"],
"env": {
"CERTINDEX_API_KEY": "ctx_live_..."
}
}
}
}
Redémarrez Claude Desktop. Les dix outils CertIndex apparaissent dans la barre d'outils.
Outils
Dix outils, correspondant 1:1 au serveur MCP CertIndex hébergé :
| Outil | Ce qu'il fait | Paramètres notables |
|---|---|---|
search_certificates | Recherche dans l'index CT par domaine, CN, émetteur, SAN, validité ou statut de wildcard. | domain, cn, issuer, san, expired, is_wildcard, page/limit |
get_certificate | Récupère un seul certificat par empreinte SHA-256. | sha256, include_enrichment |
get_domain_certificates | Chaque certificat jamais émis pour un domaine exact. | valid_only, include_enrichment, include_signals (plans payants), page/limit |
get_subdomains | Énumère les sous-domaines uniques vus dans CT. | Décalage (page/limit) ou mode curseur keyset — passez cursor="" pour démarrer, puis renvoyez le next_cursor de chaque réponse |
get_latest_cert | Certificat valide le plus récent pour un domaine. | include_enrichment, include_signals, include_precerts (laisse les précertificats concourir pour "le plus récent") |
get_expiring_certs | Certificats pour un domaine expirant dans les days jours. | days |
submit_global_sweep | Soumet un balayage asynchrone, sans domaine, par sous-chaîne CN/SAN de l'index entier (POST /v1/sweeps). | cn/san_contains (3+ caractères, au moins un requis), issuer, is_wildcard, is_precert, expired, first_seen_*/not_after_* bornes de date, strict_attribution, resume_token (continuation au-delà du plafond de résultats) |
get_sweep_results | Interroge un travail de balayage et pagine ses résultats une fois terminé (GET /v1/sweeps/{id}). | sweep_id, page/limit (jusqu'à 1 000) |
get_usage | Niveau de l'appelant, utilisation actuelle, quota restant et droits. | — |
get_historical_backfill_status | Vérifier / démarrer le remplissage payant de l'historique profond pour un domaine. | domain |
Démarrage rapide — Inspecteur MCP
export CERTINDEX_API_KEY=ctx_live_...
npx @modelcontextprotocol/inspector uvx certindex-mcp
Configuration
| Variable d'env | Défaut | Description |
|---|---|---|
CERTINDEX_API_KEY | (requis) | Votre clé API CertIndex. Créez-en une sur https://ctindex.io/app/keys |
CERTINDEX_BASE_URL | https://api.ctindex.io | Remplacement pour les déploiements auto-hébergés / staging |
CERTINDEX_TIMEOUT | 30 | Délai d'expiration HTTP par requête (secondes) |
Sécurité
La validation des entrées, la gestion des limites de débit et notre posture de chaîne d'approvisionnement sont documentées dans SECURITY.md. Veuillez signaler les vulnérabilités à security@ctindex.io plutôt que de déposer des tickets publics.
Développement
git clone https://github.com/certindex/certindex-mcp
cd certindex-mcp
pip install -e ".[dev]"
pytest
L'intégration continue s'exécute sur Python 3.11 / 3.12 / 3.13.
Licence
MIT © Contributeurs CertIndex.