City Atlas 城市圖譜
Greater Hsinchu, Taiwan open data on a 125 m grid: crashes, buses, schools, flood. Read-only.
Should I use this
Quality & Safety
Findings (6)
- LOWin describe_metric
- LOWin rank
- LOWin need_ranking
- LOWin overlay_metrics
- LOWin compare_groups
- LOWin compare_change
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"cityatlas": {
"url": "https://mcp.cityatlas.tw/mcp"
}
}
}Remote endpoints
https://mcp.cityatlas.tw/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
🟢search_catalog(query, limit)
用關鍵字找城市圖譜的資料:11 大類 80 項資料,細到 159 條指標(139 條格網:事故、公車、人行道、淹水、樹…;20 條里 / 鄉鎮 / 縣市:里人口、長者與兒童、里所得…),加上 47 屆選舉與公投(投票率、得票率);公開版少 Google 街景判讀的 2 項 4 條,實際查得到 78 項、155 條:回代號、名稱、單位、年份、出處機關、是不是推估、涵蓋幾區。Search the indicator catalog by keyword (80 datasets in 11 categories, 159 indicators: 139 grid + 20 neighbourhood/district/county, plus 47 elections; this public server omits 4 Street-View-derived indicators, so 155 are searchable).
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "關鍵字,例:「事故 行人」「公車」「淹水」;空白分開的字要全部對上"
},
"limit": {
"description": "最多幾條,預設 12",
"type": "integer",
"minimum": 1,
"maximum": 40
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢describe_metric(metric)
一條資料的完整出處(機關、資料集、網址、取得日、檔案、對帳)、涵蓋哪些鄉鎮、統計、以及「可能在講別的事」的但書。Full provenance and caveats of one indicator.
Input Schema
{
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "資料代號或名稱,例:crash_ped4 或「行人事故」"
}
},
"required": [
"metric"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rank(metric, unit, per, town, filters, ...)
某條資料在里或鄉鎮排前幾名(跟網站 07 同一套算法:先加總再除、人少的地方往平均拉)。可換算每千居民 / 每公里道路 / 路 + 人 + 店(只有事故)/ 任何能當分母的代號;可只看某個鄉鎮、可加篩條件。只回前 N 名。里層資料(長者占比、里所得、選舉投票率…)一個里一個數,不能換算、單位只能是里(人數可加到鄉鎮)。沒編里的範圍不進排名。Rank neighbourhoods or districts by an indicator, optionally normalised.
Input Schema
{
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "資料代號或名稱,例:crash_ped4 或「行人事故」"
},
"unit": {
"description": "單位:里(預設,neighbourhood)或 鄉鎮(district)",
"type": "string",
"enum": [
"里",
"鄉鎮"
]
},
"per": {
"description": "換算:不除(預設)/ 每千居民 / 每公里道路 / 路 + 人 + 店 / 分母的資料代號",
"type": "string"
},
"town": {
"description": "只看一個鄉鎮,例:竹北、東區",
"type": "string"
},
"filters": {
"description": "篩條件:里 / 鄉鎮的值要符合,例:[{metric:'residents',op:'>',value:100}]",
"maxItems": 4,
"type": "array",
"items": {
"type": "object",
"properties": {
"metric": {
"type": "string"
},
"op": {
"type": "string",
"enum": [
">",
"<",
">=",
"<="
]
},
"value": {
"type": "number"
}
},
"required": [
"metric",
"op",
"value"
]
}
},
"descending": {
"description": "由高到低,預設 true",
"type": "boolean"
},
"top": {
"description": "前幾名,預設 10",
"type": "integer",
"minimum": 1,
"maximum": 30
},
"shrink": {
"description": "有換算時,人少的地方往平均拉;預設 true(同網站),false = 看原始的率",
"type": "boolean"
}
},
"required": [
"metric"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢lookup_place(place, metrics)
給地址(例:竹北市光明六路 10 號)、里名(例:竹北市東平里)或鄉鎮名 → 那裡各項數字,以及在大新竹排第幾;查里名時另附里人口、所得、65 歲以上與 14 歲以下。地址只定位到 125 公尺的格(用我們自己的門牌檔比對,不送外部服務、不記錄)。Numbers for an address, neighbourhood or district.
Input Schema
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "地址、里名或鄉鎮名"
},
"metrics": {
"description": "要看哪幾條(代號或名稱);不給就看常用的 10 條",
"maxItems": 12,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"place"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢need_ranking(unit, weights, town, top)
哪裡最多人被公車耽誤(被耽誤的人·分鐘、工作地、學校、公設的百分位加權);權重可帶,不帶用預設 60/20/10/10。Where the most people lose time on public transport compared with driving.
Input Schema
{
"type": "object",
"properties": {
"unit": {
"description": "單位:里(預設,neighbourhood)或 鄉鎮(district)",
"type": "string",
"enum": [
"里",
"鄉鎮"
]
},
"weights": {
"description": "權重;不帶 = 60 / 20 / 10 / 10",
"type": "object",
"properties": {
"pm": {
"description": "被耽誤的人·分鐘",
"type": "number",
"minimum": 0
},
"jobs": {
"description": "工作地",
"type": "number",
"minimum": 0
},
"school": {
"description": "學校",
"type": "number",
"minimum": 0
},
"civic": {
"description": "公共設施",
"type": "number",
"minimum": 0
}
}
},
"town": {
"description": "只看一個鄉鎮,例:竹北、東區",
"type": "string"
},
"top": {
"description": "前幾名,預設 10",
"type": "integer",
"minimum": 1,
"maximum": 30
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢overlay_metrics(metric_a, metric_b, per, unit, town, ...)
兩條資料疊起來看:A(可換算)與 B 各切三等分成九宮格,回各格有幾個里 / 鄉鎮,並列出「兩樣都高」的。例:事故(每千居民)高、人行道少的里。Which places are high on two indicators at once.
Input Schema
{
"type": "object",
"properties": {
"metric_a": {
"type": "string",
"description": "資料 A(代號或名稱)"
},
"metric_b": {
"type": "string",
"description": "資料 B(代號或名稱)"
},
"per": {
"description": "A 的換算:不除(預設)/ 每千居民 / 每公里道路 / 路 + 人 + 店",
"type": "string"
},
"unit": {
"description": "單位:里(預設,neighbourhood)或 鄉鎮(district)",
"type": "string",
"enum": [
"里",
"鄉鎮"
]
},
"town": {
"description": "只看一個鄉鎮,例:竹北、東區",
"type": "string"
},
"top": {
"description": "前幾名,預設 10",
"type": "integer",
"minimum": 1,
"maximum": 30
},
"shrink": {
"description": "有換算時,人少的地方往平均拉;預設 true(同網站),false = 看原始的率",
"type": "boolean"
}
},
"required": [
"metric_a",
"metric_b"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢compare_groups(metric_a, has_b, per)
有 B 的格 vs 沒有 B 的格,A 差多少 —— 在居民 × 道路長度切成的 25 層裡各比一次(避免被市中心拉著走)。只描述,不做因果。Compare cells with vs without B, within strata of residents and road length.
Input Schema
{
"type": "object",
"properties": {
"metric_a": {
"type": "string",
"description": "要比的東西 A(件數 / 長度這類能加總的),例:行人事故"
},
"has_b": {
"type": "string",
"description": "分組的依據 B:格裡有沒有,例:人行道、公車站"
},
"per": {
"description": "A 的換算:不除(預設)/ 每千居民 / 每公里道路",
"type": "string"
}
},
"required": [
"metric_a",
"has_b"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢filter_cells(conditions, unit, town, top)
找出同時符合最多四個條件的 125 公尺格,回符合幾格、住了多少人,並照里 / 鄉鎮加總。例:離公車站超過 500 公尺、又住超過 100 人。Find grid cells that meet up to four conditions.
Input Schema
{
"type": "object",
"properties": {
"conditions": {
"minItems": 1,
"maxItems": 4,
"type": "array",
"items": {
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "資料代號或名稱,例:crash_ped4 或「行人事故」"
},
"op": {
"type": "string",
"enum": [
">",
"<",
">=",
"<=",
"有",
"沒有"
],
"description": "比較方式;「有」= > 0、「沒有」= 0"
},
"value": {
"description": "> < >= <= 才要給",
"type": "number"
}
},
"required": [
"metric",
"op"
]
},
"description": "每一格都要同時符合,例:[{metric:'stop_dist_m',op:'>',value:500}]"
},
"unit": {
"description": "單位:里(預設,neighbourhood)或 鄉鎮(district)",
"type": "string",
"enum": [
"里",
"鄉鎮"
]
},
"town": {
"description": "只看一個鄉鎮,例:竹北、東區",
"type": "string"
},
"top": {
"description": "前幾名,預設 10",
"type": "integer",
"minimum": 1,
"maximum": 30
}
},
"required": [
"conditions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢compare_change(topic, from, to, threshold, unit, ...)
兩個年份比,哪些里增加最多、減少最多(跟網站 07「看變化」同一套):里人口(107–114 年底,戶籍)、事故場數(111–114)、里所得中位數(111→112)、投票率(總統 / 立委不分區政黨票 / 立委區域 / 縣市長,年份照選舉目錄)。門檻自己填(增加幾人 / 件 / 萬元 / 個百分點以上才算增加很多);里界調整過、兩屆不是同一塊地的里不比、列出原因。只描述差多少,不做因果。Which neighbourhoods grew or shrank most between two years (population, crashes, income, turnout).
Input Schema
{
"type": "object",
"properties": {
"topic": {
"type": "string",
"enum": [
"population",
"crash",
"income",
"turnout_president",
"turnout_party_list",
"turnout_legislator",
"turnout_mayor"
],
"description": "題目:population 里人口 / crash 事故 / income 里所得中位數 / turnout_president 總統投票率 / turnout_party_list 不分區政黨票投票率 / turnout_legislator 立委(區域)投票率 / turnout_mayor 縣市長投票率"
},
"from": {
"description": "起始年份,例:107(人口)、111(事故)、2020(投票率,選舉年);不給 = 預設(投票率是最近兩屆)",
"type": "string"
},
"to": {
"description": "結束年份;不給 = 預設最後一年",
"type": "string"
},
"threshold": {
"description": "門檻:增加(或減少)幾人 / 件 / 萬元 / 個百分點以上才算「很多」;不給或給 0 = 預設(人口 500、事故里 5 鄉鎮 20、所得 5、投票率 3)",
"type": "number",
"minimum": 0
},
"unit": {
"description": "單位:里(預設)或 鄉鎮;只有事故兩種都可以,其他只比里",
"type": "string",
"enum": [
"里",
"鄉鎮"
]
},
"top": {
"description": "前幾名,預設 10",
"type": "integer",
"minimum": 1,
"maximum": 30
}
},
"required": [
"topic"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢show_map(metric, per, town, unit, shrink)
把一條資料(或「需要度」)畫成里 / 鄉鎮的五級地圖,在對話裡直接顯示,可拖曳縮放、滑過看數字;換算同「排名」。畫不出來的 AI 會拿到一個能點開的網址(請轉給使用者)。Draw an indicator as an interactive choropleth map of neighbourhoods; chats that cannot render it get a link that opens the map in a browser (pass it on to the user).
Input Schema
{
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "資料代號、名稱,或「需要度」"
},
"per": {
"description": "換算:不除(預設)/ 每千居民 / 每公里道路 / 路 + 人 + 店 / 分母的資料代號",
"type": "string"
},
"town": {
"description": "地圖先對準這個鄉鎮(其他鄉鎮照樣畫)",
"type": "string"
},
"unit": {
"description": "單位:里(預設,neighbourhood)或 鄉鎮(district)",
"type": "string",
"enum": [
"里",
"鄉鎮"
]
},
"shrink": {
"description": "有換算時,人少的地方往平均拉;預設 true(同網站),false = 看原始的率",
"type": "boolean"
}
},
"required": [
"metric"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence