phylokit-mcp について
phylokit-mcpは、IQ-TREE 3とMAFFTによる系統解析のMCPサーバーです。研究者やAIエージェント向けに、推定したすべての系統樹へブートストラップ支持値を付け、Newick文字列だけでは得られない診断情報も返します。
主な機能
- 01ブートストラップ支持値付き最尤系統樹
- 02情報量規準による置換モデルの順位付け
- 03Robinson–Foulds距離による系統樹比較
- 04MAFFTによる配列アラインメント
- 05アラインメントのシミュレーションと位置マッピング
活用シーン
- 01推定された系統樹のクレード支持度の評価
- 02候補系統樹と異なるクレードの比較
- 03AIC、AICc、BICによる置換モデルの選択
- 04系統樹解析前のFASTA配列のアラインメント
MCP 対応
MCPサーバーとして、系統樹推定、モデル選択、系統樹比較、配列アラインメント、シミュレーションなどのツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx phylokit-mcpOMP_NUM_THREADSPinned so inference is reproducible; overriding it makes IQ-TREE runs non-deterministic.MKL_NUM_THREADSPinned alongside OMP_NUM_THREADS for the same reproducibility reason.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
6掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| seed | integer | いいえ | |
| fasta | string | はい | |
| model | string | いいえ | |
| replicates | integer | いいえ | |
| sequence_type | string | いいえ |
詳細
phylokit-mcp
phylokit-mcp は、AI エージェントが IQ-TREE 3 で最尤樹を構築し、MAFFT で配列をアラインメントできる MCP サーバーです。
支持値のないトポロジーは、結果ではありません。 infer_tree は必ずブートストラップを実行し、クレードごとの支持値を返します。これを省略するフラグはありません。
このルールの理由
最尤樹は、データが支持しているかどうかにかかわらず、同じように見えます。既知の 7 分類群の樹からシミュレーションしたアラインメント(JC、100 回の反復、シード 1)で測定した結果は次のとおりです。
| Sites | Informative sites | Recovered the true tree? | Lowest clade support |
|---|---|---|---|
| 300 | 51 | yes, exactly | 1.00 |
| 60 | 11 | no, RF 2 | 0.57 |
60 サイトの樹には、実在しないクレード(C,D,G)が含まれ、実在するクレード(E,F,G)が欠けています。どちらの実行でも、同じ形の完全に解決された Newick 文字列が返されます。両者を見分けられるのは支持値だけであり、偽のクレードは樹の中で_最も支持の低い_クレードです。
Newick 文字列では報告できないこと
- 競合するクレード:データが 0.70 以上で支持しているものの、報告された樹には_存在しない_グループ分けです。支持値付きの Newick 文字列では、これらを表す場所がありません。
fraction_resolved:0.70 を超えるクレードの割合です。個々のグループ分けが事実として繰り返される前に示す、主要な数値です。- ΔAIC 付きの次点モデル:勝者だけではありません。上記の 300 サイトのアラインメントは JC でシミュレーションされていますが、AIC の勝者は JC ではありません(TPM2u と TPM2 が同率)。また、JC を含む複数のモデルが、従来の ±2 の範囲内(ΔAIC 0.7)にあります(
seed=1、piqtree 0.8.3)。 - 長さと証拠の比較:
n_sitesと並べてn_parsimony_informativeを示します。ほぼ同一の配列からなる 10,000 サイトのアラインメントは、何も支持しません。
ツール
| Tool | What it does |
|---|---|
infer_tree | ML 樹とブートストラップ支持値(ノンパラメトリックまたは UFBoot2)をクレードごとに返します。 |
select_substitution_model | 100 以上のモデルを ΔAIC/AICc/BIC で順位付けし、基準間で結果が異なる場合にそれを示します。 |
compare_trees | Robinson–Foulds 距離と異なるクレードを返します。文字列ではなく分割を比較します。 |
simulate_alignment | 指定した樹に沿って配列を生成します。陽性対照として利用できます。 |
align_sequences | アラインメントされていない FASTA を MAFFT でアラインメントし、インラインで返すか、新しいファイル(out_path)に出力します。 |
map_positions | 残基をアラインメントの列に対応付け、その列を他のすべての配列に対応付けます。 |
capabilities | piqtree と IQ-TREE のバージョン、215 種類の置換モデル、MAFFT のバージョン、制限事項を返します。 |
FASTA または Newick を受け取るツールでは、ファイルパス(fasta_path、2 つの樹の場合は trees_path)も指定できます。ファイルはサーバーによって読み込まれます。相対パスはサーバーの作業ディレクトリを基準に解決されます。
テストでは、モックエンジンを使わずに実際の IQ-TREE と MAFFT を実行し、23 件の変更チェックと、実プロセスによる JSON-RPC ハンドシェイクテストを行います。
インストール
pip install phylokit-mcp
Python 3.12 以降が必要です。IQ-TREE 3 は
piqtree 0.8 を通じて提供され、ホイールにビルドされています。align_sequences には、
MAFFT のバイナリも PATH 上に必要です。非アライン済みの入力で map_positions を使う場合も同様です。それ以外のツールは MAFFT なしで動作します。詳細:docs/INSTALL.md。
MCP クライアントを設定する
{
"mcpServers": {
"phylokit": {
"command": "uvx",
"args": ["phylokit-mcp"]
}
}
}
uvx が Python 3.12 より古いバージョンを選んだ場合は、
"args": ["--python", "3.12", "phylokit-mcp"] を使用してください。
ベンチマークでわかったこと
38 問の系統発生学の質問を各 3 回実施し、サーバーを使った Claude と、piqtree、cogent3、MAFFT をセットアップした環境で Python を記述する Claude を比較しました。同点の場合、環境を構築しなくてもサーバーで同じ結果が得られたことを意味します。すべての実行で正解した質問数をサーバーと Python で比較すると、Claude Haiku 5.5 は 34 対 37、Sonnet 5.5 は 37 対 35、Opus 5.5 は 36 対 35 でした(ファイルパスを受け取るコミットでの結果)。いずれも有意差はありません(事前登録済み。Haiku と Sonnet の両方で Holm 補正済み McNemar 検定 p = 0.75)。Haiku ではサーバーのコストは Python とほぼ同じで、Sonnet(1.23×)と Opus(1.26×)では高くなりました。
このグラフは、データをテキストとして受け取っていたリリースでの、Opus 5.5 の最初の実行結果です。回答数で数えると、サーバーは 114 件中 110 件、Python は 113 件が正解でした。質問数で数えると、すべての実行で正解したのは、サーバーが 38 問中 36 問、Python が 37 問でした(符号検定 p = 1)。質問ごとに比較すると、サーバーの実行時間は 6.0 倍(95% CI 4.4~8.3)、コストは 14.4 倍(9.9~20.2)でした。いずれも質問ごとの比率の幾何平均です。コストの大部分は、モデルがデータファイルをツール呼び出しに貼り付けたことによるものでした。ファイルパスを受け取るようにしたところ(事前登録済みの再実行、2026-10-18)、1.26 倍(1.04~1.55)に下がりました。
質問の作成とベンチマークの実施は自分たちで行いました。第三者による再実行も歓迎します。このベンチマークでは支持値を採点していません。手法、対照条件、その他の制限事項についてはbenchmarks/agent_qaを参照してください。Haiku と Sonnet の実行結果については、 2026-10-20 再実行を参照してください。
再現性
どの設定でもビット単位で完全に同じ結果にはなりません。IQ-TREE は探索中に実時間を読み取るため、同じリクエストとシードでも、枝長や対数尤度の末尾の桁が異なる場合があり、反復の結果が入れ替わることで支持値が変動する場合もあります。サーバーは deterministic_across_processes: false を報告します。文字列の一致ではなく、compare_trees で樹形を比較し、数値は許容誤差を用いて比較してください。測定結果:docs/REPRODUCIBILITY.md。
制限事項
- ヌクレオチドとタンパク質に対応し、コドンモデルには対応していません。
sequence_type="protein"とタンパク質モデル(LG、WAGなど)を渡してください。分子種は明示的に指定する必要があり、自動判定は行いません。A/C/G/T のみからなるアラインメントも有効なタンパク質配列(Ala/Cys/Gly/Thr)として扱われます。誤って指定すると、警告なしで誤った系統樹、尤度、支持値が返されます。 - ブートストラップは 2 種類で、aLRT や近似ベイズ法には対応していません。 デフォルトはノンパラメトリック・ブートストラップ(Felsenstein 1985)で、ここで計算されます。クレードの支持値は 0.70 です。ML 系統樹には含まれない、十分な支持を得たクレードを報告するのはこの方法のみです。
support_method="ufboot"は IQ-TREE の UFBoot2(Hoang et al. 2018)で、クレードの支持値は 0.95 です。 - ノンパラメトリック法の計算コストは反復回数に比例し、各反復で完全な ML 検索を実行します。 89 分類群 × 435 サイトでは、1 回の反復に 25~93 秒かかり、UFBoot2 の 1000 回の反復には 83 秒かかりました。上限は 200 分類群、ノンパラメトリック法では 1000 回、UFBoot2 では 10000 回の反復です。すべてのツールは 15 秒ごとに進捗通知を送るため、クライアントのアイドルタイムアウトによって長時間の呼び出しが中断されることはありません。
- アラインメントには MAFFT の
--autoのみを単一スレッドで使用します。 戦略の選択、プロファイルアラインメント、トリミングには対応していません。最大 200 配列、残基数 100,000、600 秒までです。ギャップを含む入力はギャップを除去せず、拒否されます。系統樹ツールは、長さの異なる入力をアラインメントせず、拒否します。 - 無根系統樹です。 根付け、年代推定、祖先状態の再構築には対応していません。
ライセンス
piqtree が GPL-3.0 と 互換性のない GPL-2.0-only であるため、GPL-2.0-only です。cogent3 は BSD です。
このサーバーを使った結果を公開する場合は、IQ-TREE 3、piqtree、および(アラインメントの作成に使用した場合は)MAFFT を引用してください。このラッパーを引用する必要はありません。参考文献は CITATION.cff に、ライセンスと所属は NOTICE に記載されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。