LabscoMCP early access ↗
dianfengxiaoboMCP SERVER

OPTIMADE MCP Server

Query OPTIMADE materials databases in natural language, with a filter linter that catches bad syntax before it costs a request.

by dianfengxiaobo ↗Physical Sciences & Scientific ComputingCommunity

LABSCO SUMMARY

The linter is what makes a model usable against OPTIMADE.

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.

What it is

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.

What you get

  • 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

Requirements

Nothing — no account, no key. Install with uv pip install optimade-mcp-server (version 0.1.2) 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.

Setup effort

One command — uv pip install optimade-mcp-server