Most "global intelligence" MCP servers are built on Western data sources. If you want your agent to know what is happening in Japan right now, the options were thin — so I built one, and released it on the official MCP registry.
What it does
japan-intel-mcp exposes eight read-only tools over free, keyless Japanese public data:
| Tool | What you get | Source |
|---|---|---|
japan_earthquakes | Epicenter, magnitude, max intensity, depth | Japan Meteorological Agency |
japan_weather_warnings | Active advisories by prefecture | JMA |
japan_weather_overview | Narrative forecast text | JMA |
japan_weekly_forecast | Temperatures + precipitation probability | JMA |
japan_typhoons | Monitored typhoons | JMA |
japan_edinet_filings | Corporate regulatory disclosures | EDINET |
japan_postal_lookup | Postal code to address (kanji + kana) | zipcloud |
japan_watch_summary | One-call cross-source snapshot | JMA |
No API key. No account. No paid tier. Every source is public.
Install
pip install japan-intel-mcp japan-intel-mcp # stdio MCP Or grab the .mcpb bundle from the v0.2.0 release.
It is registered on the official registry as io.github.atushi1841/japan-intel-mcp, so it is discoverable from any MCP client.
The design decision that matters: never silently lose a source
Every response is wrapped in an envelope:
{ "retrieved_at": "2026-10-12T01:30:00+00:00", "sources": ["https://www.jma.go.jp/bosai/quake/data/list.json"], "data_gaps": [], "data": [ ... ] } That data_gaps array is the whole point. When an upstream API is down, the field says so explicitly instead of returning an empty list that an agent would confidently interpret as "nothing happened."
An agent that gets [] will tell you there were no earthquakes. An agent that gets data_gaps: ["jma-quake: HTTP 503"] will tell you it could not check. Only one of those is honest.
Three bugs the data will hand you
Building this surfaced some traps worth documenting.
1. The weekly forecast splits data across series with different region names. The JMA feed returns multiple timeSeries — weather/wind/wave in one, precipitation probability in another, temperatures in a third. Worse, the area names differ between them: series[0] says "Tokyo Area" while series[1] says "Tokyo." Joining by area name silently breaks. Structuring by series instead.
2. The earthquake list includes quakes far from Japan. A magnitude 7.6 off Central America appears alongside domestic events. The tell is an empty maxIntensity field — nothing was felt in Japan. Filter on that, or you will report foreign earthquakes as Japanese.
3. Advisories are sometimes a list, sometimes a dict. The warning feed's warnings field changes shape. Calling .items() on the list variant raises AttributeError: 'list' object has no attribute 'keys'. Handle both.
Why keyless matters
The moment an MCP server needs an API key, your install funnel collapses: the user has to sign up, find the key, configure it, and hope it is still valid. Every source here is keyless, which means pip install genuinely is the whole setup.
Links
- Repo: https://github.com/atushi1841/japan-intel-mcp
- Registry:
io.github.atushi1841/japan-intel-mcp - License: MIT
If you are building agents that need to reason about Japan — logistics, travel, supply chain, risk — the data is now one tool call away.


