MCP tool for querying Materials Project API
Materials Project MCP has three read-only query tools with clear naming and documented schemas. Tools follow verb_noun naming conventions (get_*, find_*) and are appropriately specific to their domain. Input schemas are fully visible with type declarations. Descriptions are present but generic, they lack context about when to use each tool vs. alternatives, prerequisites, or error recovery guidance. Parameter descriptions are present but minimal (10-30 chars). Output schemas are not documented, forcing LLMs to infer response structure. No error handling guidance or validation rules. The tools are well-composed (each does one thing) and idempotent, but descriptions and output documentation fall short of production standards.
Find materials with a specific chemical formula.
Get detailed information about a specific material by its Materials Project ID.
Find materials containing specific elements.
Output schemas not documented. Tool descriptions state 'Returns: List of materials...' but do not specify field names, types, or structure of returned objects. LLMs cannot plan downstream operations or extract specific fields without reverse-engineering from code.
Parameter descriptions are under 20 characters and lack actionable constraints. 'List of elements that must be present in the material (e.g., ["Fe", "O"]).' is vague, does not specify element format (Fe vs fe vs FE), maximum count, or validation rules. LLMs will guess and may pass invalid element symbols.
No error handling guidance. Tools accept unconstrained inputs (max_records could be 0, 1000000, or negative) but do not document validation or error recovery. LLMs receive silent failures or truncated results without understanding why.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Tool descriptions are generic (34-50 chars) and do not explain when to use each tool instead of alternatives. get_materials_with_elements vs. find_materials_by_formula both return material lists; the description does not clarify the search dimension (elements vs. formula) or help LLMs choose correctly.
max_records parameter lacks numeric constraints. Parameter description says 'Maximum number of records to return (default: 10).' but does not specify min (1?), max (1000?), or what happens if the API has fewer results. LLMs may pass 0 or millions without guidance.