breedsim-mcp

io.github.musharna由 GitHub 帳號 musharna 發布v0.6.1更新於 Oct 26, 2026

Breeding-scheme simulation via AlphaSimR. Needs R, AlphaSimR and libtirpc-dev on the host.

已驗證STDIO僅桌面資料與分析AI 與機器學習

概覽

AI 產生的概覽

在本機執行 AlphaSimR 育種方案模擬,回傳重複執行的分布與配對比較,而非單次隨機結果。

可以做什麼
  • 檢視引擎資訊:列出方法、版本、族群產生器、選拔方法、重複次數下限與規模上限
  • 建立基礎族群,回傳工作階段 ID、奠基者來源、可重現性狀態與實測連鎖不平衡
  • 依重複執行育種方案,讀取每週期的平均值、標準差與 95% 信賴區間
  • 在同一批種子上比較兩個方案,讀取附信賴區間的配對差值
  • 描述工作階段的來源、性狀結構與已執行週期
適用情境
適用於數量遺傳學及動植物育種工作:需要助理執行明確的 AlphaSimR 選拔方案並給出附不確定性的預期遺傳增益,或在相同種子上比較兩個方案。
執行需求
透過 uvx 從 PyPI 安裝的本機 stdio 程序。主機需 R 4.3 以上並含 libR.so、由原始碼編譯的 AlphaSimR、libtirpc-dev、低於 3.6 的 rpy2 以及 mcp 2.x。需使用系統或 uv 管理的 Python,conda 的 Python 會失敗。若 AlphaSimR 安裝在使用者函式庫中可能需設定 R_LIBS_USER。無需驗證。
安裝前請注意
呼叫在單一 R 解譯器中依序執行,一次過大的呼叫會阻塞其他呼叫;規模上限由 list_methods 列出。工作階段存於記憶體,最多 8 個,重新啟動即遺失。基因體選拔需用 runMacs,而它在長時間執行的程序中無法重現;可重現的 quickHaplo 產生器則沒有連鎖不平衡。覆寫 OMP_NUM_THREADS 會使結果無法重現。README 指出其成本高於讓模型自行撰寫 AlphaSimR 腳本,且相較後者沒有可測量的準確度提升。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 breedsim-mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

breedsim-mcp

breedsim-mcp is an MCP server that lets AI agents run AlphaSimR breeding-program simulations. It returns the spread over replicates, never a single stochastic run, so an agent can say what a selection scheme would gain and how sure that is.

[CI] [PyPI] [Python] [License] [DOI] [Glama]

Why replicates

A single simulation run is not a result, and this API will not return one. Five seeds of an identical three-cycle program gave mean genetic gain [1.151, 1.841, 1.424, 1.429, 1.473], sd 0.247, on the very number being reported (measured once on AlphaSimR 2.1.0 while building v0.1.0, 2026-07-29). So run_program enforces a replicate floor and returns a per-cycle mean, sd and confidence interval. No flag collapses it to a point estimate.

Install

This needs more than uv pip install:

  • R ≥ 4.3 with a shared library (libR.so)
  • AlphaSimR, an Rcpp/RcppArmadillo compile that takes minutes
  • libtirpc-dev, or rpy2 fails to link (cannot find -ltirpc)
  • rpy2 <3.6, because 3.6 binds R_getVar, which needs R ≥ 4.4
bash
sudo apt-get install -y r-base r-base-dev libtirpc-devR -e 'install.packages("AlphaSimR", repos="https://cloud.r-project.org")'uv add breedsim-mcp

Do not use a conda Python: rpy2 then fails to load libR.so with GLIBCXX_3.4.30 not found, because conda ships an older libstdc++ than the system libicuuc requires. Use a system or uv-managed interpreter. Requires mcp 2.x.

Configure your MCP client

The server speaks stdio through the breedsim-mcp console script.

Claude Code

bash
claude mcp add breedsim -- breedsim-mcp

Claude Desktop (claude_desktop_config.json):

json
{  "mcpServers": {    "breedsim": {      "command": "breedsim-mcp"    }  }}

If the executable is not on your PATH, or AlphaSimR lives in a user library, run it through uv and pass the library path:

json
{  "mcpServers": {    "breedsim": {      "command": "uv",      "args": ["run", "--directory", "/path/to/breedsim-mcp", "breedsim-mcp"],      "env": { "R_LIBS_USER": "/home/you/R/library" }    }  }}

Check it with list_methods(), which reports the engine versions and whether this process can currently produce reproducible results.

What the benchmark shows

Claude with the server was compared with Claude writing its own AlphaSimR scripts, with R and AlphaSimR installed for it, on 34 breeding-simulation questions, 3 runs each. A tie means the server matches that result without you setting up R and AlphaSimR. Questions right in every run, server against Claude's own scripts: Claude Haiku 5.5 34 against 33, Sonnet 5.5 28 against 33, Opus 5.5 34 against 34 (re-run 2026-10-18). None is separated (pre-registered; Holm-adjusted McNemar p = 1.0 on Haiku, 0.25 on Sonnet). Sonnet's gap is runs where it answered from breeder's-equation theory instead of running the simulation. The server was cheaper with Haiku (on 26 of 34 questions) and dearer with Sonnet and Opus. Opus with no tools got 51 of 102 answers right.

[Stacked bar chart of right and wrong answers to 34 breeding-simulation questions, 3 runs each. Claude alone: 51 right, 51 wrong. Claude with Bash, R and web: 99 right, 3 wrong. Claude with breedsim-mcp: 102 right, 0 wrong. No-LLM baselines, one answer per question: one constant per kind of question, 12 right and 22 wrong; best closed form per question, 15 right and 19 wrong.]

The chart is the first Opus 5.5 run, keyed by AlphaSimR run directly; the best named formula lands in only 15 of 34. With this server Claude got 102 of 102 answers right, with its own R and AlphaSimR 99 of 102 (not separated, exact McNemar p = 1.0), and alone 51 of 102 (both tool setups beat it, p < 1e-6). The re-run, with an unreleased commit that cut the server's instructions and rounded its outputs, got 102 of 102 in both setups and lowered the server's median cost per answer from $0.051 to $0.033; Claude's own scripts cost $0.027, cheaper on all 34 questions (p = 1e-10). Time is not separated.

Each question spells out the AlphaSimR calls, so this tests running a stated simulation, not designing one unaided. We wrote the questions and ran the benchmark ourselves; an outside re-run is welcome. Method, controls, other limitations, and six probability questions reported separately are in benchmarks/agent_qa; the Haiku and Sonnet runs: 2026-10-20 re-run.

Tools

ToolReturns
list_methodsengine versions, generators, selection methods, replicate floor
found_populationsession_id, founder provenance, reproducible, measured LD
run_programper-cycle distributions: mean, sd, 95% CI
compare_programsthe paired difference between two programs, with a CI
describe_sessionprovenance, trait architecture, cycles run

Typical loop: found_population → run_program → read the CI and the warnings. To compare two schemes: found_population → compare_programs → read difference. run_program takes selection_method="phenotypic" or "genomic"; compare_programs takes one per arm.

docs/REFERENCE.md has the full tool signatures, example outputs, the warnings table, and the measurements behind the points below.

  • Compare with compare_programs, not two run_program calls. It runs both arms on the same seeds and differences them within each pair, so shared luck cancels. Two overlapping per-program intervals do not imply no difference; the paired interval can still exclude zero (warning overlap_but_different). favours is null when the paired interval contains zero.
  • Genomic selection needs linkage disequilibrium. selection_method="genomic" fits RRBLUP to a SNP chip set at founding (n_snp_per_chr). quickHaplo, the default and the only reproducible generator, has no LD, so use runMacs, which does not reproduce in a long-lived process. On this engine you cannot have both. found_population measures LD and warns (no_linkage_disequilibrium) when the markers are uninformative.
  • Reproducibility. The server pins OMP_NUM_THREADS=1 at import, before R starts; without it the same seed gives different results. The runMacs RNG is seeded once per R session and advances across calls, so a repeat call in this long-lived process differs (reproducible: false).
  • Warnings explain; none of them withhold results.
  • Multi-trait selection. Pass h2 as a list and index_weights to select on a weighted index. trait_correlation must be a real correlation matrix (for n equally correlated traits, not below −1/(n−1)); an invalid one is refused, not replaced by the nearest valid matrix. Genomic selection fits one RRBLUP model per trait, applies the index to the estimated breeding values, and reports prediction_accuracy in each traits entry.
  • Species. species applies only to runMacs, which has demographic histories for GENERIC, CATTLE, WHEAT and MAIZE; anything else is refused. The default is MAIZE, but this is not a plant-only simulator.
  • Limits. Every size parameter has a ceiling, listed by list_methods() under limits. R is a single interpreter and calls are serialized, so one oversized call would block every other. For large jobs, drive AlphaSimR directly.

Testing

CI installs R and compiles AlphaSimR, so the suite runs against the real engine on Python 3.11, 3.12 and 3.13. One test checks the R engine layer against the breeder's equation R = h²S (docs/EVAL.md); it does not test this server's founding or selection code against an outside reference. docs/MUTATION-CHECKS.md records 25 deliberate mutants: 24 turned a test red, and one survives because it is equivalent. tests/test_perf_ratchet.py gates each tool on exact counts of package-function calls and R evaluations, not on time.

Limitations

  • compare_programs is single-trait: one paired verdict needs one criterion, and with several traits that is the index, for which AlphaSimR reports no gain.
  • No G×E, optimal contribution selection, crossing-block optimization or genotype-matrix export.
  • Genomic selection is RRBLUP only. RRBLUP_D, _GCA and _SCA estimate dominance and combining-ability effects that the additive-only addTraitA architecture does not have.
  • Sessions are in memory, capped at 8 (LRU), and do not survive a restart.

License

GPL-3.0-or-later, because this imports rpy2, which is GPLv2+. AlphaSimR itself is MIT. Unofficial: not affiliated with, endorsed by, or sponsored by the AlphaSimR authors, the University of Edinburgh, or the R Foundation. See NOTICE.

CHANGELOG.md records what changed and why.

來源:README.md,提交 8beb3cd

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:軟體包安裝失敗。

版本歷史

6
  1. v0.6.1最新Oct 20, 2026
  2. v0.6.0Oct 20, 2026
  3. v0.5.1Sep 26, 2026
  4. v0.5.0Sep 23, 2026
  5. v0.4.2Sep 16, 2026
  6. v0.4.1Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分