OPTIMADE's filter grammar is strict and its queryable properties vary by provider, which is exactly the kind of thing a model gets subtly wrong. Separating validation from execution means a malformed filter fails locally with a message, and a non-standard field produces a warning you can accept rather than a silent empty result. Saving the full JSON separately keeps large structure sets out of the conversation.
An MCP server over the OPTIMADE protocol, which is how materials databases such as Materials Project, Materials Cloud and COD expose structured queries. The model writes the OPTIMADE filter; the server checks it, runs it against the databases you pick, saves the full JSON result locally and hands back a short preview with a link to the rest.
- `query_optimade` — run a filter against one or more providers, given as `baseUrls`, and get the first 5 results as a preview plus a resource link to the complete JSON
- `lint_filter` — validate a filter before it is sent, returning ok, a warning when a field is outside the queryable whitelist, or a syntax error that blocks the query
- `list_providers` — discover the public OPTIMADE endpoints available globally
- Reference material the model can read on demand: `optimade://docs/filters` for the grammar, `optimade://spec/queryable_props` for the whitelist of properties that must be queryable, `optimade://docs/providers`, `optimade://docs/filter_presets` and a prompt at `optimade://prompts/ask_for_provider`
- Past results kept addressable at `optimade://results/<uuid>`, so a large response can be revisited without re-querying
Nothing — no account, no key. Install with `uv pip install optimade-mcp-server` (0.1.2 in pyproject) and launch with `uvx optimade-mcp-server` over stdio. Behind a proxy, set `HTTP_PROXY` and `HTTPS_PROXY` in a `.env` file at the project root. Provider selection falls back in order: the URLs you pass, then the configured defaults, then a single mirror at `https://optimade.fly.dev`. Resources are not injected automatically — the client has to read them.
One command — uv pip install optimade-mcp-server
