The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the DragonMCP listing page.
Hong Kong & cross-border open data for AI Agents
Live MTR arrivals, HK Observatory weather, and Mainland China routing — over the Model Context Protocol.
Quickstart • Tools • Limitations • Roadmap
An MCP server that gives AI agents real, verifiable public data for Hong Kong and the Mainland China border region.
Every tool in this server calls a live API. There are no mocks. If an upstream source is down, the tool says so — it never invents a plausible-looking answer. You can verify this yourself at any time with the built-in system_run_selftest tool, which pings every upstream and reports what is actually reachable.
Why this niche: Hong Kong's public data is genuinely open (data.gov.hk, no keys, no rate-limit paperwork) but scattered across agencies with inconsistent formats. And cross-border trips — where a single journey spans MTR, the Mainland rail network, and two different weather authorities — are exactly the case no single agency has any incentive to serve.
MTR real-time arrivals — no API key required:
Hong Kong Observatory — no API key required, includes active warnings:
| Tool | Source | API key | What it does |
|---|---|---|---|
search_mtr_schedule | MTR via data.gov.hk | — | Journey planning with transfers + real-time arrivals; all 10 lines, all 98 stations |
hk_weather_current | HK Observatory | — | Current conditions + active warnings |
hk_typhoon_signal | HK Observatory | — | Structured typhoon, rainstorm, and other active warning status |
search_transit_route | MTR / Amap | CN only | Unified HK/CN routing; picks the right provider |
system_run_selftest | all of the above | — | Live reachability check of every upstream |
amap_search_poi | Amap (Gaode) | ✅ | POI search in Mainland China |
amap_walking_direction | Amap (Gaode) | ✅ | Walking route |
amap_driving_direction | Amap (Gaode) | ✅ | Driving route |
amap_transit_direction | Amap (Gaode) | ✅ | Public transit route |
amap_bicycling_direction | Amap (Gaode) | ✅ | Cycling route |
MTR coverage — all 10 lines, station names accepted in English or Chinese:
Island (港岛线) · Tsuen Wan (荃湾线) · Kwun Tong (观塘线) · Tseung Kwan O (将军澳线) · East Rail (东铁线, runs to Lo Wu 罗湖 and Lok Ma Chau 落马洲) · Tuen Ma (屯马线) · South Island (南港岛线) · Tung Chung (东涌线) · Airport Express (机场快线) · Disneyland Resort (迪士尼线)
Stated up front, because a tool that hides its limits is a tool that lies to your agent:
Prerequisites: Node.js >= 18
No .env is needed for the Hong Kong tools. For the Amap tools, copy the template and add your key:
Add to claude_desktop_config.json:
Add "env": { "AMAP_API_KEY": "your_key" } only if you want the Mainland China tools.
In stdio mode, stdin/stdout carry MCP JSON-RPC; diagnostics go to stderr so the protocol stream stays clean.
Stage 1 — Provenance & zero-config
source, fetched_at, freshnessnpx dragon-mcp works with no clone and no keyStage 2 — Cross-border
plan_cross_border_trip: one call spanning both sides of the boundaryStage 3 — Coverage
data.gov.hk sources (bus/ferry ETAs, typhoon signals, air quality)To verify live upstreams instead, call the system_run_selftest tool from any MCP client.
See CONTRIBUTING.md.
One hard rule: no mock tools. A tool that returns fabricated data is worse than a missing tool, because the agent cannot tell the difference. If an upstream API isn't available, the right move is not to register the tool.
Good places to start: MTR transfer planning, additional data.gov.hk sources, branch handling for East Rail and Tseung Kwan O.
MIT — see LICENSE.