Skip to main content
Glama
HeshamFS

MCP Materials Server

by HeshamFS

get_properties

Retrieve comprehensive material properties from Materials Project database using a material ID. Returns detailed JSON data for analysis and research applications.

Instructions

Get detailed properties for a specific material from Materials Project.

Args:
    material_id: Materials Project ID (e.g., "mp-149" for Silicon)

Returns:
    JSON with comprehensive material properties

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
material_idYes

Implementation Reference

  • The primary handler for the 'get_properties' tool. This function is decorated with @mcp.tool(), which registers it as an MCP tool. It takes a material_id, checks the Materials Project API key, fetches summary data using MPRester, extracts thermodynamic, electronic, symmetry, and other properties, and returns a formatted JSON response.
    def get_properties(
        material_id: str,
    ) -> str:
        """
        Get detailed properties for a specific material from Materials Project.
    
        Args:
            material_id: Materials Project ID (e.g., "mp-149" for Silicon)
    
        Returns:
            JSON with comprehensive material properties
        """
        has_key, key_or_error = check_api_key()
        if not has_key:
            return json.dumps({"error": key_or_error})
    
        try:
            from mp_api.client import MPRester
    
            with MPRester(key_or_error) as mpr:
                doc = mpr.materials.summary.get_data_by_id(material_id)
    
                properties = {
                    "material_id": str(doc.material_id),
                    "formula": doc.formula_pretty,
                    "elements": [str(el) for el in doc.elements],
                    "nelements": doc.nelements,
                    "nsites": doc.nsites,
                    "volume": doc.volume,
                    "density": doc.density,
    
                    # Thermodynamic properties
                    "formation_energy_per_atom": doc.formation_energy_per_atom,
                    "energy_above_hull": doc.energy_above_hull,
                    "is_stable": doc.is_stable,
    
                    # Electronic properties
                    "band_gap": doc.band_gap,
                    "is_metal": doc.is_metal,
                    "is_magnetic": doc.is_magnetic,
                    "total_magnetization": doc.total_magnetization,
    
                    # Symmetry
                    "crystal_system": str(doc.symmetry.crystal_system.value) if doc.symmetry and hasattr(doc.symmetry.crystal_system, 'value') else (str(doc.symmetry.crystal_system) if doc.symmetry else None),
                    "space_group_symbol": doc.symmetry.symbol if doc.symmetry else None,
                    "space_group_number": doc.symmetry.number if doc.symmetry else None,
                    "point_group": doc.symmetry.point_group if doc.symmetry else None,
    
                    # Provenance
                    "database_ids": doc.database_IDs if hasattr(doc, 'database_IDs') else None,
                }
    
                return json.dumps(properties, indent=2)
    
        except Exception as e:
            return json.dumps({"error": str(e)})

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HeshamFS/mcp-materials-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server