ROBINS-I V2 MCP

com.blackswancausallabs由 blackswancausallabs.com 发布v0.1.0更新于 Oct 24, 2026

ROBINS-I V2 (not V1): risk of bias in one result of a non-randomized cohort study

发布方自己的服务:DAG Studio MCP

已验证STDIO仅桌面知识与记忆数据与分析

概览

AI 生成的概览

一个本地 MCP 服务器,对非随机随访或队列研究的某一结果执行确定性的 ROBINS-I V2 偏倚风险评估。

可以做什么
查看 ROBINS-I V2 规范,并解析研究文档(PDF、docx、文本、补充材料)或从 Europe PMC 获取,生成哈希与线索调查。设置综述预设的混杂因素并指定结果,包括选择领域 1 变体的 C4 问题。按领域生成并提交信号问题答案,引文须绑定到文档偏移,否则被拒绝。依据已发布算法计算各领域与总体判定,并渲染带戳记的报告。将多次运行的记录导出为一个可供 robvis 使用的 CSV。
适用场景
当你依据 ROBINS-I V2 评估队列研究或目标试验模拟研究中某一具体结果的偏倚风险时使用;也适用于需要让判定可追溯到引文证据的多研究综述。
运行要求
需要本地 Python 环境;用 pip 安装 robins-i-mcp 包或用 uvx 直接运行,然后在 MCP 客户端中注册 robins-i-mcp 命令。研究论文不随包提供:需自行放入 papers 目录,或用 ROBINS_MCP_PAPERS 环境变量指向其所在目录。未声明任何身份验证。
安装前请注意
判定由服务器计算,不能作为输入提交;预设混杂因素清单和任何人工覆盖都需人工批准,未设置该清单前领域 1 会被阻止。ROBINS-I V2 来源为草案,可能变动;robvis 导出会把 V2 判定映射到 V1 模板,发布前应检查所报告的损失。服务器在多次运行之间不保留状态,需自行保存每次运行的记录。

安装

在 SourceWeft 中

  1. 打开 控制台中的 ROBINS-I V2 MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

robins-i-mcp

An MCP server implementing ROBINS-I V2 (Risk Of Bias In Non-randomized Studies – of Interventions, follow-up/cohort variant) as a deterministic, provenanced assessment engine.

Sibling to target-mcp, which scores how completely a target-trial-emulation study reports what the TARGET guideline requires. This one assesses risk of bias in one specific result. The two are complementary on the same paper.

The source is a draft. riskofbias.info presents the 20 November 2025 release of ROBINS-I V2 as still a draft, subject to change. Every report stamps that in its provenance line. See NOTICE and TRANSCRIPTION-NOTES.md.

Follow-up cohort studies. "Follow-up" and "cohort" name one structural property — a defined time zero, individuals followed forward under the contrasted strategies — so read the property, not a design label. Target trial emulations are the central use case and are cohort studies in exactly this sense; both worked examples below are TTEs. Designs with no follow-up structure are out. No variant for other designs is published yet. Note that "Variant A / Variant B" inside the tool means the two forms of Domain 1 selected by C4 — not a study design.

What makes it different from asking a model

The model's contribution is bounded at answering signalling questions from the text. It cannot compute a judgement and it cannot invent evidence.

1  parse_document              PDF + supplement → SectionMap        deterministic2  cue detection               where to look, per domain            deterministic3  answer signalling questions quotes copied from the bundle        MODEL4  evidence binding            quotes → offsets, or REJECT          deterministic5  algorithms                  answers → domain → overall           deterministic6  report + render             stamped artifact                     deterministic7  human ratification          P1, reviewer-prior answers, overrides

Three rules are enforced at submission, and they are the point of the server:

  • Quotes resolve or die. Every quote is matched to character offsets in the ingested bundle through a three-pass ladder (exact → hyphen-relaxed → references-stripped), and the winning pass is recorded so a loose match is never silently equated with an exact one. An unresolvable quote is rejected with the nearest actual text.
  • Absence is searched, not asserted. A manuscript_absent answer names a cue; the server runs the search and attaches the record — terms, sections, hit count. A prose claim that you looked is refused.
  • Judgements are computed. No tool accepts a domain judgement as input. The six domain algorithms and the overall algorithm are explicit edge graphs traced from the published flowcharts. A human may override, with a recorded justification, and the report shows both values.

Two gates

P1 blocks domain 1. Question 1.1 asks whether all important confounding factors were controlled, and "important" is defined by the reviewer's prespecified list — not by the paper's covariate table. The server refuses to score domain 1 without set_prespecified_confounders rather than silently substituting one for the other. A list you propose is a candidate: it enters the ratification queue until a human accepts it.

C4 selects domain 1's question set. Whether the analysis accounts for protocol deviations picks variant A (intention-to-treat, baseline confounding only) or variant B (per-protocol, baseline and time-varying confounding), so specify_result requires it up front with no default. Judge it on what the analysis does, not on the label the authors give their estimand — on the reference paper, the protocol table says "per-protocol effect" and the analysis is intention-to-treat.

Install

bash
pip install robins-i-mcp

Then register it with your MCP client:

jsonc
{ "mcpServers": { "robins-i": { "command": "robins-i-mcp" } } }

Or run it with no install at all:

bash
uvx robins-i-mcp

Also on the MCP registry as com.blackswancausallabs/robins-i-mcp.

Develop

bash
python3 -m venv .venv && .venv/bin/python -m pip install -e ".[dev]".venv/bin/python -m pytest tests/ -q      # 205 passed.venv/bin/robins-i-mcp                    # stdio MCP server

Tools

GroupTool
Specget_specoptional introspection; detail='compact'|'full'
Ingestparse_documentPDF/docx/text + supplements → hash + cue survey
parse_pmcidEurope PMC retrieval
Setupset_prespecified_confoundersP1, review-scoped, blocks domain 1
specify_resultA1–A3, B1–B3, C1–C3, D1, and C4
Assessassess_resultdomain=0 overview, domain=1..6 scaffold
submit_answersper domain; domain=0 finalizes and renders
Renderrender_reportre-render of the stamped artifact
Reviewexport_robvismany runs' records → one robvis CSV

Scaffolds are per domain, never one flat rubric: most signalling questions are unreachable on any given path, and which of domain 1's two sets exists at all depends on C4.

Pass the supplement. The target-trial specification that settles C1–C4, and the analysis detail domains 1 and 4 turn on, routinely live only in the appendix. Without it, those questions read NI when the answer was merely in a file nobody ingested.

Many studies: the record

A review of N studies is N runs. Each assessment costs a session, and the server keeps no state between them. So each run emits a small portable record — that is the deliverable that crosses the boundary:

session 1..N   assess one result -> save submit_answers(domain=0)['record']later          export_robvis(records=[...]) -> one figure-ready CSV

A record is ~4 KB of flat JSON and depends on nothing in this codebase, so any later agent can consume it. It carries its own provenance — document hash, algorithm fingerprint, spec version, ratification state — so every row in the resulting figure traces back to a document, and the export can warn when a set mixes algorithm transcriptions.

export_robvis is not a column dump. robvis's ROBINS-I template is V1: seven domains, and V1 orders selection of participants before classification of interventions, which V2 swaps. The default layout places each V2 judgement in its correct V1 slot; a positional dump would parse, plot, and lie. Read the returned losses before publishing — robvis reduces every cell to its first initial over a five-fill palette, so the qualified low collapses to Low there whatever string is written.

See examples/review_from_records.py.

Worked examples

bash
.venv/bin/python examples/dickerman_2022.py out.html          # library level.venv/bin/python examples/jabagi_2026_server_run.py           # server level.venv/bin/python examples/review_from_records.py             # across runs
  • Dickerman et al., NEJM 2022 — BNT162b2 vs mRNA-1273 in US veterans. Comes out low, except for concerns about uncontrolled confounding. 24 of 41 questions never reached.
  • Jabagi et al., Lancet Reg Health Eur 2026 — maternal RSVpreF vs infant RSV hospitalisation. Comes out serious, and the route is worth reading: domain 1 fails at 1.3 rather than 1.1, because gestational age at birth and birth weight are matched on despite being realised after the intervention.

The papers themselves are not in this repository — they are published articles and not ours to redistribute. Put your own copies in papers/, or point ROBINS_MCP_PAPERS at the directory holding them; the examples name the files they need and fail with that message if they are absent.

Documentation

  • docs/STATUS.md — current state and handoff. Read this first.
  • docs/DECISIONS.md — why things are the way they are, newest first.
  • docs/SESSION-NOTES-*.md — per-session narrative.
  • TRANSCRIPTION-NOTES.md — how the algorithms were obtained from raster flowcharts, the errata found in the published document, and what still needs external verification.

Licence

Apache-2.0 (LICENSE). The ROBINS-I V2 tool it implements is CC BY-NC-ND 4.0 and no part of it is reproduced here — see NOTICE for why that matters and what the actual constraint is.

来源:README.md,提交 aee5a0b

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Blackswancausallabs 集成