CertIndex MCP

公式

唯一の証明書透過性MCPサーバー。21.5億以上のTLS証明書を検索し、ドメインの新規発行を監視し、グローバルCTファイアホースをエージェントにストリーミングします。

CertIndex MCPで何ができますか?

  • 証明書透明性データの検索 — search_certificates を使用して、ドメイン、CN、発行者、SAN、またはワイルドカード状態に対してインデックス化されたTLS証明書を検索します。
  • 証明書詳細の取得 — SHA-256フィンガープリントを使用して get_certificate で、単一の証明書の完全なPEMおよびCTログメタデータを取得します。
  • サブドメインの列挙 — ドメインのCTで確認された一意のサブドメインを、get_subdomains によるカーソルベースのページネーションで一覧表示します。
  • 証明書の有効期限の監視 — get_expiring_certs を使用して、指定した日数以内に期限切れになるドメインの証明書を検索します。
  • グローバルスイープの実行 — submit_global_sweep でインデックス全体に対してCN/SANパターンの非同期サブストリングスイープを送信し、get_sweep_results で結果をポーリングします。
  • API使用状況の確認 — get_usage で、階層、現在の使用量、残りクォータ、および権限を確認します。

ドキュメント

certindex-mcp

CI PyPI License: MIT

MCP(Model Context Protocol)サーバーです。CertIndex の証明書透明性(Certificate Transparency)検索ツールを、MCP互換の任意のクライアント(Claude Desktop、MCP Inspector、Continue など)に公開します。

CertIndex は公開の証明書透明性ログから証明書を直接取り込み、独自のインデックスから提供します。過去データのバックフィルはまだ進行中のため、特に古い証明書の結果は不完全な場合があります。このサーバーは公開の CertIndex REST API をラップし、LLM が次のような質問をできるようにします:

  • 「CertIndex が example.com に対してインデックスした TLS 証明書を一覧表示して。」
  • 「Let's Encrypt が mycompany.io に対して確認したサブドメインは?」
  • 「api.mycompany.io について今後30日以内に期限切れになる証明書を見せて。」
  • 「SHA-256 <fingerprint> の完全な PEM と CT ログメタデータを取得して。」

このリポジトリが存在する理由

CertIndex モノレポには、本番の Postgres インデックスに直接接続する MCP サーバー(https://api.ctindex.io/mcp にマウント)が含まれています。このスタンドアロンパッケージは薄いクライアント側のシムです。エディタやエージェントと MCP で通信し、すべてのツール呼び出しをホストされた CertIndex REST API に HTTPS 経由で転送します。その結果は2つあります:

  1. インデックスのコピーは不要です。https://ctindex.io で無料の API キーにサインアップすれば完了です。
  2. 依存関係のフットプリントが小さい(mcp、httpx、pydantic)ため、監査が容易で、ベンダリングも簡単、DB ドライバも不要です。

インストール

バージョン 0.3.0 は MCP Python SDK 2.x(mcp>=2,<3)と Python 3.11+ を使用します。コンソールコマンド、環境変数、10個のツール名は変更されていません。SDK 1.x を維持する必要があるアプリケーションでは、certindex-mcp==0.2.1 を使用してください。

pip install certindex-mcp

または、ワンショット利用には uvx を使用:

uvx certindex-mcp

ソースから最新の開発版をインストールする場合:

pip install git+https://github.com/certindex/certindex-mcp

クイックスタート — Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加:

{
  "mcpServers": {
    "certindex": {
      "command": "uvx",
      "args": ["certindex-mcp"],
      "env": {
        "CERTINDEX_API_KEY": "ctx_live_..."
      }
    }
  }
}

Claude Desktop を再起動します。10個の CertIndex ツールがツールトレイに表示されます。

ツール

ホストされた CertIndex MCP サーバーと1:1で対応する10個のツール:

ツール機能主なパラメータ
search_certificatesドメイン、CN、発行者、SAN、有効性、ワイルドカード状態で CT インデックスを検索。domain、cn、issuer、san、expired、is_wildcard、page/limit
get_certificateSHA-256 フィンガープリントで単一の証明書を取得。sha256、include_enrichment
get_domain_certificates完全一致ドメインのインデックス済み証明書。valid_only、include_enrichment、include_signals(有料プラン)、page/limit
get_subdomainsCT で確認された一意のサブドメインを列挙。オフセット(page/limit)またはキーセットカーソルモード — cursor="" を渡して開始し、各レスポンスの next_cursor をフィードバック
get_latest_certドメインの直近の現在有効な証明書。include_enrichment、include_signals、include_precerts(プリ証明書を「最新」の競争に参加させる)
get_expiring_certsdays 日以内に期限切れになるドメインの証明書。days
submit_global_sweepドメイン指定なしの非同期 CN/SAN 部分文字列スイープをインデックス全体に送信(POST /v1/sweeps)。cn/san_contains(3文字以上、少なくとも1つ必須)、issuer、is_wildcard、is_precert、expired、first_seen_*/not_after_* の日付範囲、strict_attribution、resume_token(結果上限を超えた場合の継続)
get_sweep_resultsスイープジョブをポーリングし、完了時に結果をページング(GET /v1/sweeps/{id})。sweep_id、page/limit(最大1,000件)
get_usage呼び出し元のティア、現在の使用量、残りクォータ、権限。—
get_historical_backfill_statusドメインの有料ディープ履歴バックフィルを確認/開始。domain

クイックスタート — MCP Inspector

export CERTINDEX_API_KEY=ctx_live_...
npx @modelcontextprotocol/inspector uvx certindex-mcp

設定

環境変数デフォルト説明
CERTINDEX_API_KEY(必須)あなたの CertIndex API キー。https://ctindex.io/app/keys で発行
CERTINDEX_BASE_URLhttps://api.ctindex.ioセルフホスト環境/ステージング用のオーバーライド
CERTINDEX_TIMEOUT30リクエストごとの HTTP タイムアウト(秒)

セキュリティ

入力検証、レート制限の処理、サプライチェーン対策は SECURITY.md に文書化されています。脆弱性は公開の issue ではなく、security@ctindex.io に報告してください。

開発

git clone https://github.com/certindex/certindex-mcp
cd certindex-mcp
pip install -e ".[dev]"
pytest

CI は Python 3.11 / 3.12 / 3.13 で、SDK 2.0.0 と最新の許可された 2.x リリースの両方で実行されます。また、ビルドしたホイールを新しい環境にインストールし、実際の stdio 経由で初期化、ツール列挙、呼び出しを検証します。HTTP フィクスチャはループバックで実行され、テストは本番資格情報を必要としません。

ライセンス

MIT © CertIndex コントリビューター。