mcpField
R
rosetta-mcp-server

rosetta-mcp-server

ローカル
github.com/Arielbs科学・教育1929 週間前に更新

rosetta-mcp-server について

rosetta-mcp-serverは、計算生物学のワークフローでRosetta、PyRosetta、Biotiteを使うためのMCPサーバーです。構造解析やコード変換に加え、RosettaScripts XMLの検証やドキュメント検索にも対応します。

主な機能

  1. 01RosettaScriptsの実行とタンパク質構造のスコアリング
  2. 02XMLの検証とPyRosettaコードへの変換
  3. 03RosettaとPyRosettaのドキュメント検索
  4. 04RosettaとBiotiteの関数対応付け
  5. 05RosettaスクリプトのBiotiteコードへの変換

活用シーン

  1. 01タンパク質構造モデリングプロトコルの実行
  2. 02RosettaScripts XMLの構文と要素の確認
  3. 03構造解析関数のライブラリ間対応の検索

MCP 対応

CursorなどのMCPクライアント向けに、Rosettaワークフローの実行、構造のスコアリング、コード変換、ドキュメント検索を行う18個のツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"arielbs-rosetta": {
"command": "npx",
"args": [
"-y",
"rosetta-mcp-server"
],
"env": {
"ROSETTA_BIN": "<ROSETTA_BIN>",
"PYTHON_BIN": "<PYTHON_BIN>",
"MCP_DEBUG": "<MCP_DEBUG>"
}
}
}
}
起動コマンドnpx -y rosetta-mcp-server
設定が必要な環境変数
ROSETTA_BINPath to rosetta_scripts binary or its directory
PYTHON_BINPython interpreter with PyRosetta/Biotite installed
MCP_DEBUGSet to 1 for debug logging

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmrosetta-mcp-server1.3.1

ツール

18

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

Rosetta MCP サーバー

Rosetta MCP サーバー

著者:Ariel J. Ben-Sasson

Cursor(または任意の MCP クライアント)から Rosetta、PyRosetta、Biotite を利用できる Model Context Protocol(MCP)サーバーです。RosettaScripts の実行、XML プロトコルの検証、Rosetta と Biotite 間の変換、構造のスコアリング、ドキュメントの検索をすべて AI コーディングアシスタントから行えます。

v1.3.0 の新機能(npm の v1.1.8 との比較)

新機能:Biotite の統合
  • rosetta_to_biotite -- 任意の Rosetta 関数に相当する Biotite の関数を、動作するサンプルコードとともに検索します(構造の入出力、SASA、RMSD、重ね合わせ、二次構造、接触、水素結合、B 因子、角度などを網羅する 21 の対応関係)
  • biotite_to_rosetta -- 逆引き:Biotite の関数に相当する Rosetta の関数を検索します
  • translate_rosetta_script_to_biotite -- RosettaScripts の XML または PyRosetta コード全体を Biotite の Python に変換します。設計/最適化操作には Rosetta 専用のフラグが付けられます。
  • キーワードの別名(「contacts」、「binding energy」、「surface area」、「align」など)にも対応したあいまい検索
改善:XML から PyRosetta への変換ツール
  • 37 種類の要素タイプに対応(従来は 6 種類):mover 11 種類、filter 9 種類、selector 10 種類、task operation 7 種類
  • 属性を完全に処理:repeats、disable_design、cartesian、tolerance、threshold、distance など
  • 子要素に対応:MoveMap(Span を含む)、Reweight、ScoreFunction
  • 認識できない要素を報告するため、手作業が必要な箇所を把握できます
改善:ヘルプとドキュメント
  • get_rosetta_help が任意のトピックを受け付けるようになりました:名前による mover(「FastRelax」)、概念(「constraints」、「docking」)、スコア関数(「ref2015」)を指定すると、rosettacommons.org から最新のドキュメントを自動取得します
  • search_rosetta_web_docs のフォールバック:DuckDuckGo の利用がレート制限された場合、Rosetta のドキュメント URL を直接確認します
  • get_cached_docs が自動でキャッシュするようになりました:先に cache_cli_docs を呼び出す必要はありません
  • score_functions、movers、filters、xml、parameters の静的ヘルプを拡充しました
改善:スコアリング
  • pyrosetta_score:新しい per_residue オプションにより、残基ごとのエネルギー内訳を返します
  • scorefxn パラメーターが機能するようになりました(v1.1.8 では無視されていました)
  • ファイルが見つからない場合に、空の {} を返すのではなく適切なエラーメッセージを表示します
改善:検証
  • validate_xml:新しい validate_against_schema オプションにより、Rosetta XSD スキーマに照らして要素名を検証します(FastRleax のようなタイプミスを検出します)
MCP 仕様への準拠に関する修正
  • tools/call の応答が正しい { content: [{ type: "text", text }] } 形式を使用するようになりました
  • ツールのエラーは isError: true を返します(JSON-RPC エラーではありません)
  • 標準の JSON-RPC エラーコード(-32601、-32700、-32603)
  • 誤った resources 機能の広告を削除しました
セキュリティ修正
  • ユーザー入力を Python コードに補間しないようにしました(環境変数/stdin を使用)
  • 一時ファイルの書き込み先をモジュールディレクトリではなく os.tmpdir() に変更しました
整理
  • 重複していた 3 つのツールを削除しました:list_functions(get_rosetta_info に統合)、search_pyrosetta_wheels、cache_cli_docs(get_cached_docs で自動キャッシュ)
  • ハードコードされていた個人用パスを削除しました
  • 変数のシャドーイング、非同期処理のアンチパターン、未使用コードを修正しました
  • ツールは 18 個(従来は 21 個)。すべてエージェント向けの説明を改善しました

例:素朴な質問をする

これこそが MCP サーバーの強力な点です。AI エージェントは、適切なツールを自動的に呼び出して、専門分野の質問に答えられます。

Cursor でのユーザーの質問: 「タンパク質をどのように緩和すればよいですか?また、Biotite では何に相当しますか?」

エージェントはバックグラウンドで、2 つの MCP ツールを呼び出します。

1. get_rosetta_help("FastRelax") は、6000 文字以上の最新ドキュメントを返します:

FastRelax は FastRelax プロトコルを使用して全原子緩和を実行します。パラメーターには scorefxn、repeats、cartesian、disable_design、MoveMap の設定などがあります……

2. rosetta_to_biotite("FastRelax") は次を返します:

{
  "found": true,
  "results": [{
    "rosetta": { "name": "FastRelax", "example": ["relax = FastRelax()", "relax.set_scorefxn(get_score_function('ref2015'))", "relax.apply(pose)"] },
    "biotite": null,
    "equivalence": "none_from_biotite",
    "notes": "Biotite does NOT perform structure optimization. These are Rosetta-specific capabilities."
  }]
}

エージェントは情報をまとめて、次のように答えます:「FastRelax は Rosetta の全原子緩和プロトコルです。使用方法は次のとおりです……注意:Biotite は解析専用で、相当する機能はありません。構造の最適化には PyRosetta が必要です。」

MCP がなければ、エージェントは学習データから推測するため、パラメーター名や API のシグネチャを間違える可能性があります。


利用できる機能(18 個のツール)

検索とヘルプ
ツール説明
get_rosetta_info利用可能なスコア関数、ムーバー、フィルター、セレクター、パラメーターをすべて表示します
get_rosetta_helpあらゆるトピックのヘルプを表示します。ムーバー名、概念、スコア関数を指定できます
pyrosetta_introspectドキュメントとシグネチャを含む、PyRosetta API の最新情報を検索します
ドキュメント
ツール説明
search_rosetta_web_docsrosettacommons.org のドキュメントを検索します
get_rosetta_web_doc指定されたドキュメントページを取得して読み込みます
get_cached_docsキャッシュ済みの CLI ヘルプを検索します(初回使用時に自動でキャッシュします)
実行とスコアリング
ツール説明
run_rosetta_scriptsPDB に対して RosettaScripts の XML プロトコルを実行します
pyrosetta_score必要に応じて残基ごとの内訳も含めて、PDB をスコアリングします
変換
ツール説明
xml_to_pyrosettaXML を PyRosetta の Python コードに変換します(37 種類の要素)
rosetta_to_biotiteRosetta の関数に相当する Biotite の機能を検索します
biotite_to_rosettaBiotite の関数に相当する Rosetta の機能を検索します
translate_rosetta_script_to_biotiteRosetta のスクリプト全体を Biotite 用に変換します
検証とスキーマ
ツール説明
validate_xmlXML 構文を検証します。必要に応じてスキーマも検証します
rosetta_scripts_schemaXSD スキーマを生成し、要素名を抽出します
環境
ツール説明
python_env_infoPython のバージョンとインストール済みパッケージを表示します
check_pyrosettaPyRosetta が利用可能か確認します
install_pyrosetta_installerPyRosetta を自動インストールします(10~30 分)
find_rosetta_scriptsrosetta_scripts バイナリの場所を特定します

クイックスタート

1. npm からインストールする
npm install -g rosetta-mcp-server
2. Python 環境をセットアップする
# Create a venv with PyRosetta and Biotite
uv venv ~/.venvs/rosetta-mcp
~/.venvs/rosetta-mcp/bin/pip install pyrosetta-installer biotite
~/.venvs/rosetta-mcp/bin/python -c "import pyrosetta_installer as I; I.install_pyrosetta()"

この手順は省略できます。PyRosetta は初回使用時に自動でインストールされます(10~30 分かかります)。

3. MCP クライアントを設定する

Cursor(~/.cursor/mcp.json):

{
  "mcpServers": {
    "rosetta": {
      "command": "rosetta-mcp-server",
      "args": [],
      "env": {
        "ROSETTA_BIN": "/path/to/rosetta_scripts.default.macosclangrelease",
        "PYTHON_BIN": "/path/to/.venvs/rosetta-mcp/bin/python"
      }
    }
  }
}

Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "rosetta": {
      "command": "rosetta-mcp-server",
      "env": {
        "ROSETTA_BIN": "/path/to/rosetta_scripts.default.macosclangrelease",
        "PYTHON_BIN": "/path/to/.venvs/rosetta-mcp/bin/python"
      }
    }
  }
}

環境変数:

変数必須説明
ROSETTA_BINいいえrosetta_scripts バイナリ、またはそのディレクトリへのパスです。設定されていない場合は、一般的なパスと PATH を検索します。
PYTHON_BINいいえPyRosetta/Biotite を含む Python インタープリターです。デフォルトは python3 です。
MCP_DEBUGいいえ1 に設定すると、stderr にデバッグログを出力します。
4. エディターを再起動する

設定 -> MCP を開きます。「rosetta」サーバーが 18 個のツールとともに緑色で表示されます。


XML から PyRosetta への変換例

入力 XML:

<ROSETTASCRIPTS>
  <SCOREFXNS>
    <ScoreFunction name="ref" weights="ref2015"/>
  </SCOREFXNS>
  <RESIDUE_SELECTORS>
    <Chain name="chainA" chains="A"/>
  </RESIDUE_SELECTORS>
  <MOVERS>
    <FastRelax name="relax" scorefxn="ref" repeats="5" cartesian="true"/>
  </MOVERS>
  <PROTOCOLS>
    <Add mover="relax"/>
  </PROTOCOLS>
</ROSETTASCRIPTS>

生成された PyRosetta コード:

import pyrosetta
from pyrosetta import pose_from_pdb
from pyrosetta.rosetta.core.scoring import get_score_function
from pyrosetta.rosetta.core.select.residue_selector import *
from pyrosetta.rosetta.protocols.relax import *

pyrosetta.init("-mute all")

pose = pose_from_pdb("your_protein.pdb")

# Residue Selectors
chainSelector = ChainSelector()
chainSelector.set_chain_strings("A")

# Movers
fastRelax = FastRelax()
fastRelax.set_scorefxn(get_score_function("ref"))
fastRelax.set_default_repeats(5)
fastRelax.cartesian(True)

sfxn = get_score_function("ref2015")

# Apply movers
fastRelax.apply(pose)

pose.dump_pdb("output.pdb")
score = pose.energies().total_energy()
print(f"Final score: {score}")

Rosetta <-> Biotite の対応範囲

カテゴリRosettaBiotite同等性
構造入出力pose_from_pdbPDBFile.read完全
構造入出力pose.dump_pdbPDBFile.write完全
構造入出力pose_from_file (CIF)CIFFile.read完全
表面解析SasaMetricbiotite.structure.sasa完全
アライメントSuperimposeMoverbiotite.structure.superimpose完全
RMSDall_atom_rmsdbiotite.structure.rmsd完全
二次構造DsspMoverannotate_sse部分的
配列pose.sequence()get_residues完全
距離AtomPairConstraintbiotite.structure.distance完全
角度pose.phi/psi/omegabiotite.structure.dihedral完全
インターフェースInterfaceAnalyzerMoversasa + selection部分的
データベースrcsb.pose_from_rcsbrcsb.fetch完全
選択ChainSelector などnumpy のブールインデックス指定完全
接触距離行列CellList部分的
ラマチャンドランpose.phi/psidihedral_backbone部分的
水素結合HBondSetbiotite.structure.hbond部分的
B 因子pdb_info().bfactorAtomArray.b_factor完全
重心center_of_massmass_center完全
スコアリングScoreFunctionなしRosetta のみ
最適化FastRelaxなしRosetta のみ
デザインFastDesignなしRosetta のみ

トラブルシューティング

  • Cursor でサーバーが赤く表示される:Cursor を再起動してください。設定では絶対パスを使用してください(例:/opt/homebrew/bin/rosetta-mcp-server)。Node 14+ と Python 3.8+ がインストールされていることを確認してください。
  • run_rosetta_scripts が失敗する:ROSETTA_BIN が有効なバイナリを指していることを確認してください。"$ROSETTA_BIN" -help を試してください。
  • PyRosetta ツールに「not available」と表示される:pip install pyrosetta-installer でインストールしてからインストーラーを実行するか、MCP サーバーによる初回使用時の自動インストールを利用してください。
  • Biotite ツールが結果を返さない:同じ Python 環境に Biotite をインストールしてください:pip install biotite
  • get_rosetta_help が「No detailed help」を返す:Rosetta の正確なクラス名を試してください(例:「relax」ではなく「FastRelax」)。このツールは一般的なエイリアスを解決しますが、珍しい名前は見つけられない場合があります。

コマンドラインから確認する

# Check version
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05"}}' | rosetta-mcp-server 2>/dev/null | python3 -c "import sys,json; print(json.loads(sys.stdin.readline())['result']['serverInfo'])"

# List all tools
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | rosetta-mcp-server 2>/dev/null | python3 -c "import sys,json; [print(t['name']) for t in json.loads(sys.stdin.readline())['result']['tools']]"

開発

rosetta-mcp-server/
├── rosetta_mcp_wrapper.js   # Node MCP server (protocol + all 18 tools)
├── rosetta_mcp_server.py    # Python helper (static Rosetta data)
├── install_pyrosetta.js     # Standalone PyRosetta installer
├── package.json             # npm package config
└── README.md

ライセンスと帰属表示

  • このリポジトリは MIT ライセンスです
  • Rosetta/PyRosetta:RosettaCommons のライセンスを参照してください。商用利用には適切なライセンスが必要です
  • Biotite:BSD 3-Clause ライセンス

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。