关于 breedsim-mcp
breedsim-mcp 让 AI Agent 运行 AlphaSimR 育种方案模拟。它返回重复模拟的分布及带置信区间的配对比较,而非单次随机结果。
主要功能
- 01创建创始群体并报告来源信息
- 02运行重复育种方案模拟
- 03返回各周期均值、标准差和 95% 置信区间
- 04通过配对差异比较方案
- 05支持表型与基因组选择
适用场景
- 01估算育种方案各周期的结果
- 02使用相同随机种子比较两种选择方案
- 03评估表型选择与基因组选择
MCP 相关
该 MCP 服务向 AI Agent 提供 AlphaSimR 模拟功能,包括创建群体、运行方案和比较方案。它通过 stdio 通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
breedsim-mcp
breedsim-mcp 是一个 MCP 服务,可让 AI Agent 运行 AlphaSimR 育种项目模拟。它返回多次重复运行的结果分布,而不是单次随机运行的结果,因此 Agent 可以说明某种选择方案能带来多少收益,以及对此有多大把握。
为什么要重复运行
单次模拟运行并不构成结果,本 API 不会返回单次运行结果。一个相同的三周期项目使用五个随机种子,得到的平均遗传增益为 [1.151, 1.841, 1.424, 1.429, 1.473],
标准差为 0.247;这是针对所报告的指标得出的结果(在构建 v0.1.0 时,于 2026-07-29 使用 AlphaSimR 2.1.0 测得)。因此,run_program 会强制设置最低重复次数,并返回每个周期的均值、标准差和置信区间。没有任何标记可以将结果压缩为点估计。
安装
除了 uv pip install,还需要:
- R ≥ 4.3,并带有共享库(
libR.so) - AlphaSimR,需要花费数分钟编译 Rcpp/RcppArmadillo
libtirpc-dev,否则 rpy2 链接失败(cannot find -ltirpc)- rpy2
<3.6,因为 3.6 会绑定R_getVar,而它需要 R ≥ 4.4
sudo apt-get install -y r-base r-base-dev libtirpc-dev
R -e 'install.packages("AlphaSimR", repos="https://cloud.r-project.org")'
uv add breedsim-mcp
不要使用 conda Python:rpy2 会因找不到 GLIBCXX_3.4.30 而无法加载 libR.so,这是因为 conda 附带的 libstdc++ 版本低于系统 libicuuc 所需的版本。请使用系统解释器或由 uv 管理的解释器。需要 mcp 2.x。
配置 MCP 客户端
该服务通过 breedsim-mcp 控制台脚本使用 stdio 通信。
Claude Code
claude mcp add breedsim -- breedsim-mcp
Claude Desktop(claude_desktop_config.json):
{
"mcpServers": {
"breedsim": {
"command": "breedsim-mcp"
}
}
}
如果可执行文件不在 PATH 中,或者 AlphaSimR 位于用户库中,请通过 uv 运行,并传入库路径:
{
"mcpServers": {
"breedsim": {
"command": "uv",
"args": ["run", "--directory", "/path/to/breedsim-mcp", "breedsim-mcp"],
"env": { "R_LIBS_USER": "/home/you/R/library" }
}
}
}
使用 list_methods() 检查;它会报告引擎版本,以及当前进程能否生成可复现的结果。
基准测试结果
我们在 34 个育种模拟问题上,将使用该服务的 Claude 与自行编写 AlphaSimR 脚本的 Claude 进行了比较;后者已安装 R 和 AlphaSimR。每个问题运行 3 次。平局意味着:无需你设置 R 和 AlphaSimR,该服务也能达到相同结果。每次运行都答对的问题数,按该服务与 Claude 自行编写的脚本对比:Claude Haiku 5.5 为 34 比 33,Sonnet 5.5 为 28 比 33,Opus 5.5 为 34 比 34(2026-10-18 重跑)。差异均无统计显著性(预先注册;Haiku 的 Holm 校正 McNemar p = 1.0,Sonnet 为 0.25)。Sonnet 的差距来自它根据育种者方程理论作答,而没有运行模拟的那些情况。对 Haiku 而言,该服务更便宜(34 个问题中有 26 个);对 Sonnet 和 Opus 而言则更贵。Opus 不使用工具时,102 个答案中有 51 个答对。
图表显示的是首次 Opus 5.5 运行结果,以 AlphaSimR 直接运行的结果为基准;最佳命名公式只在 34 个问题中的 15 个上得出正确结果。使用该服务时,Claude 的 102 个答案全部正确;使用自己的 R 和 AlphaSimR 时,102 个答案中有 99 个正确(差异无显著性,精确 McNemar p = 1.0);单独使用 Claude 时,102 个答案中有 51 个正确(两种工具配置的表现都优于它,p < 1e-6)。重跑时使用了一个尚未发布的提交版本,该版本缩短了服务的指令并对其输出进行了四舍五入;两种配置下均为 102 个答案全部正确,并将该服务每个答案的成本中位数从 $0.051 降至 $0.033;Claude 自行编写的脚本成本为 $0.027,在全部 34 个问题上都更便宜(p = 1e-10)。耗时差异无显著性。
每个问题都明确列出了 AlphaSimR 调用,因此这项测试考查的是运行指定的模拟,而不是在没有帮助的情况下设计模拟。问题由我们编写,基准测试也由我们执行;欢迎外部复测。方法、控制措施、其他局限性,以及单独报告的六个概率问题,详见 benchmarks/agent_qa;Haiku 和 Sonnet 的运行结果见: 2026-10-20 重跑。
工具
| 工具 | 返回内容 |
|---|---|
list_methods | 引擎版本、生成器、选择方法、复制数下限 |
found_population | session_id、创始群体溯源信息、reproducible、测得的 LD |
run_program | 每个周期的分布:均值、标准差、95% CI |
compare_programs | 两个方案之间的配对差异及其 CI |
describe_session | 溯源信息、性状架构、已运行周期数 |
典型流程:found_population → run_program → 查看 CI 和警告。比较
两个方案:found_population → compare_programs → 查看 difference。run_program
接受 selection_method="phenotypic" 或 "genomic";compare_programs 为每个实验组各接受一个。
docs/REFERENCE.md 提供完整的工具签名、示例输出、警告表,以及下文所述各项结果的测量依据。
- 使用
compare_programs进行比较,而不是调用两次run_program。 它会在相同的种子上运行两组方案,并在每对结果内计算差异,因此共同的运气因素会相互抵消。两个方案各自的区间即使重叠,也不代表不存在差异;配对区间仍可能排除零值(警告overlap_but_different)。配对区间包含零值时,favours为null。 - 基因组选择需要连锁不平衡。
selection_method="genomic"会在创始时根据 SNP 芯片组(n_snp_per_chr)拟合 RRBLUP。默认且唯一可复现的生成器quickHaplo不具备 LD,因此请使用runMacs;该生成器在长时间运行的进程中无法复现。在此引擎中,两者不能兼得。found_population会测量 LD,并在标记不具信息性时发出警告(no_linkage_disequilibrium)。 - 可复现性。 服务会在 R 启动前、导入时固定
OMP_NUM_THREADS=1;否则,相同种子会产生不同结果。runMacs的 RNG 在每个 R 会话中只设定一次种子,并在调用间持续推进,因此在这个长时间运行的进程中,重复调用会得到不同结果(reproducible: false)。 - 警告用于说明情况;它们都不会导致结果被扣留。
- 多性状选择。 将
h2作为列表传入,并提供index_weights,即可按加权指数进行选择。trait_correlation必须是有效的相关矩阵(对于 n 个相关程度相同的性状,相关系数不得低于 −1/(n−1));无效矩阵会被拒绝,而不会替换为最近的有效矩阵。基因组选择会为每个性状拟合一个 RRBLUP 模型,将指数应用于估计的育种值,并在每个traits条目中报告prediction_accuracy。 - 物种。
species仅适用于runMacs,其人口历史数据适用于GENERIC、CATTLE、WHEAT和MAIZE;其他值都会被拒绝。默认值为MAIZE,但这并非仅限植物的模拟器。 - 限制。 每个大小参数都有上限,可通过
list_methods()的limits查看。R 是单一解释器,调用会串行执行,因此一次超大调用会阻塞其他所有调用。对于大型任务,请直接使用 AlphaSimR。
测试
CI 会安装 R 并编译 AlphaSimR,因此测试套件会在 Python
3.11、3.12 和 3.13 上针对真实引擎运行。其中一项测试会根据育种者方程
R = h²S 检查 R 引擎层(docs/EVAL.md);它不会将此服务的创始群体或选择代码与外部参考进行比较。docs/MUTATION-CHECKS.md
记录了 25 个刻意引入的变异:24 个使测试失败,另有 1 个因等价而未被检测到。tests/test_perf_ratchet.py 根据包函数调用次数和 R 求值次数的精确计数来限制每个工具,而不是依据运行时间。
局限
compare_programs只能比较单个性状:一次成对评判需要一个标准;若有多个性状,该函数会使用性状索引,而 AlphaSimR 不会因此报告任何增益。- 不支持 G×E、最优贡献选择、杂交区块优化或基因型矩阵导出。
- 基因组选择仅支持 RRBLUP。
RRBLUP_D、_GCA和_SCA会估算显性效应和配合力效应,而仅包含加性效应的addTraitA架构不具备这些效应。 - 会话存储在内存中,最多保留 8 个(LRU),重启后不会保留。
许可证
GPL-3.0-or-later,因为本项目导入了 rpy2,而 rpy2 采用 GPLv2+ 许可证。AlphaSimR 本身采用 MIT 许可证。 非官方项目:与 AlphaSimR 作者、爱丁堡大学或 R Foundation 均无关联,也未获其认可或赞助。请参阅 NOTICE。
CHANGELOG.md 记录了变更内容及原因。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。