Japan Places MCP Server

MCP server for the Japan Places API — municipality census for 1,917 municipalities (2020 census), POI category counts for all 47 prefectures, station catchments, and 13 derived live signals for Japan. 16 tools; free tools return data directly, paid datasets answer HTTP 402 (x402 USDC on Base / RapidAPI Premium).

Hosted MCP Server

npx add-mcp 'https://japan-places.local-connect-design.trade/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Japan Places MCP Server

MCP server for the Japan Places API — municipality census for 1,917 municipalities (2020 census), POI category counts for all 47 prefectures, station catchments, and 13 derived live signals for Japan.

M8ven Verified

Install

npm install mcp-japan-places
npx mcp-japan-places

Or with a custom endpoint:

JAPAN_PLACES_BASE=https://japan-places.local-connect-design.trade npx mcp-japan-places

The server is zero-dependency (Node >= 18, stdio JSON-RPC) and holds no API keys and no payment credentials.

Tools

16 tools: the same set as the hosted MCP (the canon in functions/mcp-tools.json) — one per dataset. Free tools return data directly. Paid tools are gated by the API with HTTP 402 (x402 micropayments in USDC on Base, or a RapidAPI Premium Datasets plan on PRO/ULTRA/MEGA); without payment a paid tool returns a clean, labelled PAID_DATASET error explaining the price and the payment routes — this server cannot pay on your behalf.

ToolEndpointAccess
jp_municipalityGET /api/v1/poi/municipalityFree
jp_qualityGET /api/v1/poi/qualityFree
jp_catchmentGET /api/v1/poi/catchmentPaid, US$0.05/call
jp_chainsGET /api/v1/poi/chainsPaid, US$0.03/call
jp_alivenessGET /api/v1/poi/alivenessPaid, US$0.02/call
jp_densityGET /api/v1/poi/densityPaid, US$0.05/call
jp_energy_priceGET /api/v1/signals/energy/pricePaid, US$0.05/call
jp_land_priceGET /api/v1/poi/land/pricePaid, US$0.05/call
jp_subsidy_award_rateGET /api/v1/signals/subsidy/award-ratePaid, US$0.05/call
jp_grant_deadline_alertGET /api/v1/signals/grant/deadlinePaid, US$0.04/call
jp_gbizinfo_searchGET /api/v1/signals/gbizinfoPaid, US$0.03/call
jp_jma_weatherGET /api/v1/signals/jma/weatherPaid, US$0.02/call
jp_boj_statisticsGET /api/v1/signals/boj/statisticsPaid, US$0.03/call
jp_tourism_signalGET /api/v1/signals/tourismPaid, US$0.02/call
jp_crime_statisticsGET /api/v1/signals/crimePaid, US$0.02/call
jp_facility_signalGET /api/v1/signals/facilityPaid, US$0.03/call

Notes:

  • jp_municipality requires prefecture (name such as 東京都 or the 2-digit JIS X 0401 code such as 13); the API answers 400 without it.
  • jp_catchment currently covers a sample of 60 major stations (a full-station rollout is planned), per the API's own disclosure.
  • Changed in 2.1.0 (JP-16 canon resync): jp_health, jp_catalog and jp_history_diff were removed so this package carries exactly the hosted MCP's 16-tool set. /health, /poi and /diff/{dataset} remain available over REST.

Generated code — do not edit by hand

src/index.js is generated by tools/generate_mcp.py from the vendored inputs in tools/inputs/:

  • openapi.json — a snapshot of the live OpenAPI spec (https://japan-places.local-connect-design.trade/api/v1/openapi),
  • mcp-tools.json — the tool canon of the site's own hosted MCP,
  • SPEC_SOURCE.json — provenance of the snapshot (source, capture date, catalog hash).
npm run generate        # regenerate src/index.js + SYNC.json
npm test                # live smoke test against the real API
npm run check-drift     # compare the live spec against SYNC.json

SYNC.json records the spec source, the catalog hash this build was generated from, and the tool/path coverage. Re-running the generator on an unchanged spec produces a byte-identical tree.

Drift watch (permanent sync loop)

tools/check_drift.py fetches the live /api/v1/openapi, and compares its catalog hash and path set against SYNC.json (exit 0 = in sync, exit 2 = drift, with a diff summary). A capture-fleet stream named mcp_drift runs this checker daily on the sora fleet; a divergence lands in the fleet status as a failure, which queues the follow-up work item: refresh tools/inputs/openapi.json from the live spec, re-run the generator, run the smoke test, and republish. That loop is what keeps this package matched to the live API.

要約(日本語): 本パッケージの src/index.js は生成物です。ライブAPIの OpenAPI 仕様とサイト内蔵MCPのツール定義から tools/generate_mcp.py が 生成します。ライブ仕様とのずれは tools/check_drift.py が検出し、soraの 取得フリート(ストリーム mcp_drift、日次)が監視します。ずれたら 「仕様を取り直して再生成、スモークテスト、再公開」が作業項目になります。

License

CDLA-Permissive-2.0 AND Apache-2.0

Data licenses: CDLA-Permissive-2.0, Apache-2.0, CC0-1.0, CC BY 2.0/4.0, PDL-1.0 Attribution: https://japan-places.local-connect-design.trade/jp-places/attribution.html

Publisher

Lexus — https://github.com/lexusdev7