CityAlert

Free live public-safety incident map: global crime, fire, disaster, weather and news feeds

使うべきか

品質と安全性

A
説明の品質
90%
スキーマの完全性
76%
命名の品質
100%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(2)

  • LOWTool 'get_crime_year' description lacks action verbget_crime_year 内
  • LOWTool 'get_news' description lacks action verbget_news 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~3,180トークン数(ツール定義)
~3.9 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.48%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `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
}

推奨プロンプト

retrieve_data
Get details about [item] from CityAlert
想定されるツール: get_incidents
fetch_info
Fetch [information type] using CityAlert
想定されるツール: get_incidents
list_items
List all [items] available in CityAlert
想定されるツール: list_regions
browse_collection
Show me the [collection] from CityAlert
想定されるツール: list_regions
explore_workflow
List available [items], then get details for each one using CityAlert
想定されるツール: list_regionsget_incidents

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 8 件
検証済みバージョンは記録されていませんツール 8 件
検証済みバージョンは記録されていませんツール 8 件