Skip to main content
Glama
HeshamFS

MCP Materials Server

by HeshamFS
README.md7.43 kB
# MCP Materials Server A Model Context Protocol (MCP) server that provides AI assistants with access to materials science databases, starting with the [Materials Project](https://materialsproject.org/) API. Built with the [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) using FastMCP. ## Features ### Tools (10) | Tool | Description | | ------------------------------ | ------------------------------------------------------------------------ | | `search_materials` | Search materials by chemical formula (e.g., "Fe2O3", "LiFePO4") | | `get_structure` | Retrieve crystal structure in CIF, POSCAR, or JSON format | | `get_properties` | Get comprehensive material properties (band gap, formation energy, etc.) | | `compare_materials` | Side-by-side comparison of multiple materials | | `search_by_elements` | Find materials containing/excluding specific elements | | `search_by_band_gap` | Search by electronic band gap range (eV) | | `get_similar_structures` | Find materials with similar crystal structures | | `get_phase_diagram` | Phase stability analysis for chemical systems | | `get_elastic_properties` | Mechanical properties (bulk/shear modulus, Debye temperature) | | `search_by_elastic_properties` | Find materials by mechanical property ranges | ### Resources (2) | Resource | URI | Description | | --------------- | ----------------------------- | ----------------------------------------------- | | Periodic Table | `materials://periodic-table` | Element data with atomic numbers and masses | | Crystal Systems | `materials://crystal-systems` | The 7 crystal systems with symmetry constraints | ### Prompts (3) | Prompt | Description | | ---------------------------- | ------------------------------------------------- | | `analyze_material` | Comprehensive analysis workflow for a material ID | | `find_battery_materials` | Search for battery electrode candidates | | `compare_alloy_compositions` | Compare phases in an alloy system | ## Installation ### Prerequisites - Python 3.11 or higher - Materials Project API key ([get one free](https://materialsproject.org/api)) ### Setup ```bash # Clone or navigate to the project cd mcp-materials-server # Create virtual environment python -m venv .venv # Activate virtual environment # On Windows: .venv\Scripts\activate # On macOS/Linux: source .venv/bin/activate # Install the package pip install -e ".[dev]" ``` ### Set API Key ```bash # On Windows (PowerShell): $env:MP_API_KEY = "your_api_key_here" # On Windows (CMD): set MP_API_KEY=your_api_key_here # On macOS/Linux: export MP_API_KEY="your_api_key_here" ``` ## Usage ### Run the Server ```bash # Using the installed command mcp-materials # Or run directly python -m mcp_materials.server ``` ### Claude Desktop Integration Add to your Claude Desktop configuration file: **Location:** - Windows: `%APPDATA%\Claude\claude_desktop_config.json` - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` **Configuration:** ```json { "mcpServers": { "materials": { "command": "python", "args": ["-m", "mcp_materials.server"], "cwd": "D:\\path\\to\\mcp-materials-server", "env": { "MP_API_KEY": "your_api_key_here" } } } } ``` After adding the configuration, restart Claude Desktop. ## Example Queries Once connected to Claude, you can ask: ### Basic Searches - "Search for lithium cobalt oxide materials" - "Find materials with formula Fe2O3" - "Search for materials containing Li, Fe, and O" ### Property Lookups - "Get the properties of mp-149 (Silicon)" - "What is the band gap of mp-19017?" - "Get the crystal structure of mp-149 in CIF format" ### Advanced Analysis - "Find materials with band gap between 1.5 and 2.5 eV" - "Get the elastic properties of silicon (mp-149)" - "Generate a phase diagram for the Li-Fe-O system" - "Compare the properties of LiCoO2 and LiFePO4" - "Find stiff materials with bulk modulus > 200 GPa" ### Research Workflows - "Analyze material mp-149 comprehensively" - "Find potential Li-ion battery cathode materials" - "Compare phases in the Fe-Cr-Ni alloy system" ## Development ### Run Tests ```bash # Run all tests pytest # Run with verbose output pytest -v # Run specific test class pytest tests/test_server.py::TestToolFunctions -v ``` ### Lint Code ```bash # Check for issues ruff check src/ # Auto-format ruff format src/ ``` ### Project Structure ``` mcp-materials-server/ ├── src/ │ └── mcp_materials/ │ ├── __init__.py # Package version │ └── server.py # MCP server (10 tools, 2 resources, 3 prompts) ├── tests/ │ ├── __init__.py │ ├── conftest.py # Pytest configuration │ └── test_server.py # Comprehensive test suite ├── pyproject.toml # Project configuration ├── claude_desktop_config.example.json ├── .gitignore └── README.md ``` ## API Reference ### Tool Details #### `search_materials(formula, max_results=10)` Search by chemical formula. Returns material IDs, band gaps, formation energies, and stability. #### `get_structure(material_id, format="cif")` Get crystal structure. Formats: `cif`, `poscar`, `json`. #### `get_properties(material_id)` Full property set: composition, symmetry, electronic, thermodynamic properties. #### `compare_materials(material_ids)` Compare list of materials side-by-side. #### `search_by_elements(elements, exclude_elements=None, max_results=10)` Find materials by element composition. #### `search_by_band_gap(min_gap=0, max_gap=10, direct_gap_only=False, max_results=10)` Search by band gap range in eV. #### `get_similar_structures(material_id, max_results=5)` Find materials with same space group. #### `get_phase_diagram(elements)` Build phase diagram for chemical system. Returns stable/unstable phases with decomposition products. #### `get_elastic_properties(material_id)` Mechanical properties: bulk modulus, shear modulus (Voigt/Reuss/VRH), Poisson ratio, Debye temperature. #### `search_by_elastic_properties(min_bulk_modulus=None, max_bulk_modulus=None, min_shear_modulus=None, max_shear_modulus=None, max_results=10)` Filter materials by mechanical properties. ## Roadmap - [ ] Add AFLOW database integration - [ ] Add OQMD database support - [ ] Add electronic structure (DOS, band structure) tools - [ ] Add XRD pattern simulation - [ ] Add synthesis route suggestions - [ ] Add surface/interface properties ## License MIT ## References - [Model Context Protocol](https://modelcontextprotocol.io/) - [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) - [Materials Project](https://materialsproject.org/) - [Materials Project API](https://api.materialsproject.org/) - [pymatgen](https://pymatgen.org/) ## Author Hesham Salama

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