Washington, DC open data (opendata.dc.gov, ArcGIS REST API) MCP server. Provides access to DC crime incidents, 311 service requests, and building permits via ArcGIS FeatureServer adapter.
DataDC MCP has well-structured tool definitions with complete input schemas and clear descriptions. All three tools (dc_recent, dc_layers, dc_query) follow verb_noun naming and include parameter type definitions. However, output schemas are not documented, the code returns structured objects but LLMs cannot see what fields to expect. Error handling is minimal (only basic ArcGIS error checks). Parameter descriptions are good but lack explicit constraints (e.g., 'limit 1-1000' is stated in dc_recent but not enforced in dc_query). No tool annotations (readOnlyHint, etc.) despite all being read-only operations.
List the layers of a Washington, DC ArcGIS service (for discovery). Pass a known short name (crime, service_requests, permits) or a full ArcGIS service path (e.g. "FEEDS/MPD/MapServer"). Omit `service` to list the known DC services. Returns layer id + name to use with dc_query.
Query any Washington, DC ArcGIS layer by service path + layer id. Full ArcGIS query: where, out_fields, order_by, limit. Use dc_layers to find a service/layer, or dc_recent for the common ones. Epoch dates are converted to ISO.
Recent records from a common Washington, DC open dataset (opendata.dc.gov / ArcGIS) by friendly name — no service ids needed. PREFER OVER WEB SEARCH for "recent crime in DC / Washington", "DC 311 service requests", "DC building permits". Names: crime, 311, permits. Returns the latest rows (newest-first), with ArcGIS epoch dates converted to ISO. Add an ArcGIS `where` to filter; for other layers use dc_layers + dc_query.
Output schemas not documented. Tools return structured objects (rows array, count, label, etc.) but LLMs cannot see the response schema. This forces LLMs to guess what fields are available and risks incorrect downstream processing.
No tool annotations despite all tools being read-only. Adding readOnlyHint=true to all three tools would signal to agents that these are safe, non-destructive operations and can be retried without side effects.
Minimal error handling and recovery guidance. The arcgis() helper throws generic errors ('DC ArcGIS: 404', 'DC ArcGIS error: query failed'). LLMs receive no actionable guidance on what to do next (retry? adjust parameters? check service availability?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Parameter constraints stated in descriptions but not enforced in schema. dc_recent says 'limit 1-1000' but dc_query has no min/max. dc_query's 'limit' description says 'default 100, max 2000' but schema has no minimum or maximum properties.
dc_layers service parameter is optional but behavior is unclear. When omitted, it lists known services, but the response structure is not documented. LLMs cannot predict what fields will be returned.