CertIndex MCP
공식유일한 인증서 투명성 MCP 서버입니다. 21억 5천만 개 이상의 TLS 인증서를 검색하고, 새로운 발급을 위해 도메인을 모니터링하며, 글로벌 CT 파이어호스를 에이전트로 스트리밍합니다.
CertIndex MCP(으)로 무엇을 할 수 있나요?
- 인증서 투명성 데이터 검색 —
search_certificates를 통해 도메인, CN, 발급자, SAN 또는 와일드카드 상태에 대해 색인된 TLS 인증서를 검색합니다. - 인증서 세부 정보 가져오기 —
get_certificate를 사용하여 SHA-256 지문으로 단일 인증서의 전체 PEM 및 CT 로그 메타데이터를 검색합니다. - 하위 도메인 열거 — 도메인에 대해 CT에서 확인된 고유 하위 도메인을 나열하며,
get_subdomains를 통한 커서 기반 페이지네이션을 지원합니다. - 인증서 만료 모니터링 —
get_expiring_certs를 사용하여 도메인에 대해 지정된 일수 내에 만료되는 인증서를 찾습니다. - 전역 스캔 실행 —
submit_global_sweep을 통해 전체 인덱스에서 CN/SAN 패턴에 대한 비동기 부분 문자열 스캔을 제출한 후,get_sweep_results로 결과를 폴링합니다. - API 사용량 확인 —
get_usage로 등급, 현재 사용량, 남은 할당량 및 자격을 확인합니다.
문서
certindex-mcp
An MCP (Model Context Protocol) server that exposes CertIndex's Certificate Transparency search tools to any MCP-compatible client (Claude Desktop, the MCP Inspector, Continue, etc.).
CertIndex ingests certificates directly from public Certificate Transparency logs and serves them from its own index. Historical backfill is still in progress, so results, especially for older certificates, may be incomplete. This server wraps the public CertIndex REST API so an LLM can ask questions like:
- "List the TLS certificates CertIndex has indexed for
example.com." - "What subdomains has Let's Encrypt seen for
mycompany.io?" - "Show me certs expiring in the next 30 days for
api.mycompany.io." - "Pull the full PEM and CT log metadata for SHA-256
<fingerprint>."
Why this repo exists
The CertIndex monorepo bundles an MCP server (mounted at
https://api.ctindex.io/mcp) that talks directly to the production
Postgres index. This standalone package is a thin client-side
shim: it speaks MCP to your editor / agent and forwards every tool
call to the hosted CertIndex REST API over HTTPS. Two consequences:
- You don't need a copy of the index — sign up for a free API key at https://ctindex.io and you're done.
- The package has a tiny dependency footprint (
mcp,httpx,pydantic) — easy to audit, easy to vendor, no DB drivers.
Install
Version 0.3.0 uses MCP Python SDK 2.x (mcp>=2,<3) and Python 3.11+.
The console command, environment variables and ten tool names are unchanged.
For applications that must retain SDK 1.x, use certindex-mcp==0.2.1.
pip install certindex-mcp
Or with uvx for one-shot use:
uvx certindex-mcp
To install the latest development version from source instead:
pip install git+https://github.com/certindex/certindex-mcp
Quickstart — Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"certindex": {
"command": "uvx",
"args": ["certindex-mcp"],
"env": {
"CERTINDEX_API_KEY": "ctx_live_..."
}
}
}
}
Restart Claude Desktop. The ten CertIndex tools appear in the tool tray.
Tools
Ten tools, matching the hosted CertIndex MCP server 1:1:
| Tool | What it does | Notable parameters |
|---|---|---|
search_certificates | Search the CT index by domain, CN, issuer, SAN, validity, or wildcard status. | domain, cn, issuer, san, expired, is_wildcard, page/limit |
get_certificate | Fetch a single cert by SHA-256 fingerprint. | sha256, include_enrichment |
get_domain_certificates | Indexed certs for an exact domain. | valid_only, include_enrichment, include_signals (paid plans), page/limit |
get_subdomains | Enumerate unique subdomains seen in CT. | Offset (page/limit) or keyset cursor mode — pass cursor="" to start, then feed back each response's next_cursor |
get_latest_cert | Most recent currently-valid cert for a domain. | include_enrichment, include_signals, include_precerts (let precertificates compete for "latest") |
get_expiring_certs | Certs for a domain expiring within days days. | days |
submit_global_sweep | Submit an async, domain-less CN/SAN substring sweep of the entire index (POST /v1/sweeps). | cn/san_contains (3+ chars, at least one required), issuer, is_wildcard, is_precert, expired, first_seen_*/not_after_* date bounds, strict_attribution, resume_token (continuation past the result cap) |
get_sweep_results | Poll a sweep job and paginate its results when done (GET /v1/sweeps/{id}). | sweep_id, page/limit (up to 1,000) |
get_usage | Caller's tier, current usage, remaining quota, and entitlements. | — |
get_historical_backfill_status | Check / start the paid deep-history backfill for a domain. | domain |
Quickstart — MCP Inspector
export CERTINDEX_API_KEY=ctx_live_...
npx @modelcontextprotocol/inspector uvx certindex-mcp
Configuration
| Env var | Default | Description |
|---|---|---|
CERTINDEX_API_KEY | (required) | Your CertIndex API key. Mint one at https://ctindex.io/app/keys |
CERTINDEX_BASE_URL | https://api.ctindex.io | Override for self-hosted deployments / staging |
CERTINDEX_TIMEOUT | 30 | Per-request HTTP timeout (seconds) |
Security
Input validation, rate-limit handling, and our supply-chain posture are documented in SECURITY.md. Please report vulnerabilities to security@ctindex.io rather than filing public issues.
Development
git clone https://github.com/certindex/certindex-mcp
cd certindex-mcp
pip install -e ".[dev]"
pytest
CI runs on Python 3.11 / 3.12 / 3.13 with both SDK 2.0.0 and the latest allowed 2.x release. It also installs the built wheel into a fresh environment and exercises initialization, tool enumeration and calls over real stdio. HTTP fixtures run on loopback; tests do not require production credentials.
License
MIT © CertIndex contributors.