MCP server for querying radiation measurement data from the Safecast network. Provides tools to search radiation levels by location, retrieve historical device measurements, access track/journey data, retrieve gamma spectroscopy information, and get educational radiation reference information.
The Safecast MCP server demonstrates solid engineering with clear, action-verb naming and well-structured schemas across all 8 tools. All tools are explicitly registered with type-safe parameter definitions and descriptions. Descriptions are substantive (ranging 40 - 160 characters per tool) and explain purpose and context. Input schemas use proper JSON Schema with typed constraints (min/max for numbers, enums for topic selection, latitude/longitude bounds). However, there are gaps in output schema documentation, while code shows structured responses being built, the MCP tool definitions do not formally document return types or structures. Error handling is adequate but not guided (errors return bare messages without recovery suggestions). The server demonstrates strong adherence to composition patterns: each tool has a single responsibility, all use READ_ONLY annotations appropriately, and parameter naming is consistent (lat/lon, device_id, track_id, limit). Pagination is present (limit, default, max constraints) but not uniformly documented. No sensitive data exposure detected. Overall, this is a B+/A− tier server with definition quality exceeding the median community server; minor gaps prevent a higher score.
Get historical radiation measurements from a specific monitoring device over a time period.
Get gamma spectroscopy data for a specific measurement point.
Retrieve all radiation measurements recorded during a specific track/journey. Use list_tracks to find available track IDs first.
Browse bGeigie Import tracks (bulk radiation measurement drives). Can filter by year and optionally month.
Health check tool
Find radiation measurements near a geographic location. Returns measurements within a specified radius of the given coordinates.
Get educational reference information about radiation units, safety levels, detectors, and related topics. Returns static reference content.
Output schemas not formally documented in tool definitions. While code shows structured responses (maps with location, measurements, metadata), MCP tool registrations do not declare return types or field structures. LLMs cannot plan downstream chaining or extract specific fields without explicit schema documentation.
Error messages lack recovery guidance. For example, device_history returns 'device_id must be a number' but does not suggest calling search_devices() or list_available_devices() to discover valid IDs. Errors should be actionable (pattern:recovery-guide).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 57 | - | v1 |
Find radiation measurements within a geographic bounding box.
Pagination strategy inconsistent. query_radiation and search_area accept 'limit' but do not return total_available count or next_cursor, preventing reliable pagination for large result sets. device_history returns total_available but no cursor. Implementation varies by fallback path (API vs DB).
Parameter dependencies not documented. get_track accepts optional 'from' and 'to' (marker ID range filters) but description does not explain their relationship or valid ranges. list_tracks month parameter requires year but this constraint is not stated in the month description.
radiation_info tool using enum for 'topic' is correct, but enum values lack descriptions. LLMs will select from [units, dose_rates, safety_levels, detectors, background_levels, isotopes] without guidance on what each topic covers or when to use each.