An MCP server for accessing data from Data.gov, providing tools and resources for interacting with government datasets.
Server has 4 well-named, read-only tools with proper verb_noun naming (package_search, package_show, group_list, tag_list). Input schemas are defined in JSON Schema format with type information. Descriptions are present but generic and lack context for LLM selection. Parameter descriptions are minimal (10-30 chars), violating the 72-char baseline. No output schema documentation exists, and error handling is basic. Tool names follow conventions but descriptions fail to explain WHEN to use each tool or what distinguishes them. Overall quality is mediocre, better than community average due to schema presence, but well below production grade.
List groups on Data.gov
Search for packages (datasets) on Data.gov
Get details for a specific package (dataset)
List tags on Data.gov
Parameter descriptions are too brief (10-30 chars vs 72-char baseline). Examples: 'Search query' (12 chars), 'Field to order by' (16 chars), 'Return all fields' (17 chars). These lack context on expected format, valid ranges, or how the parameter affects results.
No output schema documentation. Tool descriptions state what they do but never document what fields or structure the response contains. LLMs cannot plan downstream tool calls without knowing return field names (e.g., does package_search return 'package_id' or 'id'? Does it return 'total_count'?). This forces LLMs to guess and causes composition errors.
Tool descriptions lack differentiation and context. 'Search for packages on Data.gov' (34 chars) and 'List groups on Data.gov' (23 chars) are too generic and do not explain WHEN to use each tool vs others, what format they accept, or why an LLM should prefer one over alternatives.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Parameter naming inconsistency and ambiguity. 'sort' parameter in package_search is ambiguous, does it sort by score, name, or date? 'query' vs 'q' in different tools creates cognitive load. 'order_by' lacks examples of valid field names (e.g., 'name', 'id', 'created'). Names should be disambiguated in descriptions with enums or valid field names.
No pagination guidance in descriptions. Tools accept 'rows', 'start', 'offset', 'limit' but do not document whether they return a total count, next_cursor, or how to detect end of results. Without this, LLMs cannot reliably iterate over large result sets.
Error handling in code is basic (handleAxiosError logs but does not guide recovery). No tool description documents what errors can occur, how to interpret them, or what the LLM should do next. Code shows try-catch but error messages are not recovery-guided.
group_list tool name is ambiguous. 'group_list' could mean 'list all groups' or 'list groups that match criteria'. This overlaps semantically with 'search' tools. Consider 'group_search' or 'search_groups' for consistency with 'package_search'.