CityAlert
Free live public-safety incident map: global crime, fire, disaster, weather and news feeds
我該用這個嗎
品質與安全性
發現項目(2)
- LOW在 get_crime_year 中
- LOW在 get_news 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"cityalert": {
"url": "https://cityalert.live/api/mcp"
}
}
}遠端端點
https://cityalert.live/api/mcpstreamable-http它能做什麼
工具清單
工具(8)
🟢list_regions
List CityAlert focus regions (key, label, center, zoom, bbox). Use region keys with get_incidents.
輸入結構描述
{
"type": "object",
"properties": {}
}輸出結構描述
{
"type": "object",
"properties": {
"regions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"center": {
"type": "array",
"prefixItems": [
{
"type": "number"
},
{
"type": "number"
}
],
"items": false,
"minItems": 2,
"maxItems": 2
},
"zoom": {
"type": "number"
},
"bbox": {
"type": "array",
"prefixItems": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"items": false,
"minItems": 4,
"maxItems": 4
},
"quakeStats": {
"type": "boolean"
},
"major": {
"type": "boolean"
},
"country": {
"type": "boolean"
},
"state": {
"type": "boolean"
}
},
"required": [
"key",
"label",
"center",
"zoom",
"bbox"
],
"additionalProperties": false
}
}
},
"required": [
"regions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_incidents(region, category, groups, minSeverity, q, ...)
Merged live incidents from all feeds plus manual reports. Filter by region key, category, group, severity, source, or bbox. Results come from a shared ~15-minute snapshot; real-time refresh requires an API key with that entitlement (details: cityalert.live/developers).
輸入結構描述
{
"type": "object",
"properties": {
"region": {
"description": "Focus-region key, e.g. 'vancouver' (see list_regions)",
"type": "string"
},
"category": {
"description": "Incident category",
"type": "string",
"enum": [
"crime",
"fire",
"disaster",
"weather",
"unrest",
"health",
"infra",
"alert",
"report"
]
},
"groups": {
"description": "Normalized subtypes to include, e.g. ['violent','property','collision','wildfire']. See group keys in the /api/incidents OpenAPI doc.",
"type": "array",
"items": {
"type": "string"
}
},
"minSeverity": {
"description": "Minimum severity (low < medium < high < critical)",
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"q": {
"description": "Case-insensitive substring match on type/title/neighbourhood",
"type": "string",
"maxLength": 100
},
"source": {
"description": "Feed source, e.g. 'usgs', 'gdacs', 'eccc', 'vpd', 'bcws', 'vernon-media', 'manual'",
"type": "string"
},
"bbox": {
"description": "[minLon, minLat, maxLon, maxLat]",
"minItems": 4,
"maxItems": 4,
"type": "array",
"items": {
"type": "number"
}
},
"limit": {
"description": "Max incidents to return (default 50)",
"type": "integer",
"minimum": 1,
"maximum": 5000
},
"detail": {
"description": "Response detail. 'full' (default): every field incl. description, neighbourhood and reporter/vote metadata. 'compact': id/type/title/coords/time/severity/url only — about half the tokens, for list-style answers.",
"type": "string",
"enum": [
"compact",
"full"
]
},
"refresh": {
"description": "Re-fetch upstream feeds instead of returning the shared ~15-minute snapshot. Only honored for API keys with real-time entitlement; ignored otherwise.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"total": {
"type": "number"
},
"returned": {
"type": "number"
},
"incidents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"source": {
"type": "string"
},
"category": {
"type": "string"
},
"group": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"time": {
"type": "string"
},
"severity": {
"type": "string"
},
"url": {
"type": "string"
},
"region": {
"type": "string"
},
"nhood": {
"type": "string"
},
"approximate": {
"type": "boolean"
},
"count": {
"type": "number"
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"enum": [
"pending",
"active",
"resolved",
"hidden"
]
},
"confirms": {
"type": "number"
},
"resolves": {
"type": "number"
},
"flags": {
"type": "number"
},
"reporter": {
"type": "object",
"properties": {
"handle": {
"type": "string"
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"curator",
"moderator"
]
},
{
"type": "null"
}
]
},
"reports": {
"type": "number"
},
"confirmed": {
"type": "number"
}
},
"required": [
"handle",
"role",
"reports",
"confirmed"
],
"additionalProperties": false
}
},
"required": [
"id",
"source",
"category",
"type",
"title",
"lat",
"lon",
"time",
"severity"
],
"additionalProperties": false
}
},
"feeds": {
"type": "object",
"properties": {
"count": {
"type": "number"
},
"failed": {
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"error": {
"type": "string"
}
},
"required": [
"source"
],
"additionalProperties": false
}
}
},
"required": [
"count",
"failed"
],
"additionalProperties": false
},
"region": {
"type": "string"
},
"delayed": {
"type": "boolean"
},
"delayMinutes": {
"type": "number"
},
"textTruncated": {
"type": "string"
}
},
"required": [
"total",
"returned",
"incidents",
"feeds"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_trends
Historical aggregates: VPD crime by year/month/type (6y), USGS M4+ quakes per region (10y), GDACS global events (3y), report and live snapshot stats. Use for questions about patterns over time — crime trends, quake frequency, disaster cadence. For what's happening right now, use get_incidents.
輸入結構描述
{
"type": "object",
"properties": {}
}輸出結構描述
{
"type": "object",
"properties": {
"generatedAt": {
"type": "string"
},
"crime": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"history": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": false
}
},
"quakes": {
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": false
}
},
"gdacs": {
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": false
}
},
"statcan": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"reports": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"snapshot": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"errors": {
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_crime_year(year, includeIncidents)
Full-year VPD crime data: totals and ranked neighbourhood stats. Vancouver only, 2003-present.
輸入結構描述
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"minimum": 2003,
"maximum": 2026,
"description": "Year, 2003 to present"
},
"includeIncidents": {
"description": "Include every incident point (large; default false)",
"type": "boolean"
}
},
"required": [
"year"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"year": {
"type": "number"
},
"total": {
"type": "number"
},
"byType": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"byNeighbourhood": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"count": {
"type": "number"
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
}
},
"required": [
"name",
"count",
"lat",
"lon"
],
"additionalProperties": false
}
},
"incidents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"source": {
"type": "string"
},
"category": {
"type": "string"
},
"group": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"time": {
"type": "string"
},
"severity": {
"type": "string"
},
"url": {
"type": "string"
},
"region": {
"type": "string"
},
"nhood": {
"type": "string"
},
"approximate": {
"type": "boolean"
},
"count": {
"type": "number"
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"enum": [
"pending",
"active",
"resolved",
"hidden"
]
},
"confirms": {
"type": "number"
},
"resolves": {
"type": "number"
},
"flags": {
"type": "number"
},
"reporter": {
"type": "object",
"properties": {
"handle": {
"type": "string"
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"curator",
"moderator"
]
},
{
"type": "null"
}
]
},
"reports": {
"type": "number"
},
"confirmed": {
"type": "number"
}
},
"required": [
"handle",
"role",
"reports",
"confirmed"
],
"additionalProperties": false
}
},
"required": [
"id",
"source",
"category",
"type",
"title",
"lat",
"lon",
"time",
"severity"
],
"additionalProperties": false
}
}
},
"required": [
"year",
"total",
"byType",
"byNeighbourhood"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_news(place, refresh)
Per-region safety news items, or news for an arbitrary place name.
輸入結構描述
{
"type": "object",
"properties": {
"place": {
"description": "Place name for ad-hoc news, e.g. 'Kelowna'",
"type": "string",
"maxLength": 60
},
"refresh": {
"description": "Bypass the news cache (API keys with real-time entitlement only)",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"link": {
"type": "string"
},
"source": {
"type": "string"
},
"published": {
"type": "string"
},
"region": {
"type": "string"
},
"regionLabel": {
"type": "string"
},
"image": {
"type": "string"
}
},
"required": [
"id",
"title",
"link",
"source",
"published"
],
"additionalProperties": false
}
},
"place": {
"type": "string"
},
"fetchedAt": {
"type": "string"
}
},
"required": [
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡submit_report(title, lat, lon, category, severity, ...)
File a manual geolocated incident report (same as POST /api/reports). Reports are moderated before they appear publicly. Errors: 'report submission disabled' if the caller is blocked; 'rate limited' past 20 reports/hour via MCP.
輸入結構描述
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Short headline, 1–200 chars"
},
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude, -90 to 90"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude, -180 to 180"
},
"category": {
"description": "Incident category (default 'report')",
"type": "string",
"enum": [
"crime",
"fire",
"disaster",
"weather",
"unrest",
"health",
"infra",
"alert",
"report"
]
},
"severity": {
"description": "low | medium | high | critical (default 'medium')",
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"description": {
"description": "Details, up to 2000 chars",
"type": "string",
"maxLength": 2000
}
},
"required": [
"title",
"lat",
"lon"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"report": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"source": {
"type": "string"
},
"category": {
"type": "string"
},
"group": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"time": {
"type": "string"
},
"severity": {
"type": "string"
},
"url": {
"type": "string"
},
"region": {
"type": "string"
},
"nhood": {
"type": "string"
},
"approximate": {
"type": "boolean"
},
"count": {
"type": "number"
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"enum": [
"pending",
"active",
"resolved",
"hidden"
]
},
"confirms": {
"type": "number"
},
"resolves": {
"type": "number"
},
"flags": {
"type": "number"
},
"reporter": {
"type": "object",
"properties": {
"handle": {
"type": "string"
},
"role": {
"anyOf": [
{
"type": "string",
"enum": [
"curator",
"moderator"
]
},
{
"type": "null"
}
]
},
"reports": {
"type": "number"
},
"confirmed": {
"type": "number"
}
},
"required": [
"handle",
"role",
"reports",
"confirmed"
],
"additionalProperties": false
}
},
"required": [
"id",
"source",
"category",
"type",
"title",
"lat",
"lon",
"time",
"severity"
],
"additionalProperties": false
}
},
"required": [
"report"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_dashboard(id)
Read a saved dashboard by id (shareable, read-only).
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡create_dashboard(name, config)
Create a shareable dashboard. Returns {id, token} — the token grants write access via PUT /api/dashboards, so save it.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 100
},
"config": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "Dashboard config object, e.g. {areas, categories, defaultTab}"
}
},
"required": [
"config"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"token": {
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}建議的提示詞
get_incidentsget_incidentslist_regionslist_regionslist_regionsget_incidents社群
證據