1. Get an API key
2. Claude Desktop
Just paste the prompt below into Claude Desktop — it'll edit your config:
text
Add Twinkle Hub to my Claude Desktop. Edit
~/Library/Application Support/Claude/claude_desktop_config.json
(Windows: %APPDATA%\Claude\claude_desktop_config.json).
Merge in this block:
{
"mcpServers": {
"twinkle-hub": {
"type": "http",
"url": "https://api.twinkleai.tw/mcp/",
"headers": {
"Authorization": "Bearer <I'll paste from https://hub.twinkleai.tw/dashboard>"
}
}
}
}
If an mcpServers block already exists, merge — don't overwrite.
Then ask me to restart Claude and list the 5 new opendata-* tools.Want to edit by hand? Open this file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
text
{
"mcpServers": {
"twinkle-hub": {
"type": "http",
"url": "https://api.twinkleai.tw/mcp/",
"headers": {
"Authorization": "Bearer sk-..."
}
}
}
}Replace sk-... with the key you see on your dashboard. Restart Claude — the 5 opendata-* tools will appear.
3. Cursor
Cursor uses ~/.cursor/mcp.json with the same shape as Claude Desktop:
text
{
"mcpServers": {
"twinkle-hub": {
"type": "http",
"url": "https://api.twinkleai.tw/mcp/",
"headers": {
"Authorization": "Bearer sk-..."
}
}
}
}After saving, in Cursor: Settings → MCP → reload Twinkle Hub.
4. Claude Code (CLI)
Claude Code ships with a claude mcp add command:
text
claude mcp add --transport http twinkle-hub https://api.twinkleai.tw/mcp/ \
--header "Authorization: Bearer sk-..."5. What to ask
Pick one and try (works in English or Chinese):
- 「Show me Taipei's PM2.5 readings for the last 30 days, and chart the trend」→ environment domain
- 「List property sales in this district above NT$50M」→ realestate_land domain
- 「Top 10 government procurement contracts by amount this year」→ procurement domain
/catalog has the full 19-domain scope and typical questions for each.
6. Pricing
| Tool | Per call | Use |
|---|---|---|
| opendata-list_domains | $0.0005 | List 19 domains (helps Claude plan) |
| opendata-search_datasets | $0.001 | Search datasets by query / domain |
| opendata-get_dataset | $0.001 | Fetch dataset metadata + schema |
| opendata-query_rows | $0.005 | SQL-like filter on rows |
| opendata-materialize_dataset | $0.010 | Full dataset materialization |
Within seconds of each call you'll see the cost on /usage. When the wallet hits zero LiteLLM auto-rejects — no surprise bills.