cite-gate について
cite-gateは、AI支援で作成した台本の引用を原文と照合し、裏付けのない数字や原文の転用を検出します。引用確認を繰り返し行う執筆者やエージェント向けで、主張や出典の真偽は判定しません。
主な機能
- 01引用と出典テキストの照合
- 02引用内の数字の確認
- 03出典不明の人名や数量の警告
- 04出典の文言を写した箇所の検出
- 05CLIまたはGitHub Actionsでの実行
- 06引用長と時代ルールの設定
活用シーン
- 01AI作成台本の引用確認
- 02公開前の根拠のない数字の発見
- 03草稿に出典の文言が転用されているか確認
- 04リポジトリの変更ごとに引用検査を実行
MCP 対応
ローカルのstdio MCPサーバーは、エージェント向けに引用と数字の検査を提供します。ホスト型のStreamable HTTPエンドポイントでも同じ2つのツールを利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.mlpc.co.kr/mcpclaude mcp add --transport http kr-co-mlpc-cite-gate https://mcp.mlpc.co.kr/mcp{"mcpServers":{"kr-co-mlpc-cite-gate":{"type":"http","url":"https://mcp.mlpc.co.kr/mcp"}}}Cursor で開く{"servers":{"kr-co-mlpc-cite-gate":{"type":"http","url":"https://mcp.mlpc.co.kr/mcp"}}}VS Code で開く{"mcpServers":{"kr-co-mlpc-cite-gate":{"type":"http","url":"https://mcp.mlpc.co.kr/mcp"}}}{"mcpServers":{"kr-co-mlpc-cite-gate":{"serverUrl":"https://mcp.mlpc.co.kr/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| claims | object | はい | {"config": {...}, "sections": [{"title": str, "items": [{"id": str, "text": str, "claims": [{"src": str, "quote": str}]}]}]} |
| sources | object | はい | ソース ID からソース全文へのマップ。 |
詳細
cite-gate
AI の支援を受けて書いたスクリプトをチェックする、小さなツールです。スクリプト内の事実を述べる項目すべてに、ソースファイルに一字一句そのまま記載された引用を付けるようにし、ソースを言い換えずにそのまま写した文章にはフラグを立てます。
主張が真実かどうかを判断するものではありません。主張の根拠となった文を示せるか、そしてその文が実際に存在するかを判断します。
$ python -m cite_gate check examples/gettysburg/claims.json
5 items · 91 words · 2 failures · 1 warnings
FAIL [number-not-in-quote] number(s) ['1776', '87'] not in the quotes
FAIL [quote-not-in-source] quote not found in 'gettysburg': 'this nation shall endure forever and ever'
warn [copied-not-retold] 26 consecutive words shared with the quotes; retell, don't copy
この例が失敗するのは意図的です。最後の3項目は、言語モデルがよく犯す間違いです(自分で計算した数値、うろ覚えの引用、ソースからそのまま抜き出した段落)。
理由
言語モデルは、確信に満ちた詳細を含む流暢な文章を書きます。間違いが生じるのは、細かな部分です。1年ずれている年号、「背景情報」として追加された名前、ソースには書かれていない内容に言い換えられた引用などです。スクリプト全体をソースと照らし合わせて手作業で読む方法では、規模の拡大に対応できません。このツールを使えば、変更のたびに実行できるチェックとして、その確認作業を行えます。
チェック項目
| チェック | 結果 |
|---|---|
| 各引用がソースファイルに存在する(曲線形引用符、ダッシュ、空白を正規化) | 失敗 |
| 各引用が20文字以上である | 失敗 |
文章中のすべての数値が、その項目の引用に含まれている(1,000 = 1000) | 失敗 |
| ソース ID がパスではなく、単純な名前である | 失敗 |
| 文章には「hundred / thousand / million」があるが、引用にはない | 警告 |
| 引用に含まれていない、文中の大文字で始まる単語(ソースにない名前の可能性) | 警告 |
| 引用と連続して11語以上一致する(言い換えではなく、コピーしている) | 警告 |
| オプションの時代ルール:文章で時代に言及しているが、引用ではその項目と時代が結び付けられていない。引用にない月名や「X era」という表現がある。文章に特殊文字が含まれる | 警告/失敗 |
失敗がある場合、終了コードは1です。--strict を指定すると、警告がある場合も失敗になります。
入力形式
主張ファイル(JSON)と、プレーンテキストのソースを保存したフォルダー(ソース ID ごとに1ファイル)。
{
"config": {"allow": ["Lincoln"], "copy_run": 11},
"sections": [
{"title": "The occasion",
"items": [
{"id": "opening",
"text": "He began by looking back four score and seven years ...",
"claims": [{"src": "gettysburg",
"quote": "Four score and seven years ago our fathers brought forth on this continent, a new nation"}]}
]}
]
}
sources/gettysburg.txt にソーステキストを保存します。各ソースのコピーを URL と改訂情報を先頭に記して手元に保管し、後で実行したときにも同じテキストと照合できるようにしてください。
設定
| キー | デフォルト | 意味 |
|---|---|---|
allow | [] | 引用なしで許可する名前(たとえば、スクリプトの主題) |
copy_run | 11 | コピーとみなす、一致する連続語数 |
min_quote_chars | 20 | 引用として認める最小文字数 |
fold_accents | false | 文章中の Tokaido とソース中の Tōkaidō を比較する |
era | null | {"name": "Victorian", "tie": "\\b18[3-9]\\d\\b", "months": true, "letters": ""} |
使い方
コマンドライン(Python 3.10 以降、依存関係なし):
pip install . # from a checkout; adds the `cite-gate` command
cite-gate check path/to/claims.json [--sources DIR] [--json] [--strict]
# or without installing
python -m cite_gate check path/to/claims.json
GitHub Actions:
- uses: actions/checkout@v4
- uses: cite-gate/cite-gate@v0
with:
claims: script/claims.json
strict: "false"
エージェントから使用する(MCP)
cite-gate には小さなModel Context Protocolサーバーが含まれているため、エージェントは下書きをあなたに見せる前にチェックできます。ローカルで stdio 経由で動作し、依存関係もネットワークへの通信もなく、テレメトリーも収集しません。
{
"mcpServers": {
"cite-gate": { "command": "python", "args": ["-m", "cite_gate.mcp_server"],
"cwd": "/path/to/cite-gate" }
}
}
ツール:
| ツール | 入力 | 出力 |
|---|---|---|
check_citations | claims(上記の形式)と sources({id: full text}) | 失敗、警告、passed |
check_numbers | text と quotes | どの引用にも含まれていない、文章中の数値 |
ホスト型エンドポイント https://mcp.mlpc.co.kr/mcp もあります(MCP Streamable HTTP、同じ2つのツールを提供し、1回の呼び出しにつき文章は最大3,000文字です)。テキストは保存しません。ログに記録する内容は worker/README.md に記載されています。ログを一切残さない場合は、上記のローカルサーバーを使用してください。
ホスト型バージョンやレビューサービスがあると便利でしょうか?Discussionsでお知らせください。
制限事項
- ヒューリスティックは、英語の文章に合わせて調整されています。
- 引用が存在するからといって、その内容が正しいとは限りません。ソースに誤りが含まれている場合があり、項目が実在するものの別の内容を述べている文を引用している場合もあります。このゲートはレビューの負担を減らしますが、レビューに取って代わるものではありません。
- 固有名詞と数量のチェックは誤検知があるため、警告として表示されます。修正するか、名前を
allowに追加してください。無視することに慣れてはいけません。
テキストの例
examples/gettysburg/sources/gettysburg.txt は、1863年のゲティスバーグ演説です。パブリックドメインであり、ここではブリス版から書き起こしています。リンカーンの原稿の写しには表現の細かな違いがありますが、チェッカーはこのファイルのみと照合します。
ライセンス
AGPL-3.0-or-later。Copyright (C) 2026 MLPC Inc.(LICENSE を参照)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。