ichi-mcp
This MCP server lets an AI assistant read ICHI's free public cyber-health data through three tools.
Retrieve the current ICHI index: score, band/range, evaluation time/model, dimension sub-scores, freshness/impairment info, and links.
Fetch the latest critical-advisory alerts (default 5, up to 50) with title, link, published ISO time, category, and description.
Summarize source health: overall status/confidence, feed counts by state/tier, sources included, and names of failed/stale/delayed/dormant/not-connected feeds.
Get structured JSON responses with
ok: trueorok: falseplus an error on upstream failures.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ichi-mcp what's the current internet cyber health index?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ichi-mcp
A minimal Model Context Protocol (MCP) stdio
server, built on the official Python mcp SDK, that lets an AI assistant read
the free public ICHI API. No API key is needed.
What ICHI is (and is not)
ICHI — the Internet Cyber Health Index — is a free, publicly accessible, source-transparent daily barometer of internet-wide cyber threat conditions, created by Joe Bernik. It is an outside-in directional signal. It is not an organization-specific risk score, not a deterministic forecast, and not a substitute for your own internal telemetry. The band is the operative read; moves within a band should be treated as noise. See the methodology.
This repository is maintained by/for ICHI's creator.
Related MCP server: winfolio
Tools
Tool | Source | Returns |
|
| score, rounded score, band + band range, evaluation time, model, per-dimension sub-scores with human-readable names and contributions, informational (unscored) values, freshness/impairment info (headline state, age, stale/impaired/invalid inputs, degraded dimensions), links |
|
| latest N (1–50) items from ICHI's critical-advisory feed: title, link, id, published (ISO-8601), category, description |
|
| overall status and confidence, feed counts (live/stale/delayed/failed, by tier), sources included in the score, and names of failed/stale/delayed/dormant/not-connected feeds |
Every tool returns a JSON object with "ok": true, or "ok": false plus an
"error" message on timeouts, HTTP errors, or unparseable responses — the
server never crashes on a bad upstream response.
Install / run
Requires Python ≥ 3.10. With uv:
uvx --from git+https://github.com/bernik-bot/ichi-mcp ichi-mcpPin a release with git+https://github.com/bernik-bot/ichi-mcp@v0.1.0.
Or with pip: pip install git+https://github.com/bernik-bot/ichi-mcp then run ichi-mcp.
(Not published on PyPI.)
Claude Desktop
Add to claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"ichi": {
"command": "uvx",
"args": ["--from", "git+https://github.com/bernik-bot/ichi-mcp", "ichi-mcp"]
}
}
}If uvx isn't on Claude Desktop's PATH, use its absolute path (which uvx).
Generic MCP client (stdio)
{
"command": "uvx",
"args": ["--from", "git+https://github.com/bernik-bot/ichi-mcp", "ichi-mcp"],
"env": { "ICHI_TIMEOUT": "10" }
}Configuration
Env var | Default | Meaning |
|
| HTTP timeout in seconds |
|
| API base URL (testing only) |
Example output (abridged, from a live call)
{
"ok": true,
"score": 64.91,
"rounded": 65,
"band": "ELEVATED",
"band_range": "50-69",
"evaluated_at": "2026-10-31T13:30:22.978Z",
"model": "v7.1",
"dimensions": [
{"key": "V", "name": "Vulnerability Pressure", "score": 42.21, "contribution": 8},
{"key": "C", "name": "C2 / Malware Infrastructure", "score": 96.03, "contribution": 13.14}
],
"freshness": {"headline_state": "LIVE", "age_seconds": 267, "completeness": "COMPLETE", "stale_inputs": [], "impaired_sources": []},
"link": "https://ichi.global"
}Limitations
Reads only ICHI's public endpoints; it does no scoring of its own and adds no data.
Dimension names are mapped from API keys using the published methodology (model v7.x). The API key
Pis the phishing-driven dimension the methodology labels "O — Actor Operations"; the informationalOvalue is labelled as Outages. Unknown keys are passed through unchanged. If ICHI's schema changes, missing fields come back asnullrather than errors.The alerts feed is ICHI's critical-advisory RSS feed; per its own description it is observation only and carries no score.
No caching: each tool call makes one HTTP request. ICHI's current index is re-evaluated about every 10 minutes.
Development
uv venv && uv pip install -e ".[dev]"
ruff check . && pytest -q # tests mock HTTP, no network
python examples/smoke_client.py # live end-to-end over stdio via the MCP clientWorks with both mcp 1.x (FastMCP) and 2.x (MCPServer, the renamed FastMCP);
CI tests both.
License
MIT
Daily ICHI readings and exploited-vulnerability alerts are posted on X by @ICHI_Global (automated, run by ICHI's creator).
Available Tools
3 toolsget_current_indexA
Get the current ICHI score (0-100), band (NORMAL/GUARDED/ELEVATED/HIGH/CRITICAL), per-dimension sub-scores with human-readable names, and freshness/impairment info.
ICHI is an outside-in, internet-wide directional signal - not an organization-specific risk score or a forecast.
Inputs: no named parameters. Returns: object
get_recent_alertsB
Get the latest items (default 5, max 50) from ICHI's critical-advisory RSS feed (https://ichi.global/api/alerts): title, link, published time, category, description.
Inputs: limit. Returns: object
get_source_healthA
Summarize ICHI's source health (https://ichi.global/api/health): overall status, confidence, live/stale/failed feed counts, and which sources feed the score.
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool maps to a clearly separable concern: the current index/score, the advisory alert feed, and source health diagnostics. An agent can decide between them unambiguously from the names alone, and the descriptions reinforce the boundaries (score vs. alerts vs. upstream feeds).
All three tools follow the same get_<noun> pattern (get_current_index, get_recent_alerts, get_source_health), with snake_case throughout and noun phrases that read naturally together.
Three tools is thin but proportionate for a read-only wrapper over a small public API surface; each tool corresponds to a distinct endpoint and none feels redundant. It could arguably use one more tool (e.g. history), but the scope is tight rather than padded.
The read path for the live signal is well covered (value, alerts, feed health), but there is no way to retrieve historical scores or trends, which is a notable gap for something described as a 'directional signal'. Alert retrieval also lacks filtering by category or time beyond a simple count, leaving some agent workflows to work around the surface.
Maintenance
Related MCP Connectors
Network, domain and website diagnostics for AI clients via MCP.
Hosted MCP server for live public-data APIs and Skills for AI agents.
See which AI models fall for traps in everyday jobs, and check or scan any MCP server, skill or package before your agent installs it. No sign-in; read-only; returns structured data.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI hosts to interact with a browser CAD workbench through model-neutral local stdio or authenticated remote MCP tools, supporting command discovery, design-health analysis, and scoped previews while never reading local files or taking over open sessions.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to perform comprehensive Windows system health diagnostics, security checks, developer workflows, and maintenance tasks via 85 tools with actionable recommendations, over MCP and OpenAI-compatible HTTP.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to access VirusTotal intelligence through MCP, supporting file, URL, domain, and IP lookups, plus analysis, via remote HTTP or local stdio.8MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to query product footprints, inspect transport activity data, and submit events from iLEAP-conformant endpoints through natural language, using MCP tools over Streamable-HTTP or stdio.1MIT