mcpField
C
corroborate-mcp

corroborate-mcp

ローカル
github.com/chefcohen検索113 週間前に更新

corroborate-mcp について

corroborate-mcpは、現在の主張がどれだけ独立して報道されているかを調べ、転載記事を報道元ごとにまとめるMCPサーバーです。詳細の真偽ではなく、根拠や留意点を添えた報道状況の判定を必要とするエージェント向けです。

主な機能

  1. 01転載を考慮した報道元の集計
  2. 02信頼度と報道状況の注記
  3. 03複数エンジンによるニュース検索
  4. 04独立した情報源検索ツール
  5. 05決定論的な読み取り専用チェック

活用シーン

  1. 01ニュースの主張に独立報道があるか確認
  2. 02通信社記事の転載と報道元を区別
  3. 03エージェントの判断前に情報源を検索
  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 エージェントのための、誠実な裏付けレイヤーです。 主張を渡すと、それが実際にどれだけ 独立して 報じられているかを示し、判断の根拠も明らかにします。

npm downloads license node MCP API keys

AP の記事が 40 の報道機関で繰り返し掲載されても、引用元は 40 ではなく 1 です。他の検証ツールは引用を数えますが、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

エージェントがこれを呼び出すべき場面

  • 現在の出来事やニュースに関する主張を信頼する前に — 独立して報じられているのか、それとも一つの情報源があらゆる場所で繰り返されているだけなのかを確認します。
  • 真の独立性を示す信頼度スコアに基づいて、情報源を順位付けまたは絞り込みます。
  • 根拠を示せる判定が必要なとき — すべての回答に、証拠、信頼度、注意事項が付いています。

ウェブ検索エンジンではなく(検索には Exa/Tavily/Brave をお使いください)、人間のファクトチェックネットワークでもありません。その間にある、対象を絞った誠実な基本機能です。つまり、どれだけ独立して報じられているかを確認します。

設計上、信頼できる理由

🔑 API キー不要、アカウント不要キー不要のエンジン(Google News RSS · GDELT · Hacker News)を使用します。登録は不要です。
👁 読み取り専用公開ニュースを読み取ります。操作、書き込み、支出、データへのアクセスはできません。
🎯 決定論的処理に LLM は使いません。同じ証拠を入力すれば、同じ判定が返ります。p50 は約 0.4 秒です。
📖 オープンソース(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シンジケーションの統合、速報の連鎖(24 時間未満)、関連性ゲートによる除外、エンジンの停止など、誠実な注意事項を示します。
find_sources — 生の証拠

{ query, window_days?=7, max_sources?=10 } → 判定を含まない、複数のエンジンから取得した重複排除済みリスト(報道機関、ドメイン、URL、日付)です。報道状況を確認し、自分で判断したい場合に使える、より低コストな基本機能です。

測定された精度 — あらゆるファクトチェックツールに求めるべきことです

公開されている40件の主張をラベル付けしたベンチマーク(benchmark/ — 主張、ラベル、カテゴリの定義、ハーネスはすべて公開されています。npm run benchmark でご自身でも実行できます)に基づいています。時間とともに変化する主張は最新のニュースに合わせて更新しているため、数値は古さではなく実際の精度を反映しています。最新の実行結果 2026-07-22:

指標結果
捏造された主張を誤って CONFIRMED と判定0/10
広く報道された真実の主張を見逃した件数0/12(11件は CONFIRMED、1件は単一ソース)
ニッチな真実の主張を検出7/8
古くなった主張を正しく期間判定2/5
歪曲された主張を誤って CONFIRMED と判定6/6 — 以下の警告をお読みください ↓
レイテンシp50 0.4s · p95 <1s(低速エンジン稼働時の最悪ケースは≤8s)

⚠️ 歪曲された主張の数値を重く受け止めてください — これはこのツールの盲点を正直に示す上限です。 最新の実行では、歪曲された主張はすべて CONFIRMED と判定されました(6/6)。いずれも現在報道されている出来事を歪めた内容であり、このツールは主張のトピックや関連する組織・人物などをめぐる独立した報道の有無を確認しますが、立場の検出は行わないためです。そのため、「Samsung が Galaxy Z Fold8 を発売中止にした」(実際は発表しました)や「OpenAI が GPT-6 をリリースした」は、実際の出来事に関する報道を根拠に確認されます。覚えておくべきルール:主張のトピックが報道されていれば、その歪曲版も CONFIRMED と判定される可能性が非常に高くなります。 CONFIRMED は「このトピックには独立した報道がある — 返された情報源を使って個々の事実を確認してください」と解釈してください。「この主張がそのまま真実である」という意味では決してありません。立場の検出は v1.1 のロードマップ項目です。(選手権や選挙などの定期的な出来事も、現在の回に関する報道と一致することがあります — 古い主張の取りこぼしについては、以下をご覧ください。)

判定の仕組み

  1. 検索 — Google News RSS、GDELT、Hacker News を並行して検索します(主張から抽出したキーワードを使用し、引用符で囲まれた語句はそのまま保持します)。
  2. 関連性の判定 — 見出しが実際に主張を扱っている場合に限り、記事としてカウントします(主要トークンが2つ以上ヒットし、かつ主要トークンの35%以上に一致すること)。大まかなトピック上の類似記事は除外し、除外数を報告します。
  3. シンジケーションのクラスタリング — ドメイン間でほぼ同一の見出し(Jaccard ≥ 0.55)は1つの配信元にまとめ、通信社のドメインにはフラグを付けます。
  4. 判定 — 独立した配信元の数は異なるクラスターの数です。配信元の数と複数エンジン間の一致度が高いほど信頼度が上がり、広範囲に拡散した単一配信元の記事が多いほど下がります。既知の弱点はすべて notes に記載します。

正直な制限事項

  • 立場の検出は行いません(上記の6/6)。CONFIRMED は独立した報道があることを意味し、細部まで検証済みであることを意味しません。
  • 英語の見出しレベルで判定します。ペイウォールで保護された記事本文は取得しません。
  • 最新性の期間を設けています(デフォルトは7日、最大90日)。古い主張は UNCORROBORATED と判定されますが、これは期間についての判定であり、虚偽の判定ではありません。
  • 同じ通信社の記事を独立して書き換えたものが、まれに別クラスターになる場合があります。同じ配信元の記事でも表現が異なると、まれに2件としてカウントされる場合があります。
  • すべてのエンジンが停止している場合はエラーとなり、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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。