mcpField
C
corroborate-mcp

corroborate-mcp

本地服务
github.com/chefcohen搜索与检索113 周前更新

关于 corroborate-mcp

corroborate-mcp 是一个 MCP 服务,用于检查当前说法被多少独立来源报道,并将转载内容聚类为报道源头。它面向需要覆盖情况判断及其证据和局限说明的 Agent,但不判断说法的每个细节是否属实。

主要功能

  1. 01识别转载并统计报道源头
  2. 02提供置信度与覆盖局限
  3. 03跨引擎搜索新闻来源
  4. 04独立的来源查找工具
  5. 05确定性、只读检查

适用场景

  1. 01评估新闻说法是否有独立报道
  2. 02区分通讯社报道转载与独立源头
  3. 03在 Agent 决策前查找来源
  4. 04检查覆盖缺口或搜索引擎故障

MCP 相关

提供 `corroborate_claim`,返回有证据支持的报道覆盖判断;并提供 `find_sources`,返回去重后的来源列表。通过 stdio 使用 MCP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chefcohen-corroborate": {
"command": "npx",
"args": [
"-y",
"corroborate-mcp"
]
}
}
}
启动命令npx -y corroborate-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcorroborate-mcp0.1.3

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
claimstring是要核查的主张,以陈述句形式提供
max_sourcesinteger否返回的证据来源数量上限(默认值为 8)
window_daysinteger否回溯时间窗口(天数,默认值为 7)

详细介绍

corroborate-mcp

面向 AI Agent 的诚实交叉印证层。 提交一条主张;它会告诉你这条主张实际上有多大程度上是由独立来源报道的,并展示判断依据。

npm downloads license node MCP API keys

一篇 AP 报道被 40 家媒体转载,算一个源头,而不是 40 条引文。其他验证工具统计引文;Corroborate 统计独立源头,并考虑新闻转载关系,同时公布自身的错误率并披露覆盖缺口。这是原始搜索和引文检查工具所缺少的判断层。

corroborate_claim("NASA delayed the Artemis III landing")   → CONFIRMED       4 independent origins · conf 0.9
corroborate_claim("Zorblatt Corp acquired Portugal")        → UNCORROBORATED  0 origins · conf 0.05

何时应由 Agent 调用此工具

  • 依赖当前事件/新闻主张之前——这条主张是否有独立报道,还是被一个来源传得满天飞?
  • 按真实独立性对来源排序或筛选,并获取置信度评分。
  • 当你需要一个经得起推敲的判断时——每个答案都附带证据、置信度和自身的注意事项。

它不是网页搜索引擎(搜索请使用 Exa/Tavily/Brave),也不是人工事实核查网络。它是两者之间范围明确、诚实的基础工具:这条内容有多大程度上是由独立来源报道的?

可信赖之处——源于设计

🔑 零 API 密钥,零账号无需密钥的引擎(Google News RSS · GDELT · Hacker News)。无需注册。
👁 只读它读取公开新闻,无法执行操作、写入内容、花费资金或触碰你的数据。
🎯 确定性过程中不使用大模型——输入相同的证据,就会得到相同的判断。p50 约为 0.4s。
📖 开源(MIT)可阅读判断过程的每一行代码。
📊 公布错误率我们在公开基准上衡量自身的误判 CONFIRMED/误判 UNCORROBORATED 比率,并在下方列出。大多数“事实核查”工具不会这样做。
🚫 绝不隐瞒如果无法访问来源,它会返回错误,绝不会伪造“UNCORROBORATED”结果。

衡量什么——不衡量什么

衡量的是报道的交叉印证情况,而非真相。一条被所有媒体从同一篇通讯社报道转载的主张,会返回 SINGLE_SOURCE。一条无人报道的主张,即使属实,也会返回 UNCORROBORATED。判断结果会准确说明衡量的内容,在 notes 中标示其局限,并在某个引擎不可用时设置 coverage:"degraded"——因此,证据缺失绝不会被悄悄当成不存在的证据。

快速入门

需要 Node ≥ 18。无需密钥,无需配置。

Claude Code

claude mcp add corroborate -- npx -y corroborate-mcp

Claude Desktop / Cursor / 任意 MCP 客户端(claude_desktop_config.json、.cursor/mcp.json 等)

{ "mcpServers": { "corroborate": { "command": "npx", "args": ["-y", "corroborate-mcp"] } } }

无需 MCP 客户端即可试用

npx corroborate-mcp   # starts the stdio server (silent = healthy)
# or from a checkout:  node cli.js "The Federal Reserve held interest rates steady"

工具

corroborate_claim — 判断结果

{ claim, window_days?=7, max_sources?=8 } →

{
  "claim": "Acme Corp acquires Widget Industries for $2 billion",
  "corroboration": "CONFIRMED",
  "n_independent_sources": 3,
  "confidence": 0.9,
  "coverage": "full",
  "sources": [
    { "headline": "Acme Corp to acquire Widget Industries in $2 billion deal",
      "outlet": "Financial Times", "domain": "ft.com", "url": "https://…",
      "published_at": "2026-07-09T14:02:00Z", "age_days": 0.9,
      "wire": false, "echoed_by_n_domains": 1 }
  ],
  "notes": ["syndication detected: near-identical headlines across multiple domains collapsed into one origin"],
  "method": "reporting-corroboration: counts INDEPENDENT story origins (syndication-aware), not raw article count; does not adjudicate truth"
}
字段含义
corroborationCONFIRMED(≥2 个独立源头)· SINGLE_SOURCE(1 个)· UNCORROBORATED(0 个)
n_independent_sources经转载聚类后得到的不同报道源头——不是文章数量
confidence0–1。源头数量越多、跨引擎一致性越高,置信度越高;同一源头被大量转载时,置信度会降低
coveragefull;若本次调用有引擎故障,则为 degraded——此时判断结果较弱可能是故障所致,而非主张本身
sources[].wire源头是否为通讯社(AP/Reuters/AFP/UPI)
sources[].echoed_by_n_domains有多少个域名转载了同一报道
notes诚实列出注意事项:转载合并、突发新闻传播链(<24h)、相关性门槛筛除、引擎故障
find_sources — 原始证据

{ query, window_days?=7, max_sources?=10 } → 去重后的多引擎来源列表(媒体、域名、url、日期),不提供判断结果。若你只需要报道覆盖情况并自行判断,这是成本更低的基础工具。

已测量的准确性——你应该对任何事实核查工具提出这样的要求

在一组公开的、包含 40 项声明的标注基准测试中(benchmark/——声明、标签、类别定义和测试框架均已公开;可使用 npm run benchmark 自行运行)。时效性声明会根据当前新闻更新,因此数据反映的是真实准确性,而非过时情况。最近一次运行时间:2026-07-22:

指标结果
虚构声明被错误确认为真0/10
广泛报道的真实声明被漏掉0/12(11 项已确认,1 项仅有单一来源)
检测到的小众真实声明7/8
正确按时间范围处理的过时声明2/5
失真声明被错误确认为真6/6——请阅读下方警告
延迟p50 为 0.4 秒 · p95 <1 秒(慢速引擎在线时,最坏情况 ≤8 秒)

⚠️ 请重视失真声明的数据——这是这个工具盲点的真实上限。 最近一次运行中,所有 6 项失真声明都返回了“已确认”(6/6),因为每一项都歪曲了一个目前正在报道的事件,而此工具会检查是否有独立报道涉及声明的主题和实体——它不会进行立场检测。因此,“Samsung 取消了 Galaxy Z Fold8”(他们实际上是发布了该产品)或“OpenAI 发布了 GPT-6”都会因真实事件的相关报道而得到确认。请牢记这条规则:如果某个主题正在被报道,那么它的失真版本很可能也会得到“已确认”。 应将“已确认”理解为*“这个主题有独立报道——现在请根据返回的来源核实具体事实”*,绝不要将其理解为“这项具体声明属实”。立场检测已列入 v1.1 路线图。(冠军赛、选举等周期性事件也可能匹配当前周期的报道——请参见过时声明的漏判情况。)

判定方式

  1. 搜索 Google News RSS、GDELT、Hacker News,并行进行(从声明中提取关键词;保留带引号的短语)。
  2. 相关性门槛——只有当文章标题确实涉及该声明时,才会计入(至少命中 2 个核心词,且命中比例 ≥35%)。宽泛的主题呼应会被剔除;剔除数量会予以报告。
  3. 联合转载聚类——不同域名下近乎相同的标题(Jaccard ≥ 0.55)会合并为一个来源;通讯社域名会被标记。
  4. 判定——独立来源即不同集群;来源越多、跨引擎一致性越高,置信度越高;单一来源产生大量相似报道时,置信度会降低;所有已知弱点都会写入 notes。

诚实说明限制

  • 不进行立场检测(见上方的 6/6)。“已确认”= 有独立报道,并非已核实每个细节。
  • 仅支持英文,且以标题为准。不会获取付费墙后的正文。
  • 受时效窗口限制(默认 7 天,最长 90 天)。旧声明会被标记为 UNCORROBORATED——这表示不在时间窗口内,并非判定为虚假。
  • 对同一通讯社报道的独立改写偶尔可能未被聚类;同一来源的不同表述偶尔也可能被计为两个来源。
  • 所有引擎均不可用时会返回错误,绝不会伪造 UNCORROBORATED 结果。

开发

npm test              # golden-claim suite — deterministic, no network
npm run test:mcp      # MCP stdio handshake + tools/list
npm run test:live     # live invariants against real engines
npm run benchmark     # 40-claim labeled accuracy benchmark (live, ~2 min)
npm run test:release  # all of the above — required green before every release

MIT © Ezra Cohen · github · npm

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。