JUHE API Marketplace
fair2wise avatar
MCP Server

Materials Project MCP

A tool for querying and analyzing materials data from the Materials Project database using natural language prompts, enabling materials scientists to explore properties, structures, and compositions of materials through conversational interfaces.

1
GitHub Stars
8/23/2025
Last Updated
No Configuration
Please check the documentation below.

README Documentation

Materials Project MCP

A fastmcp-based tool for writing prompts against data in the Materials Project database.

Installation

You can install the package from source:

pip install -e .

Or using uv:

uv pip install -e .

Usage

You can use the CLI:

mp-mcp

Or import in your Python code:

from materials_project_mcp.main import create_mcp

mcp = create_mcp()
mcp.run()

API Key Setup

The Materials Project API requires an API key. You can set up your API key in several ways:

  1. Pass it directly to the MPRester:

    from mp_api.client import MPRester
    with MPRester("your_api_key_here") as mpr:
        # do stuff with mpr
    
  2. Set it as an environment variable:

    export MP_API_KEY="your_api_key_here"
    

Example

Here's a simple example that demonstrates how to use the MCP tools directly:

import os
import json
from materials_project_mcp.tools import (
    get_materials_with_elements,
    get_material_details,
    find_materials_by_formula
)

# Set your API key
os.environ["MP_API_KEY"] = "your_api_key_here"
# Or load it from a file
# with open("~/materials_project_api.key", "r") as f:
#     os.environ["MP_API_KEY"] = f.read().strip()

# Function to print JSON data in a readable format
def print_json(data):
    print(json.dumps(data, indent=2))

# Find materials containing Fe and O
print("\n=== Finding materials containing Fe and O ===")
materials = get_materials_with_elements(
    elements=["Fe", "O"],
    max_records=3
)
print_json(materials)

# Get details for a specific material
if materials:
    material_id = materials[0]["material_id"]
    print(f"\n=== Getting details for material {material_id} ===")
    details = get_material_details(material_id)
    print_json(details)

# Find materials with a specific formula
print("\n=== Finding materials with formula Fe2O3 ===")
formula_materials = find_materials_by_formula(
    formula="Fe2O3",
    max_records=3
)
print_json(formula_materials)

Development

Local Setup

# Clone the repository
git clone https://github.com/justaddcoffee/materials-project-mcp.git
cd materials-project-mcp

# Install development dependencies
uv pip install -e ".[dev]"

Running Tests

pytest

Quick Actions

Key Features

Model Context Protocol
Secure Communication
Real-time Updates
Open Source