Materials MCP has severe definition quality gaps. Tool 'initialize' is a protocol-level concern, not a domain tool, it should not be exposed as a callable tool. The three domain tools (get_info, query_structures, get_structure_details) have minimal descriptions (10-50 chars, well below the 194-char baseline) and lack parameter descriptions entirely. No output schemas are documented. The server conflates MCP protocol mechanics with domain functionality, violating separation of concerns. No error handling guidance, no pagination metadata, no chaining IDs in responses.
Fetch provider information from the /info endpoint.
Get full details for a specific structure.
Initialize the MCP server with protocol version and client information
Query structures with a given filter string.
initialize is a protocol-level handshake, not a domain tool. It should not be exposed as a callable MCP tool. Remove it from the tool list and handle protocol negotiation via MCP's built-in initialize request.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (structure_id, formation_energy, etc.). Document what each tool returns: field names, types, and which fields enable chaining.
Parameter descriptions are missing or trivial. 'filter_str' has a description but 'page_size' lacks context on valid range. 'structure_id' has no guidance on format. Add 10-100 char descriptions explaining what each parameter controls and its constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 29 | 2026-07-28+ | v2 |
Tool descriptions are 10-50 characters (baseline 194 chars). 'Fetch provider information from the /info endpoint' is implementation detail, not user intent. Rewrite: 'Retrieve available properties, API version, and provider metadata for the GNoME materials database. Call this first to discover queryable fields.'
No error handling guidance. If query_structures returns 0 results, the LLM has no recovery path. If structure_id is invalid, no suggestion for alternatives. Add error descriptions: 'If no structures found, try relaxing the filter (e.g., remove formation_energy constraint).'