Used as a dependency for the server implementation to handle asynchronous HTTP requests to the Materials Project API.
Provides containerized deployment of the Materials Project MCP server, making it easy to run the server regardless of the host environment.
Provides issue tracking and version control for the Materials Project MCP server codebase.
Used for data validation and serialization in the server implementation when handling Materials Project data.
Supports local Python installation of the Materials Project MCP server as an alternative to Docker deployment.
Materials Project MCP
A Model Context Protocol (MCP) server for querying the Materials Project database using the mp_api client.
Requirements
- Materials Project API Key - Get one here (free account required)
- Docker Desktop (must be running)
- Python 3.12+ with uv
Getting Your Materials Project API Key
- Visit Materials Project
- Create a free account or log in
- Go to your dashboard
- Navigate to API settings
- Generate or copy your API key
- Keep this key secure - you'll need it for setup
Installation Options
Step 1: Docker (Recommended)
Using Docker Run
- Install Docker Desktop:
- Download from docker.com
- Install and make sure Docker Desktop is running
- Pull the Docker image:
- Test the installation:
Using Docker Compose (Easiest)
- Install Docker Desktop and make sure it's running
- Clone the repository:
- Create a
.env
file: - Test the setup:
- For background running:
- Stop the service:
Step 1 : Local Python Installation
- Install uv (if not already installed):
- Clone the repository:
- Create and activate virtual environment:
- Install dependencies:
- Set your API key:
- Test the installation:
Step 2 : Setup with Claude Desktop
- Locate your Claude configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- Choose your configuration method:Using Docker Run
- Replace
your-materials-project-api-key
with your actual API key - Ensure Docker Desktop is running
- Restart Claude Desktop
- Verify installation:
- Open a new chat in Claude
- Ask something like "Search for silicon materials in the Materials Project database" or test any of the availabe tools.
- You should see Materials Project data in the response
Setup with VS Code Copilot
- Open VS Code Settings:
- Press
Ctrl+Shift+P
(Windows/Linux) orCmd+Shift+P
(macOS) - Type "Preferences: Open User Settings (JSON)"
- Select it to open settings.json
- Press
- Add MCP configuration:
- Alternative: Local Python setup for VS Code:
- Replace placeholders:
your-api-key
with your Materials Project API key/path/to/your/server.py
with the actual path to server.py
- Ensure Docker Desktop is running (for Docker configurations)
- Restart VS Code
- Test in VS Code:
- Open VS Code chat/copilot
- Ask about materials from the Materials Project
- The Docker container will start automatically when VS Code makes requests
Testing & Development (developers)
Testing Your Installation
- Test MCP server locally:Look for the line "🔗 Open inspector with token pre-filled:" and use that URL
Development Workflow
- Create a feature branch:
- Make your changes and test:
- Commit and push:
- Open a pull request
Available Tools & Features
- search_materials - Search by elements, band gap range, stability
- get_structure_by_id - Get crystal structures and lattice parameters
- get_electronic_bandstructure - Plot electronic band structures
- get_electronic_dos_by_id - Get electronic density of states
- get_phonon_bandstructure - Plot phonon band structures
- get_phonon_dos_by_id - Get phonon density of states
- get_ion_reference_data_for_chemsys - Download aqueous ion reference data for Pourbaix diagrams
- get_cohesive_energy - Calculate cohesive energies
- get_atom_reference_data - Retrieve reference energies of isolated neutral atoms
- get_magnetic_data_by_id - Magnetic properties and ordering
- get_charge_density_by_id - Charge density data
- get_dielectric_data_by_id - Dielectric constants and properties
- get_diffraction_patterns - X-ray and neutron diffraction
- get_xRay_absorption_spectra - XAFS, XANES, EXAFS spectra
- get_elastic_constants - Mechanical properties
- get_suggested_substrates - Find substrates for thin films
- get_thermo_stability - Thermodynamic stability analysis
- get_surface_properties - Surface energies, work functions, and Wulff shapes
- get_grain_boundaries - Computed grain boundaries for a material
- get_insertion_electrodes - Insertion electrode and battery data
- get_oxidation_states - Element oxidation states, formula, and structure info
Troubleshooting
Common Issues
- "Invalid API key" error:
- Verify your API key is correct
- Check that you've set the environment variable properly
- Ensure your Materials Project account is active
- "Docker not found" or "Cannot connect to Docker daemon":
- Make sure Docker Desktop is installed and running
- You should see the Docker Desktop icon in your system tray/menu bar
- Try
docker --version
to verify Docker is accessible - On Windows/Mac: Open Docker Desktop application
- On Linux: Start Docker service with
sudo systemctl start docker
- Container startup issues:
- Docker containers start automatically when Claude/VS Code makes requests
- No need to manually start containers - they're ephemeral (start → run → stop)
- Each query creates a fresh container instance
- Docker Compose issues:
- Make sure Docker Compose is installed:
docker-compose --version
- Check your
.env
file exists and has the correct API key - Verify the docker-compose.yml file is in the correct location
- Ensure Docker Desktop is running
- Make sure Docker Compose is installed:
- MCP server not recognized in Claude:
- Check your configuration file path
- Verify JSON syntax is correct
- Restart Claude Desktop after configuration changes
- Ensure Docker Desktop is running
Getting Help
- MCP Inspector: Use
mcp dev server.py
for interactive testing and debugging. - GitHub Issues: Create an Issue for bug reports, feature requests, or questions.
- Materials Project API Docs: docs.materialsproject.org
- MCP Documentation: modelcontextprotocol.io
- Docker Help: docs.docker.com
Authors
- Benedict Debrah
- Peniel Fiawornu
Reference
Yin, Xiangyu. 2025. "Building an MCP Server for the Materials Project." March 23, 2025. https://xiangyu-yin.com/content/post_mp_mcp.html.
This server cannot be installed
The Materials Project MCP Server is server that provides programmatic access to the Materials Project database. It enables LLMs, to search, analyze, and retrieve up to date materials science data.
Related MCP Servers
- -securityAlicense-qualityMCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.Last updated -43TypeScriptMIT License
- AsecurityFlicenseAqualityA MCP Server used to collect MCP Servers over the internet.Last updated -318Python
- AsecurityAlicenseAqualityAn MCP server that provides access to project files and their contents, allowing users to retrieve file data from specified project directories with error handling and configuration options.Last updated -14TypeScriptMIT License
- -securityAlicense-qualityMCP Server provides a simpler API to interact with the Model Context Protocol by allowing users to define custom tools and services to streamline workflows and processes.Last updated -132TypeScriptMIT License