CertIndex MCP

officiel

Le 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 avec get_sweep_results.

Documentation

certindex-mcp

CI PyPI License: MIT

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 :

  1. 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é.
  2. 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é :

OutilCe qu'il faitParamètres notables
search_certificatesRecherche dans l'index CT par domaine, CN, émetteur, SAN, validité ou statut de wildcard.domain, cn, issuer, san, expired, is_wildcard, page/limit
get_certificateRécupère un seul certificat par empreinte SHA-256.sha256, include_enrichment
get_domain_certificatesChaque 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_certCertificat 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_certsCertificats pour un domaine expirant dans les days jours.days
submit_global_sweepSoumet 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_resultsInterroge un travail de balayage et pagine ses résultats une fois terminé (GET /v1/sweeps/{id}).sweep_id, page/limit (jusqu'à 1 000)
get_usageNiveau de l'appelant, utilisation actuelle, quota restant et droits.
get_historical_backfill_statusVé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'envDéfautDescription
CERTINDEX_API_KEY(requis)Votre clé API CertIndex. Créez-en une sur https://ctindex.io/app/keys
CERTINDEX_BASE_URLhttps://api.ctindex.ioRemplacement pour les déploiements auto-hébergés / staging
CERTINDEX_TIMEOUT30Dé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.