lint_filterLABSCO 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 asbaseUrls, and get the first 5 results as a preview plus a resource link to the complete JSONlint_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 querylist_providers— discover the public OPTIMADE endpoints available globally- Reference material the model can read on demand:
optimade://docs/filtersfor the grammar,optimade://spec/queryable_propsfor the whitelist of properties that must be queryable,optimade://docs/providers,optimade://docs/filter_presetsand a prompt atoptimade://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
USE CASES
Searching several materials databases at once
Describe the material constraints in plain language, let the model compose the filter, and run it across the providers you name.
Catching a bad filter before spending a request
Lint the filter first and read whether it is valid, non-standard, or a syntax error.
Coming back to a large result set
Re-read the saved JSON of an earlier query by its identifier instead of running the search again.
3 tools
Listed in project docs. Your client may show a different list.
query_optimadelist_providersBEFORE YOU INSTALL
What to know first
Tools you get
3 tools named in the project's documentation.
Requires
uvx on PATH
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
uv pip install optimade-mcp-serverMCP Clients
Cline, Any MCP client
{
"mcpServers": {
"optimade_mcp_server": {
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "uvx",
"args": [
"optimade-mcp-server"
]
}
}
}