MOF结构分析工具

一个用于金属有机框架(MOF)结构分析和解构的工具,支持自动化识别SBU、有机配体和金属簇,并提供清洁结构和堆叠分析功能。

  • by lichman0405
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 lichman0405/mofstructure-mcp

使用说明

mofstructure-MCP版

精益、MCP支持的优秀产品重新包装 mof结构 图书馆by Dinga Wonanke博士.


站在巨人的肩膀上

让我们直言不讳:原版 mofstructure 是最令人印象深刻的作品之一 由单个研究人员编写的计算材料科学软件。

在一个“框架分析”通常意味着运行黑盒二进制文件的领域 希望输出有意义,沃南克博士建造了一些真正不同的东西。 内部的解构引擎 mofdeconstructor.py --超过2000行 精心推理的图论——可以采用任何任意的MOF晶体结构 正确识别每一个次级建筑单元、每一个有机配体、每一种金属 集群、SBU拓扑、每个金属中心的协调数以及 延伸点 --全部自动完成,全部使用纯Python,无需 一个预先策划的已知拓扑数据库,用于查找相关信息。

这是一个难题。大多数工具要么要求您手动标记事物,要么依赖 关于突破任何非标准或专有的启发式模式匹配 闭源二进制文件。 mofstructure 正确吗:它构建了完整的分子 图,识别金属节点,找到有机桥,定位断点, 组装建筑单元,然后把合适的ASE交还给你 Atoms 对象与 SMILES、InChI和InChIKey已经通过OpenBabel进行了计算。

访客移除逻辑同样深思熟虑。与其天真“删小” 分子启发式分析图连通性以找到真正未结合的 成分,这意味着它即使在不寻常的溶剂化物和无序的情况下也能正常工作 结构会阻碍更简单的方法。

以及COF堆叠分析、PBC包装、IUPAC名称查找数据库——所有这些 它是一种需要多年领域知识才能构建的基础设施 正确地。

如果你正在进行任何严重的高通量MOF筛查或计算网状 化学,阅读原始代码库是 必要的这个叉子是不存在的 没有非凡的基础。

原始存储库: https://github.com/bafgreat/mofstructure
原作者: Dinga Wonanke博士https://www.dingawonanke.com
原始纸张: Wonanke等人。, 开源软件杂志, 2024.


这个叉子是什么?

本版将原作精简为重点 MCP(模型上下文协议)服务器 以便人工智能代理,特别是那些构建 随着 羽状流 --可以调用MOF 通过stdio或HTTP将结构操作作为工具。

删除了什么以及为什么

已删除 原因
孔隙度计算(porosity.py) 由单独提供 zeopp后端 MCP服务
露天金属场地检测(get_oms) 由提供 mofchecker mcp 和 zeopp-backend
obsolate/ 目录 死代码,被当前实现取代
Sphinx文档 已过期;MCP部署不需要

添加了什么

已添加 说明
mofstructure/mcp_server.py FastMCP服务器通过stdio公开5个工具
mcp 依赖关系 MCP Python SDK
mofstructure_mcp CLI入口点 python -m mofstructure.mcp_server

三服务架构

此分叉旨在与两个配套的MCP服务一起工作:

mofchecker-mcp      →  "Is this structure valid?"        (quality checks)
mofstructure-mcp    →  "What is this structure made of?" (deconstruction + cleanup)
zeopp-backend       →  "How porous is this structure?"   (geometric analysis)

将您的代理指向这三个点,它可以从原始数据执行端到端的MOF分析 CIF文件。


安装

重要 --每个MCP服务器都应该在自己的虚拟环境中运行。

git clone https://github.com/lichman0405/mofstructure.git
cd mofstructure
python -m venv .venv
# Linux / macOS
source .venv/bin/activate
# Windows PowerShell
.\.venv\Scripts\Activate.ps1

pip install -e .

可选RDKit支持:

pip install -e ".[rdkit]"

MCP工具

服务器公开了五个工具。每个工具都接受 cif_path (绝对路径 在服务器文件系统上)或 cif_content (CIF原始文本)。

工具 说明
remove_guest 去除未结合的客体分子;返回干净主机CIF
get_sbu 用SMILES/InChI/InChIKey分解为金属+有机SBU
get_ligands 用化学信息学方法解构成金属簇+有机配体
wrap_structure 将原子包裹到晶胞中——修复“断裂键”PBC可视化伪影
analyze_cof_stacking 计算层间横向偏移和高度;AA/AB/混合堆叠分类

运行服务器

stdio(适用于羽毛流/克劳德桌面)

python -m mofstructure.mcp_server
# or, after pip install:
mofstructure_mcp

羽状流集成

编辑 ~/.featherflow/config.json:

{
  "tools": {
    "mcpServers": {
      "mofstructure": {
        "command": "/path/to/mofstructure/.venv/bin/python",
        "args": ["-m", "mofstructure.mcp_server"],
        "toolTimeout": 120
      },
      "mofchecker": {
        "command": "/path/to/mofchecker/.venv/bin/python",
        "args": ["-m", "mofchecker.mcp_server"],
        "toolTimeout": 120
      },
      "zeopp": {
        "url": "http://localhost:9877/mcp",
        "toolTimeout": 120
      }
    }
  }
}

在Windows上,将路径替换为 C:/path/to/mofstructure/.venv/Scripts/python.exe.


用作Python库

API库与原始库相比没有变化:

from mofstructure import structure

mof = structure.MOFstructure(filename="path/to/your.cif")

# Remove guest molecules
clean = mof.remove_guest()

# Deconstruct into SBUs  (cheminfo=True computes SMILES / InChI / InChIKey)
metal_sbus, organic_sbus = mof.get_sbu(cheminfo=True)
for sbu in metal_sbus:
    print(sbu.info['sbu_type'], sbu.info['smi'])

# Deconstruct into ligands and metal clusters
metal_clusters, organic_ligands = mof.get_ligands(cheminfo=True)
for ligand in organic_ligands:
    print(ligand.info['inchikey'])

命令行工具

命令 描述
mofstructure <cif_file> [output_dir] 将单个CIF解构为SBU和配体
mofstructure_database <cif_folder> [output_dir] 将CIF文件夹批处理到数据库中
mofstructure_building_units <cif_folder> 仅限批量解构
mofstructure_curate <cif_folder> 管理/验证CIF文件夹
mofstructure_mcp 启动MCP服务器(stdio)

许可证

麻省理工学院——与最初的项目相同。