返回市场
罗塞塔-MCP服务器

罗塞塔-MCP服务器

作者:Arielbs9 星标更新:2025-08-30

项目介绍

<p align="center"> <img src="./assets/banner2.svg" width="100%" alt="Rosetta MCP Server" /> </p>

Rosetta MCP Server

作者:Ariel J. Ben-Sasson

这是一个模型上下文协议(MCP)服务器,允许Cursor(或任何MCP客户端)与Rosetta和PyRosetta进行交互:运行RosettaScripts,验证XML协议,列出常见的移动器、过滤器和选择器,并可选地通过PyRosetta进行评分或查询。

您将获得的内容

  • 从Cursor运行RosettaScripts (run_rosetta_scripts)
  • 生成RosettaScripts XML模式 (rosetta_scripts_schema)
  • 验证XML (validate_xml)
  • 浏览常见的移动器、过滤器、选择器及其参数 (list_functions, get_rosetta_info, get_rosetta_help)
  • 可选的PyRosetta工具 (pyrosetta_score, pyrosetta_introspect)
  • 环境助手 (python_env_info, check_pyrosetta, install_pyrosetta_installer, find_rosetta_scripts, search_pyrosetta_wheels)

快速开始(非专家)

选项1:从npm安装(推荐)

npm install -g rosetta-mcp-server

注意:npm安装仅安装MCP服务器包装器。PyRosetta的安装会在您首次使用PyRosetta工具时自动进行,这可能需要10-30分钟。在安装过程中会显示进度指示器。

⚡ 安装时间线

  1. npm install(几秒钟):安装MCP服务器包装器
  2. PyRosetta安装(10-30分钟):可以是以下两种方式之一:
    • 选项A:运行rosetta-install-pyrosetta立即安装
    • 选项B:使用任何PyRosetta工具——它会自动安装PyRosetta
  3. 后续使用(几秒钟):PyRosetta已经安装,执行速度快

选项2:从源代码安装

  1. 安装前提条件(macOS示例)
brew install node
python3 --version
  1. 克隆并全局安装此服务器
git clone https://github.com/yourusername/rosetta-mcp-server.git
cd rosetta-mcp-server
npm install -g .

🚀 PyRosetta安装命令

安装包后,您可以使用以下命令安装PyRosetta:

命令1:独立安装程序(推荐)

rosetta-install-pyrosetta

命令2:npm脚本

npm run install-pyrosetta

命令3:手动触发

node -e "const { RosettaMCPServer } = require('rosetta-mcp-server'); const server = new RosettaMCPServer(); server.installPyRosettaViaInstaller().then(console.log);"

注意:所有方法都会显示进度指示器,并警告10-30分钟的安装时间。

🔄 自动安装行为

现在,当需要时,PyRosetta工具会自动安装PyRosetta!

当您调用任何PyRosetta工具(如pyrosetta_scorepyrosetta_introspect)时:

  1. 服务器检查PyRosetta是否可用
  2. 如果缺失:自动启动PyRosetta安装,并显示进度指示器
  3. 安装后:重试原始操作
  4. 未来调用:快速执行(PyRosetta已安装)

这意味着您可以在npm安装后立即开始使用PyRosetta工具——无需手动设置!

🔄 XML到PyRosetta翻译

自动将RosettaScripts XML转换为PyRosetta Python代码!

示例XML输入:

<ROSETTASCRIPTS>
  <SCOREFXNS>
    <ScoreFunction name="ref2015" weights="ref2015"/>
  </SCOREFXNS>
  <MOVERS>
    <FastRelax name="relax" scorefxn="ref2015"/>
  </MOVERS>
  <PROTOCOLS>
    <Add mover="relax"/>
  </PROTOCOLS>
</ROSETTASCRIPTS>

生成的PyRosetta代码:

# 从RosettaScripts XML生成的PyRosetta代码
# ==================================================

import pyrosetta
from pyrosetta import pose_from_pdb
from pyrosetta.rosetta.protocols.moves import *
from pyrosetta.rosetta.protocols.simple_moves import *
from pyrosetta.rosetta.protocols.filters import *
from pyrosetta.rosetta.core.select.residue_selector import *
from pyrosetta.rosetta.core.pack.task.operation import *

# 初始化PyRosetta
pyrosetta.init("-mute all")

# 加载您的PDB文件
pose = pose_from_pdb("your_protein.pdb")

# 创建移动器
fast_relax = FastRelax()
fast_relax.score_function = get_score_function("ref2015")

# 将移动器应用于姿态
fast_relax.apply(pose)

# 保存结果
pose.dump_pdb("output.pdb")

# 打印最终得分
score = pose.energies().total_energy()
print(f"最终得分: {score}")

🆕 智能环境检测

安装程序现在会自动检测并处理环境冲突:

  • 检测Anaconda/Conda依赖问题
  • 创建新鲜的Python环境当发现冲突时
  • 在干净环境中安装PyRosetta以避免冲突
  • 提供环境路径供将来使用

环境位置~/.venv/pyrosetta_mcp_env/(根据需要自动创建)

  1. 在Cursor中注册服务器 编辑~/.cursor/mcp.json并添加/更新rosetta条目:
{
  "mcpServers": {
    "rosetta": {
      "command": "/opt/homebrew/bin/rosetta-mcp-server",
      "args": [],
      "env": {
        "ROSETTA_BIN": "/绝对路径/到/rosetta/main/source/bin",
        "PYTHON_BIN": "/Users/<你>/.venvs/rosetta-mcp/bin/python"
      }
    }
  }
}

注意事项:

  • 设置ROSETTA_BIN为包含RosettaScripts可执行文件的目录或可执行文件的完整路径(例如,.../rosetta_scripts.default.macosclangrelease.../rosetta_scripts_jd3.default.macosclangrelease)。
  • PYTHON_BIN是可选的;如果设置了,服务器将使用该解释器(建议在使用PyRosetta时使用)。
  1. 重启Cursor 打开设置→MCP。“rosetta”服务器应变为绿色且其工具可见。

设置Python环境

⚠️ 重要提示:首次运行时,PyRosetta安装可能需要10-30分钟! 这涉及下载和编译大型科学库。请耐心等待,不要中断过程。

安装npm包会发生什么:

  • 快速:npm安装MCP服务器包装器(几秒钟)
  • 稍后:首次使用PyRosetta工具时,服务器会自动安装PyRosetta(10-30分钟)
  • 🆕 智能:如果检测到环境冲突,将在~/pyrosetta_mcp_env/创建一个干净的环境

选项A(uv虚拟环境;推荐):

uv venv ~/.venvs/rosetta-mcp
~/.venvs/rosetta-mcp/bin/python -m pip install --upgrade pip

不使用conda安装PyRosetta,使用官方安装程序:

~/.venvs/rosetta-mcp/bin/python -m pip install pyrosetta-installer
~/.venvs/rosetta-mcp/bin/python -c "import pyrosetta_installer as I; I.install_pyrosetta()"

验证:

~/.venvs/rosetta-mcp/bin/python -c "import pyrosetta; pyrosetta.init('-mute all'); print('PyRosetta OK')"

选项B(Conda):

conda create -n rosetta-mcp python=3.9 -y
conda activate rosetta-mcp
conda install -c rosettacommons pyrosetta -y
# 然后在~/.cursor/mcp.json中设置PYTHON_BIN为此环境的python

使用工具

  • run_rosetta_scripts:运行RosettaScripts
    • 输入:xml_pathinput_pdbout_dir(必需)
    • 可选:exe_path(覆盖),extra_flags(CLI标志数组)
    • 可执行文件解析顺序:exe_pathROSETTA_BIN(文件或目录)→ 常见目录 → rosetta_scripts在PATH上
  • rosetta_scripts_schema:写入XSD模式到缓存目录,可选元素列表
  • validate_xml:基本语法验证XML字符串/文件
  • get_rosetta_infolist_functionsget_rosetta_help:整理信息
  • pyrosetta_score(可选):使用PyRosetta对PDB进行评分
  • pyrosetta_introspect(可选):搜索PyRosetta类;返回文档/签名
  • xml_to_pyrosetta(可选):将RosettaScripts XML翻译成PyRosetta Python代码
  • 设置辅助:python_env_infocheck_pyrosettainstall_pyrosetta_installerfind_rosetta_scriptssearch_pyrosetta_wheels

按工具示例(人类可读的问答)

  • get_rosetta_info

    • 问题:“我的设置有哪些Rosetta信息?”
    • 回答:返回rosetta_pathpyrosetta_available以及整理好的列表(评分函数、移动器、过滤器、选择器、任务操作、参数、命令行选项)。
  • list_functions

    • 问题:“展示常见的移动器、过滤器、选择器和任务操作。”
    • 回答:返回分类数组,您可以复制到XML(名称仅)。
  • get_rosetta_help

    • 问题:“解释‘过滤器’(或‘移动器’、‘xml’、‘参数’、‘评分函数’)。”
    • 回答:主题的简短文本解释。
  • validate_xml

    • 问题:“这个RosettaScripts XML在语法上有效吗?”
    • 提供:您的XML字符串
    • 回答:{ valid: true }{ valid: false, error: "..." },带有失败的行/列。
  • run_rosetta_scripts

    • 问题:“在这个PDB上运行这个协议。”
    • 提供:xml_pathinput_pdbout_dir(以及可选标志,例如-nstruct 1)。
    • 回答:{ exit_code, stdout, stderr, out_dir }。结果(PDBs、得分)由Rosetta写入out_dir下。
  • rosetta_scripts_schema

    • 问题:“生成XML模式并列出元素名称。”
    • 提供:可选extract_elements: true
    • 回答:{ schema_path, size, elements? }其中elements是标签名的去重列表。
  • cache_cli_docs

    • 问题:“缓存RosettaScripts命令行帮助以便离线搜索。”
    • 回答:{ saved: [help.txt, parser_info.txt] }路径在缓存目录下。
  • get_cached_docs

    • 问题:“搜索缓存文档中的‘解析器’(或任何字符串)。”
    • 提供:query: "parser"(以及可选max_lines)。
    • 回答:{ count, matches: [{ file, line, text }, ...] }
  • pyrosetta_score(需要PyRosetta)

    • 问题:“使用默认评分函数对这个PDB进行评分。”
    • 提供:pdb_path
    • 回答:{ score: <数字> },或者如果未安装则为{ error: 'PyRosetta不可用:...' }
  • pyrosetta_introspect(需要PyRosetta)

    • 问题:“查找‘FastRelax’移动器(或任何移动器/过滤器/选择器/任务)。”
    • 提供:query: "FastRelax",可选kind: "mover|filter|selector|task"
    • 回答:{ results: [{ name, module, bases, doc, init }, ...], count }
  • xml_to_pyrosetta(需要PyRosetta)

    • 问题:“将这个RosettaScripts XML转换为PyRosetta Python代码。”
    • 提供:xml_content: "<你的XML字符串>",可选include_comments: trueoutput_format: "python"
    • 回答:{ success: true, python_code: "...", components_found: {...} }

从命令行验证(可选)

which rosetta-mcp-server
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"check","version":"1"}}}\n' | rosetta-mcp-server
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"check","version":"1"}}}\n{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}\n' | rosetta-mcp-server

故障排除

  • Rosetta服务器在Cursor中显示红色
    • 编辑~/.cursor/mcp.json后重启Cursor。
    • 在配置中使用绝对命令(例如,/opt/homebrew/bin/rosetta-mcp-server)。
    • 确保Node 16+和Python 3.8+。
    • 检查ROSETTA_BIN指向有效的目录或可执行文件,或者删除它并依赖于PATH。
  • run_rosetta_scripts无法启动
    • 确认二进制文件可执行(尝试"$ROSETTA_BIN" -help)或明确传递exe_path
  • PyRosetta工具说“不可用”
    • 使用pyrosetta-installer(pip)或conda安装PyRosetta。
    • 注意:首次安装PyRosetta可能需要10-30分钟。MCP服务器在安装期间会显示进度指示器。

开发

rosetta-mcp-server/
├── rosetta_mcp_server.py    # Python服务器(信息/帮助/XML)
├── rosetta_mcp_wrapper.js   # Node MCP服务器(标准I/O协议+工具)
├── package.json             # NPM包(全局二进制)
└── README.md                # 此文件

许可证和归属

  • 本仓库采用MIT许可证
  • Rosetta/PyRosetta:参见RosettaCommons许可证;商业用途需要适当的许可证