mcpField
C
cmxflow

cmxflow

本地服务
b-shields.github.io科研与教育28 周前更新

关于 cmxflow

cmxflow 是用于组合和调优化学信息学及计算化学工作流的 Python 框架,提供分子处理与对接模块及贝叶斯优化。其 MCP 服务可让 LLM Agent 构建、运行和优化工作流。

主要功能

  1. 01可组合的分子处理模块
  2. 02对接与虚拟筛选工作流
  3. 03贝叶斯参数优化
  4. 04计算密集型模块的并行执行
  5. 05工作流保存与加载
  6. 06通过 MCP 工具查看结构

适用场景

  1. 01准备用于对接的配体
  2. 02对接相关分子系列
  3. 03调优虚拟筛选的指纹参数
  4. 04通过 LLM Agent 构建并运行工作流

MCP 相关

MCP 服务提供五种工具,用于构建、运行、优化和管理工作流,以及查看分子结构。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"b-shields-cmxflow": {
"command": "uvx",
"args": [
"cmxflow"
]
}
}
}
启动命令uvx cmxflow

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicmxflow0.4.0

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
indexany否用于插入/移除/并行化操作的位置。
actionstring是“create”、“add_block”、“remove_block”、“list_blocks”、“validate”、“clear”、“show”、“make_parallel”、“get_params”之一。
block_typeany否Block 类名(例如,“ConformerGenerationBlock”)。
block_configany否Block 初始化参数。对于“make_parallel”操作,此项指定并行执行选项:max_workers、chunk_size、ordered、error_handling。
rdkit_methodany否对于 RDKitBlock,方法路径(例如,“rdkit.Chem.Descriptors.MolWt”)。

详细介绍

cmxflow 🧪

Docs CI codecov Python 3.11+ Code style: black License: MIT

使用可组合的模块构建化学信息学和计算化学工作流。使用贝叶斯优化调整端到端流程,或者让大模型 Agent 来完成。

快速示例

为分子对接准备配体
from cmxflow import Workflow
from cmxflow.sources import MoleculeSourceBlock
from cmxflow.operators import (
    MoleculeStandardizeBlock,
    IonizeMoleculeBlock,
    EnumerateStereoBlock,
    ConformerGenerationBlock,
)
from cmxflow.sinks import MoleculeSinkBlock

# Standardize → ionize (pH 6.4–8.4) → enumerate stereo → generate 3D conformers
workflow = Workflow()
workflow.add(
    MoleculeSourceBlock(),
    MoleculeStandardizeBlock(),
    IonizeMoleculeBlock(),
    EnumerateStereoBlock(),
    ConformerGenerationBlock(),
    MoleculeSinkBlock(),
)
workflow("library.smi", "prepared.sdf")
对一组同系化合物进行对接

纯 Python 对接。默认使用自由对接(index_poses=False);基于骨架索引的模式会按 Bemis–Murcko 骨架缓存构象,在构象对齐一致的同系化合物组中可将吞吐量提升约 3 倍。

from cmxflow import Workflow
from cmxflow.sources import MoleculeSourceBlock
from cmxflow.operators import ConformerGenerationBlock, MoleculeDockBlock
from cmxflow.sinks import MoleculeSinkBlock
from cmxflow.utils.parallel import make_parallel

workflow = Workflow()
workflow.add(
    MoleculeSourceBlock(),
    ConformerGenerationBlock(),
    make_parallel(
        MoleculeDockBlock(
            receptor="receptor.pdb",
            site_reference="crystal_ligand.sdf",
            index_poses=True,  # omit for free docking
        )
    ),
    MoleculeSinkBlock(),
)
workflow("library.smi", "docked.sdf")
调优基于配体的虚拟筛选
from cmxflow import Workflow
from cmxflow.sources import MoleculeSourceBlock
from cmxflow.operators import MoleculeSimilarityBlock
from cmxflow.scores import EnrichmentScoreBlock
from cmxflow.opt import Optimizer

# Rank a library by 2D similarity to a known active, then tune the
# fingerprint end-to-end to maximize enrichment AUC.
workflow = Workflow()
workflow.add(
    MoleculeSourceBlock(),
    MoleculeSimilarityBlock(queries="crystal_ligand.sdf"),
    EnrichmentScoreBlock(target="active"),
)

opt = Optimizer(workflow, "benchmark.csv")
opt.optimize(n_trials=30, direction="maximize")

print(f"Best enrichment AUC: {opt.best_score:.3f}")
print(opt.best_params)
# Best enrichment AUC: 0.836
# {'fingerprint_type': 'morgan', 'similarity_metric': 'sokal', 'radius': 2, 'nbits': 2545}

系统会自动搜索上述四个指纹参数——每个模块都会向优化器公开其可变参数。

或通过大模型 Agent 以对话方式构建
claude mcp add cmxflow -- cmxflow-mcp

“library.csv 中有多少分子符合 Lipinski 规则?”

“我需要构建一个基于配体的虚拟筛选工作流。我不确定 2D 还是 3D 更好。你能优化两种工作流吗?”

“使用 crystal_ligand.sdf 作为参考,将 hits.csv 中的分子对接到 receptor.pdb。”

Agent 可以构建、运行并优化工作流。完整对话记录请参阅与 Claude 搭配使用。

包含内容

  • 15 个以上用于分子来源、转换、筛选、聚类、评分和对接的模块
  • 通过 Optuna 对工作流参数进行贝叶斯优化
  • 支持计算密集型模块(构象生成、分子对接)并行执行
  • 支持工作流序列化,以便保存、加载和复用
  • 一个包含五种工具的 MCP 服务:build_workflow、run_workflow、optimize_workflow、manage_workflows、view_structures

安装

pip install cmxflow
MCP 服务
claude mcp add cmxflow -- cmxflow-mcp
可选:PyMOL

仅 view_structures MCP 工具(3D 可视化)需要:

conda install -c conda-forge pymol-open-source

文档

项目

采用 MIT 许可证。请参阅 CONTRIBUTING.md 和 RELEASING.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。