使用说明
优化MCP服务器
一个模型上下文协议(MCP)工具,用于查询与Optimade兼容的材料数据库、完全可配置的自定义过滤器预设和提供者端点。
🎯 概述
该工具允许通过MCP协议跨多个OPTIMADE数据库(例如,材料项目、材料云、COD)进行结构化数据查询。关键能力包括:
1.通过uvx、cline可轻松部署
2.可以用自然语言与客户端交互,使大型语言模型能够生成OPTIMADE查询过滤器。
3.OPTIMADE返回的JSON将保存在本地,并在交互过程中生成摘要。
注意:查询需要两个参数。一个是优化查询过滤器,另一个是要查询的数据库。
✨ 特性
- MCP资源 该模型可以按需读取:
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>– 动态的:过去查询的完整JSON
- 工具
lint_filter(filter)→"ok"/"warn: …"/"syntax error: …"
(警告=不在白名单中,但允许;语法错误=被阻止)query_optimade(filter, baseUrls?)→ 预览(前5个)+完整JSON资源链接list_providers()→ 发现全球公共OPTIMADE端点
- 提供商回退
- 用户提供
baseUrls→ 2) 配置默认值→ 3) 回退单镜(https://optimade.fly.dev)
- 用户提供
- 代理就绪 通过
.env(HTTP_PROXY,HTTPS_PROXY).
🧩 LLM可以阅读什么(参考资料)
| 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推荐
1.安装工具:
uv pip install optimade-mcp-server
2.在cline或任何兼容MCP的启动器中,按如下方式配置工具:
{
"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许可证获得许可。有关详细信息,请参阅许可证。
🙋 常见问题解答
Q 资源是否自动注入到模型的上下文中?
A. 不,客户必须打电话 resources/read (或配置启动/工作流步骤)。服务器 做 如果满足以下条件,则自动应用提供程序回退 baseUrls 省略。
Q 我可以使用非白名单字段吗?
A. 对。 lint_filter 回报 warn: band_gap。模型应显示警告,并要求您在查询前确认。
Q 如何导出完整结果?
A. 服务器总是将完整的JSON保存在 optimade://results/<uuid>.