Skip to main content
Glama

DragonMCP

Hong Kong & cross-border open data for AI Agents

English | 简体中文

Live MTR arrivals, HK Observatory weather, and Mainland China routing — over the Model Context Protocol.

Quickstart • Tools • Limitations • Roadmap

License: MIT TypeScript MCP Node.js


🌟 What is DragonMCP?

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.


Related MCP server: skill4agent MCP Server

🔥 Live example

MTR real-time arrivals — no API key required:

> When is the next train from Admiralty to Central?

Next Island Line train from Admiralty to Central (towards Kennedy Town):
- Arriving in: 0 min(s) (14:02:27)
Subsequent trains:
- 4 min(s) (14:06:27)
- 7 min(s) (14:09:27)

Hong Kong Observatory — no API key required, includes active warnings:

> What's the weather in Hong Kong?

Current Weather in Hong Kong (Updated: 2026-08-04T13:02:00+08:00):
- Temperature: 30°C
- Humidity: 75%
- UV Index: 8 (very high)

Warnings:
The Thunderstorm Warning has been issued. It will remain effective until
3:00 p.m. today. Isolated thunderstorms are expected to occur over New
Territories West.

🛠️ Tools

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 (迪士尼线)


⚠️ Limitations

Stated up front, because a tool that hides its limits is a tool that lies to your agent:

  • Routes minimise transfers, not travel time. No inter-station running times are published, so we optimise for the thing we can actually measure. Occasionally a two-transfer route is faster than the one-transfer route returned.

  • Real-time arrivals cover the boarding leg only. Without running times we cannot say when you will reach a transfer station, so quoting arrivals for later legs would be invention.

  • Two stations have no real-time feed. The upstream API serves no arrivals for Tin Hau or Prince Edward. Routing through them works; arrivals at them are reported as unavailable rather than faked.

  • Amap tools need your own key and cover Mainland China only.

  • Cross-border journey planning is not built yet. East Rail reaches the border stations, but stitching a full HK→Shenzhen itinerary is Stage 2 on the roadmap.


🚀 Quickstart

Prerequisites: Node.js >= 18

git clone https://github.com/arthurpanhku/DragonMCP.git
cd DragonMCP
npm install
npm run build

No .env is needed for the Hong Kong tools. For the Amap tools, copy the template and add your key:

cp .env.example .env

Connect to Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "DragonMCP": {
      "command": "node",
      "args": ["/absolute/path/to/DragonMCP/dist/stdio.js"]
    }
  }
}

Add "env": { "AMAP_API_KEY": "your_key" } only if you want the Mainland China tools.

Other ways to run

npm run dev:stdio   # stdio transport, for local MCP clients
npm run dev         # HTTP server: Streamable HTTP at /mcp, legacy SSE at /mcp/sse
docker-compose up -d --build

In stdio mode, stdin/stdout carry MCP JSON-RPC; diagnostics go to stderr so the protocol stream stays clean.


🏗️ Architecture

graph TD
    A[AI Agent Client] -->|MCP: stdio or HTTP| B[DragonMCP Server]
    B --> C[Tool Registry]

    C --> D["Hong Kong (no key)"]
    C --> E["Mainland China (Amap key)"]
    C --> F["Cross-border aggregator"]

    D -.-> G[data.gov.hk: MTR real-time]
    D -.-> H[HK Observatory]
    E -.-> I[Amap Web Service API]
    F -.-> D
    F -.-> E

🗺️ Roadmap

Stage 1 — Provenance & zero-config

  • Every tool response carries source, fetched_at, freshness

  • Publish to npm so npx dragon-mcp works with no clone and no key

  • Daily CI self-test with a status badge, so "the data sources are alive today" is publicly verifiable

Stage 2 — Cross-border

  • MTR transfer planning

  • Border checkpoints, Guangzhou–Shenzhen–Hong Kong Express Rail, Airport Express integration

  • plan_cross_border_trip: one call spanning both sides of the boundary

Stage 3 — Coverage

  • More data.gov.hk sources (bus/ferry ETAs, typhoon signals, air quality)

  • Macau


🧪 Testing

npm test          # unit + integration; hermetic, no network required
npm run check     # typecheck
npm run lint

To verify live upstreams instead, call the system_run_selftest tool from any MCP client.


🤝 Contributing

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.


🙏 Acknowledgments

  • Anthropic — for the Model Context Protocol

  • MTR Corporation and data.gov.hk — for the open real-time transit API

  • Hong Kong Observatory — for the open weather API

  • Amap (Gaode) — for maps and routing


📄 License

MIT — see LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    12306 ticket purchase search server based on Model Context Protocol (MCP). It provides a simple API interface, allowing large models to search for 12306 ticket purchasing information through the interface.
    8
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    RollingGo MCP is a high-performance hotel search and recommendation service built on the MCP (Model Context Protocol) standard. It connects large language models with a massive database of domestic and international hotel data, providing real-time structured hotel search capabilities for AI assistants, agents, travel planning tools, or IDE plugins like Cursor/Windsurf.
    9
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    这是一个面向中文圈的MCP服务器,将中国互联网常用能力(如地图、快递、RSS、B站等)封装为标准MCP工具,方便AI Agent安全调用。
    13
    2
    MIT