evo2-mcp-server
Evo2-7B Bioinformatics MCP Server
NVIDIA がホストする Evo2-7B Forward API を MCP (Model Context Protocol) Tools としてラップするサーバーで、Claude Code、Cursor、Codex などの Agent が自然言語で Evo2 を操作できるようにします:
Agent
↓
MCP Tool
↓
Evo2 MCP Server(本项目)
↓
NVIDIA Evo2-7B Forward API
↓
forward outputs → likelihood / variant scores
↓
AgentPOST https://health.api.nvidia.com/v1/biology/arc/evo2-7b/forward
Authorization: Bearer $NVIDIA_API_KEY1. プロジェクト紹介
5 つの MCP Tools を提供します:
Tool | 機能 |
| DNA sequence に対して Evo2-7B forward inference を実行し、指定した layer の出力統計を返します(または生の tensor を保存) |
| Evo2 モデルによる DNA sequence の model-based likelihood(total / mean / per-position)を計算します |
| 単一の nucleotide variant が Evo2 sequence likelihood に与える影響(Δ log-likelihood)を比較します |
| 複数の nucleotide variants を一括比較します(WT forward を 1 回再利用、並行処理は制限付き、自動重複排除) |
| FASTA 内の各 record をスコアリングします(ローカルパスは |
本プロジェクトは Bioinformatics MCP Tool Server であり、単純な HTTP API wrapper ではありません:
DNA sequence の自動検証 / 正規化(大文字化、空白除去、不正文字は明確にエラー報告)
公式セマンティクスに基づく likelihood 計算(byte-level tokenizer + causal shift、§17 参照)
出力の階層化設計(summary / raw / save)による MCP context の爆発防止
完全なエラー分類(400/401/403/404/408/413/422/429/5xx/timeout)+ retry/backoff
API Key は環境変数からのみ読み取り、ハードコードもログへの出力も一切なし
付属バッチスクリプト:
scripts/score_fasta.py(FASTA 一括スコアリング + embedding 抽出、§18 参照)とscripts/analyze_run.py(クラスタリング / 分類 / 回帰のダウンストリーム解析、§19 参照)
Related MCP server: Evo2 MCP Server
2. Evo2 API 概要
Evo2(Arc Institute / NVIDIA)は DNA 基盤モデル(StripedHyena2 アーキテクチャ)で、7B 版は 32 層、Apache-2.0、トレーニングコンテキストは 1M bp に達します。NVIDIA はマネージド NIM サービスを提供しています:
Forward エンドポイント:
POST https://health.api.nvidia.com/v1/biology/arc/evo2-7b/forwardリクエストボディ(公式 OpenAPI
ForwardInputs):{ "sequence": "ACGTACGT...", "output_layers": ["output_layer"] }output_layersは 1〜100 個の layer 名をサポートします(例:output_layer、decoder.layers.24.mlp.linear_fc2、decoder.layers.3.self_attention、embedding、decoder.final_norm)。レスポンスボディ(公式 OpenAPI
ForwardOutputs):{"data": "<base64 编码的 NPZ>", "elapsed_ms": <int>};超大レスポンスはContent-Type: application/zip(生の NPZ バイト)で返される場合があります。output_layer= 最終 logits、shape[seq_len, batch_size, 512](512 は byte-level tokenizer の padded vocabulary size)。
⚠️ Deprecation の注意(2026-08-24 確認済み):build.nvidia.com でホストされている
arc/evo2-7bエンドポイントは Deprecated とマークされています(ページに "This NIM Endpoint has been deprecated" と表示)。公式 NIM ドキュメント(docs.nvidia.com/nim/bionemo/evo2/latest/)に記載されている API はホスト型エンドポイントと完全に一致します。ホスト型エンドポイントが利用できない場合は、自社ホストの NIM コンテナに切り替え、EVO2_MCP_BASE_URLをhttp://localhost:8000/biology/arc/evo2に指定してください。
確認済みの公式事実(実装根拠、2026-08-24)
項目 | 結論 | 出典 |
レスポンス形式 | JSON | NVIDIA NIM endpoints ドキュメント + ホスト型 OpenAPI schema( |
|
| 同上("Final output/logits") |
vocabulary サイズ | 512(padded);byte-level tokenizer、1 bp = 1 token | NVIDIA ドキュメント + Arc/vortex |
A/C/G/T → logits index | A=65, C=67, T=84, G=71(ASCII バイト値) | NVIDIA ドキュメント原文 + |
BOS/EOS/offset | デフォルトで BOS なし(Arc | Arc |
likelihood 計算 |
| Arc |
特殊トークン | 出力で意味を持つのは A/C/G/T の 4 トークンのみ(NIM ドキュメント原文) | NVIDIA ドキュメント |
実測とドキュメントの差異(2026-08-24 ライブ検証、タスク要件により実際のインターフェースを記録)
本物の key でホスト型 health.api.nvidia.com エンドポイントを調査したところ、ドキュメント記載の layer 名はホスト型エンドポイントでは使用できないことが判明しました:
リクエストした layer 名 | ホスト型 API の実際の動作 |
| ❌ |
| ❌ 422 |
| ✅ 最終 logits:NPZ key |
| ✅ |
| ✅ |
| ✅ |
対応策(実装済み・ライブ検証済み):
EVO2_MCP_LOGITS_LAYER設定を追加(デフォルトauto):スコアリングツールは最初にドキュメント名のoutput_layerを試し、422 has no attribute(ホスト型)を受信した場合は自動的にunembedへ切り替えてキャッシュし、以降は再プローブしません。自社ホストの NIM 2.x コンテナでは 1 回で成功し、余分なリクエストはゼロです。NPZ パーサーは裸の key(
output_layer)と<name>.output(unembed.output)の両方の key 形式をサポートし、「最終次元 = 512」のヒューリスティックでフォールバックします。422エラー情報は、ホスト型で利用可能な属性名を案内するようになりました。
返された
seq_lenが入力配列の長さと一致しない場合(例:サーバー側で padding/BOS が追加された場合)、本サーバーは likelihood の計算を拒否し、raw 統計と明確な説明を返します。アライメントを推測することは絶対にありません。
3. NVIDIA API Key の取得方法
https://build.nvidia.com/ を開き、右上の Get API Key をクリックします(NVIDIA アカウントへのログインが必要)。
key を作成します(
nvapi-xxxxxxxx...の形式)。環境変数に設定します。コード / 設定 / Git には書き込まないでください:
export NVIDIA_API_KEY="nvapi-xxxxxxxx"または .env.example をコピーして .env にし、値を入力します(.env は .gitignore で無視されます)。
4. インストール
# 推荐:pip / uv
pip install -e ".[dev]"
# 或
uv sync --extra dev
# 推荐(本项目自带):pixi 项目本地环境
pixi install
pixi run test要件:Python >= 3.10(推奨 3.11+)。コア依存関係:mcp>=2.0、httpx>=0.27、numpy>=1.26、pydantic>=2.6、python-dotenv>=1.0。解析スクリプト(scripts/analyze_run.py)には追加で dev 依存関係:scikit-learn、pandas、matplotlib が必要です。
5. 環境変数
変数 | デフォルト | 説明 |
| なし(必須) | API Key。ここからのみ読み取ります |
|
| サービスアドレス(自社ホスト NIM の場合は変更) |
|
| HTTP 読み取りタイムアウト(秒) |
|
| 408/429/5xx の最大リトライ回数 |
|
| batch/FASTA の同時実行上限 |
| 空 | FASTA の読み取りを許可するディレクトリ( |
|
|
|
|
|
|
|
| 配列長のハード上限 |
|
|
|
|
| per-position リストの返却上限(超過時は先頭と末尾を取得) |
|
| スコアリング用の logits layer 名: |
6. CLI 起動
# 三种方式等价
python -m evo2_mcp
evo2-mcp
uv run evo2-mcp # 用 uv 管理的项目环境
# pixi 环境:
pixi run evo2-mcpサーバーは stdio 経由で MCP クライアントと通信します。正常に起動すると出力はありません(MCP ハンドシェイク待ち)。
7. MCP 設定
Claude Code(.mcp.json)
{
"mcpServers": {
"evo2": {
"command": "uv",
"args": ["run", "evo2-mcp"],
"env": {
"NVIDIA_API_KEY": "${NVIDIA_API_KEY}"
}
}
}
}注意:
${NVIDIA_API_KEY}がクライアントによって展開されるかどうかはクライアント実装に依存します。最も確実な方法は、実際の key を直接入力することです:
{
"mcpServers": {
"evo2": {
"command": "uv",
"args": ["run", "evo2-mcp"],
"env": {
"NVIDIA_API_KEY": "YOUR_API_KEY"
}
}
}
}ただし、実際の key を含む .mcp.json を Git にコミットしないでください(そのファイルを .gitignore に追加するか、環境変数 / シークレット管理ツールで注入してください)。また、env を渡さず、サーバープロセス自身に環境または .env から NVIDIA_API_KEY を読み取らせることもできます:
{
"mcpServers": {
"evo2": {
"command": "uv",
"args": ["run", "evo2-mcp"]
}
}
}Cursor(~/.cursor/mcp.json またはプロジェクトの .cursor/mcp.json)
{
"mcpServers": {
"evo2": {
"command": "uv",
"args": ["run", "evo2-mcp"],
"env": { "NVIDIA_API_KEY": "YOUR_API_KEY" }
}
}
}Codex(~/.codex/config.toml)
[mcp_servers.evo2]
command = "uv"
args = ["run", "evo2-mcp"]
env = { "NVIDIA_API_KEY" = "YOUR_API_KEY" }自社ホスト NIM
{
"mcpServers": {
"evo2": {
"command": "uv",
"args": ["run", "evo2-mcp"],
"env": {
"EVO2_MCP_BASE_URL": "http://localhost:8000/biology/arc/evo2"
}
}
}
}8. Tool 一覧
evo2_forward(sequence, output_layers=["output_layer"], mode="summary", save_path=None)
DNA sequence に対して Evo2-7B forward inference を実行します。mode:
"summary"(デフォルト):各 layer のshape / dtype / min / max / mean / stdを返し、context に安全です;"save":生の tensor を.npz(output/evo2_forward_<时间戳>.npz)として保存し、パスを返します;"raw":完全な tensor をインラインで返します(要素総数がEVO2_MCP_RAW_INLINE_MAX(デフォルト 4096)以下の場合のみ。context の爆発を防ぎます)。
layer 名の注意:ホスト型
health.api.nvidia.comエンドポイントが受け付けるのはモデル属性名です(logits はunembed、ほかにembedding_layer、norm、blocks.N.mlp)。ドキュメント名のoutput_layer/decoder.layers.N.*は自社ホストの NIM 2.x コンテナでのみ使用できます。evo2_score/evo2_variant_score/evo2_batch_score/evo2_score_fastaは自動プローブするため手動指定は不要です。直接evo2_forwardを呼び出す場合のみ、実際のエンドポイントに合わせて名前を選択する必要があります。
evo2_score(sequence, include_per_position=False)
Evo2 による配列の likelihood を計算します:
{
"sequence_length": 123,
"total_log_likelihood": -123.45,
"mean_log_likelihood": -1.2345,
"scored_positions": 122,
"per_position_log_likelihood": null,
"method_notes": "...",
"disclaimer": "..."
}セマンティクス(Arc 公式実装と一致):logits[i] は位置 i+1 の塩基を予測し、完全な 512 vocab 上で log-softmax を適用した後、対象の塩基のバイトインデックスを取得します。position 0 はスコアリングに含まれないため、scored_positions = length - 1 となり、mean はこの N-1 個の値の平均です。per_position_log_likelihood[k] は配列の 0-based 位置 k+1(つまり 1-based 位置 k+2)に対応します。API が返した seq_len を配列とアライメントできない場合は、結果を偽造せず、raw 統計と明確な説明を返します:
Likelihood calculation is not supported until the API output format is verified.evo2_variant_score(sequence, position, ref, alt, coordinate="1-based", include_per_position=False)
{
"position": 100,
"ref": "A",
"alt": "G",
"wildtype_log_likelihood": -500.1,
"mutant_log_likelihood": -500.5,
"delta_log_likelihood": -0.4,
"interpretation": "The mutant sequence is less likely than the wildtype under Evo2-7B ... (NOT a clinical pathogenicity call)"
}検証チェーン:position 範囲 → coordinate 換算 → ref は配列の該当位置と一致する必要あり → ref≠alt → 1-based 位置 1(0-based 0)はスコアリング不可(causal LM は最初の token に確率を割り当てられない)→ 明確なエラー報告。
evo2_batch_score(sequence, variants, coordinate="1-based")
{
"sequence_length": 300,
"wildtype_log_likelihood": -1200.0,
"variants": [
{ "position": 100, "ref": "A", "alt": "G", "delta_log_likelihood": -0.42 },
{ "position": 200, "ref": "C", "alt": "T", "delta_log_likelihood": 0.13 }
]
}WT forward は 1 回だけ計算され、すべての variant で再利用されます;
同じ
(position, alt)の mutant は forward を 1 回だけ実行します(memoize);同時実行は
EVO2_MCP_MAX_CONCURRENCYで制限されます(デフォルト 2。NVIDIA の rate limit を尊重);個々の variant の失敗は batch 全体に影響しません(各エントリに
errorを返します)。
evo2_score_fasta(fasta_path=None, fasta_text=None)
>sequence_1
ACGTACGT...
>sequence_2
TTGGCCAA...fasta_text:インライン FASTA(デフォルトで利用可能。サイズ / レコード数の上限あり);fasta_path:ファイルがEVO2_MCP_ALLOWED_DIRS内にある場合のみ読み取りを許可し、それ以外は明確に拒否します;各レコードの
total_log_likelihood / mean_log_likelihoodを返します。単一レコードのエラーは他に影響しません。
9. 使用例
{
"sequence": "acgtACGT acgt", // 小写 + 空白自动处理
"output_layers": ["output_layer"],
"mode": "summary"
}戻り値:
{
"sequence_length": 12,
"requested_output_layers": ["output_layer"],
"returned_layers": ["output_layer"],
"layer_stats": [
{ "name": "output_layer", "shape": [12, 1, 512], "dtype": "float32",
"size": 6144, "min": -3.21, "max": 4.02, "mean": 0.01, "std": 0.98 }
],
"api": { "elapsed_ms": 87 }
}Agent が完全な logits を必要とする場合:
{ "sequence": "ACGT...", "mode": "save" }{
"saved": true,
"path": "/abs/path/output/evo2_forward_20260824_153000.npz",
"bytes_on_disk": 24576,
"layer_stats": [...]
}10. FASTA の例
{
"fasta_text": ">geneA\nACGTACGTACGT\n>geneB\nTTGGCCAATTGG"
}(または "fasta_path": "/data/genomes/genes.fa"。EVO2_MCP_ALLOWED_DIRS=/data/genomes の設定が必要)
大量の FASTA(ディレクトリ全体の enhancer / promoter など)のスコアリング + embedding 抽出には、scripts/score_fasta.py(§18 参照)を使用します——実行ごとに独立した run フォルダ(scores.csv + embeddings.npz)を出力します。
11. Variant scoring の例
{
"sequence": "ACGTACGTACGTACGTACGT",
"position": 10,
"ref": "A",
"alt": "G"
}12. Batch scoring の例
{
"sequence": "ACGTACGTACGTACGTACGT",
"variants": [
{ "position": 10, "ref": "A", "alt": "G" },
{ "position": 12, "ref": "T", "alt": "C" },
{ "position": 14, "ref": "A", "alt": "T" }
]
}典型的な Agent ワークフロー(「配列上のすべての SNP を分析し、Evo2 score の変化が最も大きい上位 20 個を探す」に対応):
读取输入 → 解析 DNA / VCF → 生成 WT / mutant → evo2_batch_score
→ 按 |delta_log_likelihood| 排序 → 取前 20 → 保存 CSV → 解释结果13. エラー処理
HTTP | 意味 | 本サーバーの動作 |
400 | Bad Request(不正な配列などを含む) | 直接エラーを返し、レスポンス要約を添付 |
401 | API Key が無効 | 直接エラーを返し、 |
403 | 権限なし(ホスト型エンドポイントの非推奨化など) | 直接エラーを返し、考えられる原因を提示 |
404 | パスが存在しない | 直接エラーを返し、 |
408 | サーバータイムアウト | 有限回数のリトライ(backoff)後にエラーを返す |
413 | Payload が大きすぎる | 直接エラーを返し、配列または layer 数を減らすよう促す |
422 | パラメータ検証失敗 | 直接エラーを返し、詳細を添付 |
429 | Rate limit | リトライ + exponential backoff( |
5xx | NVIDIA サーバーエラー | 有限回数のリトライ後にエラーを返す |
timeout | リクエストタイムアウト( | 明確なエラー: |
すべてのエラーは MCP 経由で構造化 JSON として返されます:{"error": "Evo2APIError", "message": "..."}。evo2_batch_score では単一アイテムの失敗は {"error": ..., "status": ...} を返し、バッチ全体は中断しません。
14. Rate limit
NVIDIA ホスト型 NIM には rate limit があります。設計上の対策:
EVO2_MCP_MAX_CONCURRENCY(デフォルト 2)で並行性を制限;429 → exponential backoff(1 秒、2 秒、4 秒、8 秒、16 秒…、上限 30 秒 + ジッター;
Retry-Afterがある場合はそれを優先するが上限 60 秒);リトライ上限
EVO2_MCP_MAX_RETRIES(デフォルト 4)、無限にリトライしない;batch 内の WT は一度だけ計算し、同一 mutant は重複排除してリクエスト数を削減。
15. セキュリティに関する注意事項
API Key:
NVIDIA_API_KEY環境変数(または.env)からのみ読み取る;コード内にハードコードされた key は一切ない;ログには URL、配列長、layer 名のみ記録し、配列内容と key は記録しない;エラーメッセージにはレスポンス先頭 500 文字の要約のみ含める。配列のプライバシー:すべてのログ/エラーには
previewのみ含める(例:ACGT...GCTA (len=12345))。パスサンドボックス:
FASTA 読み取りは
EVO2_MCP_ALLOWED_DIRS内のみ;未設定の場合はすべてのローカルパスを拒否;mode="save"のsave_pathはEVO2_MCP_OUTPUT_DIR内にある必要がある;
.gitignoreには.env、*.env、output/、*.npzが含まれている。N 塩基:デフォルトで拒否し、明確なエラーを返す(Evo2 モデルは曖昧な塩基では評価されておらず、ドキュメントでは A/C/G/T のみ意味があると保証されている)。どうしても N を透過させる必要がある場合は、
EVO2_MCP_ALLOW_AMBIGUOUS=1で起動する —— これは明示的な選択であり、黙って破棄するものではない。Don't execute:本サーバーは一切の shell 実行を行わない;Agent は FASTA/配列入力によって制限付き HTTP リクエストのみをトリガーできる。
16. 生物学的解釈の制限
Evo2 score は model-based sequence likelihood change であり、実験的証拠でも臨床的な病原性診断でもない。
delta_log_likelihood < 0は「変異体配列がモデル下でより可能性が低い」としか解釈できず、「病原性」とは解釈できない。pathogenicity を論じるには downstream での検証(実験、集団頻度、ClinVar アノテーション、タンパク質構造への影響など)が必要。
各 Tool の description には以下の免責事項が含まれる(MCP クライアントから閲覧可能):
This is a DNA foundation model inference tool. It does not provide clinical
diagnosis. Model scores should not be interpreted as pathogenicity labels
without additional validation.17. 実装根拠と検証ソース(2026-08-24)
NVIDIA NIM for Evo 2 — Endpoints:https://docs.nvidia.com/nim/bionemo/evo2/latest/endpoints.html
NVIDIA NIM for Evo 2 — Quickstart:https://docs.nvidia.com/nim/bionemo/evo2/latest/quickstart-guide.html
NVIDIA ホスト型 API リファレンス(arc/evo2-7b-forward OpenAPI schema):https://docs.api.nvidia.com/nim/reference/arc-evo2-7b-infer
ホスト型エンドポイント実測(2026-08-24、実 key):
output_layerは 422StripedHyena has no attribute 'output_layer'を返す;unembedは logits を返す(NPZ keyunembed.output、shape(1, seq, 512)、float64)—— そのためスコアリングツールはデフォルトでEVO2_MCP_LOGITS_LAYER=autoにより自動検出するバッチ実測(2026-08-25、実 key、3800+ 件の K562 enhancer/promoter):
配列が > ~100 kb の場合、ホスト側が 422 を返す(PyTorch の
canUse32BitIndexMath制限)—— バッチ実行では--skip-longer-than 100000を使用;並行時の layer 名自動検出の競合状態を修正済み(
forward_logitsはローカル変数で試行名を記録)し、回帰テストを追加;embedding 抽出:
norm/embedding_layer/blocks.Nはいずれも使用可能、shape(1, seq, 4096)float64(mean-pool 後 4096 次元)。
Arc Institute Evo2 リポジトリ(
scoring.py、models.py):https://github.com/ArcInstitute/evo2vortex
CharLevelTokenizer(Evo2 公式 tokenizer 実装):PyPIvtx1.1.0 のソースvortex/model/tokenizer.pyEvo2 モデルカード:https://huggingface.co/ArcInstitute/evo2_7b
NVIDIA が API を変更した場合は、公式の最新ドキュメントを基準にしてください;EVO2_MCP_BASE_URL でいつでも切り替えられます。
18. バッチスコアリングと Embedding 抽出(scripts/score_fasta.py)
MCP Tools は Agent の対話的呼び出しに適しています;大規模 FASTA スコアリングには付属スクリプト scripts/score_fasta.py を使用します(実 API で 3800+ 件の K562 enhancer/promoter により検証済み)。
実行のたびにタイムスタンプ付きの独立したフォルダを自動作成:
output/run_20260825_104403/
├── scores.csv # 每序列一行:id, header, length, total/mean LL, ...
│ # + embedding_key(与 embeddings.npz 的 record_ids 对齐)
└── embeddings.npz # embeddings: (n, 4096) float32 mean-pooled 矩阵
# record_ids: 与矩阵行一一对应的键(来源__序列id)# 小样本(指定 id)
.pixi/envs/dev/bin/python scripts/score_fasta.py \
--fasta /path/cis/enhancers.fa /path/cis/promoters.fa \
--ids K562_TE_629,K562_MPT_6842 --allow-ambiguous
# 全量(跳过 >100kb —— 托管端对该长度返回 422;保留原始 embedding)
.pixi/envs/dev/bin/python scripts/score_fasta.py \
--fasta /path/cis/enhancers.fa /path/cis/promoters.fa \
/path/trans/enhancers.fa /path/trans/promoters.fa \
--skip-longer-than 100000 --allow-ambiguous \
--embedding-layer norm --keep-raw-embeddings主要パラメータ:
パラメータ | 説明 |
| どの layer の embedding を抽出するか(デフォルト |
| 各配列の生の位置別 embedding |
| この長さを超える配列をスキップ(ホスト型 API の制限、§17 参照) |
| N 塩基の透過を許可(N を含む 5 件の配列も通常通り実行し、caveat 警告付き) |
| 並行数(デフォルト 2、rate limit を尊重) |
| デフォルトの run フォルダ構成を上書き |
効率設計:各配列につきリクエストは 1 回だけ送信(output_layers=["unembed","norm"] で logits と embedding を同時取得);logits の layer 名は実行全体で一度だけ検出;同時実行数はセマフォで制限。
19. Embedding の関連付けと下流分析(scripts/analyze_run.py)
embeddings.npz は mean-pooled された配列表現(各配列につき 1 つの 4096 次元ベクトル)で、クラスタリング、分類、回帰に直接適しています。読み込みと関連付け:
import csv, numpy as np
run = "output/run_20260825_104403"
rows = list(csv.DictReader(open(f"{run}/scores.csv")))
d = np.load(f"{run}/embeddings.npz", allow_pickle=True)
X = d["embeddings"] # (n, 4096) float32
ids = [str(x) for x in d["record_ids"]] # 与 X 行一一对应
key_to_row = {r["embedding_key"]: r for r in rows if r.get("embedding_key")}
scores = [key_to_row[k] for k in ids] # scores[i] ↔ X[i]ワンクリックで完全な分析を実行(KMeans クラスタリング、enhancer-vs-promoter 分類、embedding→likelihood 回帰、PCA プロット):
.pixi/envs/dev/bin/python scripts/analyze_run.py output/run_20260825_104403 --k 3analysis_<run>.npz(結合された X + keys)と analysis_<run>.png を出力。分析のポイント:
4096 次元ベクトルは類似度/クラスタリングの前に単位化する(スクリプトで実施済み);
サンプル数が少ない場合は分類/回帰を自動スキップ(保護閾値 ≥6 件);全 3806 件を実行完了して初めてこれらの分析に統計的意味がある;
キー
cis_enhancers__xxx→ カテゴリ enhancers、領域 cis;trans_*も同様(parse_sourceでラベル次元を変更し cis-vs-trans 分類が可能)。
開発とテスト
pixi install # 或 pip install -e ".[dev]"
pixi run test # 运行 pytest(全部 mock,不调用真实 API)オフラインテスト 91 passed / 4 skipped(skip = live ゲート)。カバー:配列検証、大文字小文字/空白の正規化、不正文字、API key 欠如、forward リクエスト構築、401/408/429/5xx/timeout、layer 名の自動検出(並行競合の回帰を含む)、variant 検証、variant/batch スコアリングの数学的正しさ(Arc のセマンティクスに対して独立に再計算)、NPZ デコード(JSON base64 / zip / 旧版 JSON tensor / <layer>.output key)、FASTA サンドボックス、MCP session 統合、スクリプトの純関数(pooling/キー名)など。
実 API スモークテスト(実 key が必要、デフォルトでスキップ)。key は .env から自動読み取り(Settings.from_env() がロード済み):
EVO2_MCP_RUN_LIVE=1 .pixi/envs/dev/bin/python -m pytest tests/test_live_api.py -v -slive テストは実際に NVIDIA エンドポイントへリクエストし、以下を検証:logits layer の自動検出(unembed)、実際の NPZ 解析((1, seq, 512) float64)、evo2_score が生の logits から手動で再計算した値と一致すること、variant score。
プロジェクト構造
.
├── pyproject.toml
├── README.md
├── .env.example
├── .gitignore
├── src/evo2_mcp/
│ ├── __main__.py # python -m evo2_mcp 入口
│ ├── config.py # 环境变量配置
│ ├── sequence.py # DNA 校验/归一化
│ ├── api_client.py # HTTP 客户端(retry/backoff/错误分类/响应解码 + layer 自动探测)
│ ├── forward_output.py# NPZ 解码 + likelihood 计算 + embedding 提取
│ ├── fasta.py # FASTA 解析 + 读取沙箱
│ ├── tools.py # 5 个 Tool 的实现
│ └── server.py # MCP server(stdio)
├── scripts/
│ ├── score_fasta.py # 批量 FASTA 评分 + embedding 提取(每次运行独立 run 文件夹)
│ └── analyze_run.py # 下游分析:加载/关联 → 聚类/分类/回归 + PCA 图
├── tests/ # pytest(全 mock,91 用例)+ 可选 live test
└── output/ # mode="save" 的 .npz 输出 + run_*/ 运行结果(git 忽略)Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI-powered genomic variant analysis including variant impact prediction, regulatory element discovery, and batch variant scoring. Currently operates in mock mode as a proof-of-concept awaiting the public release of Google DeepMind's AlphaGenome API.20142MIT
- AlicenseAqualityCmaintenanceEnables genomic sequence analysis through the Evo 2 model, supporting DNA sequence scoring, embedding, generation, and variant effect prediction with multiple model checkpoints (7B, 40B, 1B parameters).62LGPL 3.0

bio-mcp-evo2official
AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to generate, score, and analyze DNA sequences using the evo2 genomic foundation model. It supports multiple execution modes including local GPU, SLURM clusters, and the Nvidia NIM cloud API for tasks like variant effect prediction and sequence embedding.MIT- FlicenseNot gradedqualityDmaintenanceEnables protein sequence analysis and structure prediction by extracting ESM-2 embeddings and batch processing FASTA files via Docker. It provides tools for large-scale embedding extraction, job monitoring, and model management within an MCP-compatible environment.
Related MCP Connectors
AI-powered bioprotocol optimization — generate, search, and manage lab protocols via MCP
Free OpenAI-compatible inference with signed provenance receipts and 3 focused MCP tools.
Multimodal video analysis MCP — transcription, vision, and OCR for any video URL.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Shiroko114514/evo2-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server