这是一个通过Model Context Protocol (MCP)协议查询兼容Optimade材料数据库的工具,支持完全可配置的自定义过滤器预设和提供者端点。
此工具可通过MCP协议在多个OPTIMADE数据库(如Materials Project、Materials Cloud、COD)之间进行结构化数据查询。主要功能包括:
注意:查询需要两个参数。一个是OPTIMADE查询过滤器,另一个是要查询的数据库。
optimade://docs/filters – 过滤器语法规则及示例(Markdown)optimade://spec/queryable_props – 白名单:标记为“必须是可查询属性”的字段(JSON)optimade://docs/providers – 默认提供者URL(JSON,由配置生成)optimade://docs/filter_presets – 命名过滤器片段(JSON)optimade://prompts/ask_for_provider – 系统提示以指导URL选择及检查(文本)optimade://results/<uuid> – 动态:过去查询的完整JSONlint_filter(filter) → "ok" / "warn: …" / "syntax error: …"query_optimade(filter, baseUrls?) → 预览(前5个)+ 完整JSON资源链接list_providers() → 发现全球公共OPTIMADE端点baseUrls → 2) 配置默认值 → 3) 回退单镜像(https://optimade.fly.dev)HTTP_PROXY,HTTPS_PROXY)。| URI | 类型 | 目的 |
|---|---|---|
optimade://docs/filters | text/markdown | 完整语法规则及示例 |
optimade://spec/queryable_props | application/json | 白名单:标记为“必须是可查询属性”的字段 |
optimade://docs/providers | application/json | 默认提供者URL(来自配置) |
optimade://docs/filter_presets | application/json | 命名过滤器片段供参考 |
optimade://prompts/ask_for_provider | text/plain | 系统提示以指导URL选择及检查 |
optimade://results/<uuid> | application/json | 动态:过去查询的完整JSON |
重要:资源不会自动注入。您的MCP客户端必须调用
resources/read(或您配置启动/工作流以读取它们)。
uv pip install optimade-mcp-server
{
"mcpServers": {
"optimade_mcp_server": {
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "uvx",
"args": [
"optimade-mcp-server"
]
}
}
}
如果您需要使用VPN或代理,请在项目根目录创建一个.env文件:
HTTP_PROXY=http://127.0.0.1:<your-port>
HTTPS_PROXY=http://127.0.0.1:<your-port>
如果您不需要代理,可以在源代码中注释掉或移除代理设置。
本项目采用MIT许可证。详情见LICENSE。
Q: 资源会自动注入到模型上下文中吗?
A: 不会。客户端必须调用resources/read(或配置启动/工作流步骤)。如果省略baseUrls,服务器会自动应用提供者回退。
Q: 我可以使用非白名单字段吗?
A: 可以。lint_filter返回warn: band_gap。模型应显示警告并询问您确认后再进行查询。
Q: 如何导出完整结果?
A: 服务器始终会在optimade://results/<uuid>下保存完整JSON。