MCP Server — Physical Constants & Materials Properties Database
Atomic Context provides 9 well-named, read-only tools with clear descriptions and structured schemas. All tools follow verb_noun naming (get_*, search_*, list_). Descriptions are detailed (150-300 chars) and explain WHAT, WHEN, and WHAT-RETURNS. Input schemas are present with type declarations and parameter descriptions. However, output schemas are not documented in the source code, LLMs cannot see what fields to expect from responses. No error handling guidance is visible. No tool annotations (readOnlyHint, etc.) despite all tools being read-only. Parameter descriptions could be more prescriptive about valid formats and ranges.
Returns the exact CODATA value (inline notation with full uncertainty) for a fundamental physical constant. Query by symbol (e.g. "c", "h", "e", "G", "k_B", "N_A", "alpha") or full name (e.g. "speed of light", "Planck constant", "elementary charge"). Returns value, unit, uncertainty, category, CODATA year, and citable source/DOI.
Returns ALL properties of a given category for a material in one call. category: mechanical | electrical | thermal | optical | magnetic
Returns one or more property values for a material, with inline uncertainty notation, unit, measurement temperature, condition, and citable open-source reference. property_name examples: mechanical: tensile_strength_ultimate, yield_strength, hardness_vickers, elastic_modulus, fracture_toughness, elongation_at_break electrical: electrical_resistivity, carrier_mobility, bandgap, conductivity thermal: thermal_conductivity, specific_heat_capacity, melting_point, thermal_expansion_coefficient, curie_temperature optical: refractive_index, absorption_coefficient, optical_bandgap magnetic: saturation_magnetization, coercivity, relative_permeability material examples: "Aluminum 6061", "Silicon", "Alumina", "Nickel", "Ti-6Al-4V", "316L Stainless Steel", "GaAs", "SiC", "Inconel 625"
Returns the exact PDG properties for a fundamental particle: mass (CODATA inline notation), spin, electric charge, lifetime, and citable PDG source. Query by common name: "electron", "proton", "neutron", "muon", "tau", "W boson", "Z boson", "Higgs boson", "photon", "up quark", "down quark", etc.
Output schemas not documented. LLMs cannot see what fields responses contain (e.g., does get_constant return {value, unit, uncertainty, category, year, doi} or a flat string?). This forces LLMs to guess field names for downstream processing.
No tool annotations despite all 9 tools being read-only. Spring AI supports @Tool(readOnlyHint=true), using it would signal to clients that these tools are safe to call without confirmation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Lists all available categories of physical constants: universal, electromagnetic, atomic, physico-chemical.
Lists all available property names and their categories for a given material. Useful before calling get_material_property to know what data is available.
Searches fundamental physical constants by keyword. Returns a list of matching constants with their CODATA values and units. Useful for discovering available constants or finding constants by category (e.g. "electromagnetic", "atomic", "universal", "physico-chemical").
Searches the materials database by name, composition, or sub-category. Optionally filter by category: metal, alloy, semiconductor, ceramic. Returns material name, composition, category, crystal structure, and data source. Examples: "steel", "GaAs", "titanium alloy", "oxide ceramic", "nickel superalloy"
Searches particle properties by name, symbol, or type. Types include: lepton, baryon, meson, boson, quark. Example queries: "lepton", "quark", "boson", "charm".
Parameter descriptions lack prescriptive constraints. E.g., 'symbolOrName' in get_constant says 'Symbol or name' but does not specify case-sensitivity, valid symbol format, or fallback behavior. 'temperatureK' accepts null but does not state the default (298.15K is mentioned in description but not in schema).
No error handling guidance visible in tool definitions. If a constant symbol is not found, what does the tool return? An empty result? An error message? LLMs need recovery hints like 'Try search_constants() with a keyword.'
search_materials and search_particles accept free-form query strings with no format guidance. LLMs may pass multi-word queries, special characters, or ambiguous terms. Clarify: 'Keyword search; separate multiple terms with spaces. Supports partial matches.'