Install
The repo has no one-line install. Follow its README.
Files
DragonMCP
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
🌟 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.
🔥 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
Loading
🗺️ Roadmap
Stage 1 — Provenance & zero-config
- Every tool response carries
source,fetched_at,freshness - Publish to npm so
npx dragon-mcpworks 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.hksources (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.
Facts
- Kind
- MCP server
- Group
- Uncategorized
- Stars
- 21
- License
- MIT
- Language
- TypeScript
- Last push
- 2026-08-12
- Forks
- 6
- Topics
- ai-agents, mcp, mcp-server, asia, greatchina
- 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
- 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
- 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
- 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
- 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
- 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k