mcpField
C
cite-gate

cite-gate

远程服务
github.com/cite-gateAI 与智能体03 周前更新
代码仓库

关于 cite-gate

cite-gate 用于检查 AI 辅助撰写的脚本,验证引文是否出自源文本,并标记缺少引文支持的数字和复制措辞。它面向需要重复执行引文核验的作者和 Agent,但不判断主张或来源是否属实。

主要功能

  1. 01将引文与源文本核对
  2. 02检查引文是否包含文中数字
  3. 03标记可能缺乏来源的人名和数量
  4. 04检测复制来源措辞的情况
  5. 05通过命令行或 GitHub Actions 运行
  6. 06配置引文长度和时代规则

适用场景

  1. 01审查 AI 撰写脚本中的引文
  2. 02发布前发现无引文支持的数字
  3. 03检查草稿是否复制来源措辞
  4. 04在仓库每次变更时执行引文检查

MCP 相关

本地 stdio MCP 服务为 Agent 提供引文和数字检查。托管的 Streamable HTTP 端点提供相同的两种工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.mlpc.co.kr/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

2
参数类型必填说明
claimsobject是{"config": {...}, "sections": [{"title": str, "items": [{"id": str, "text": str, "claims": [{"src": str, "quote": str}]}]}]}
sourcesobject是源 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

这个示例故意无法通过:最后三项是语言模型常犯的错误(自行推算出的数字、只记得一半的引文,以及从来源中直接摘录的段落)。

为什么

语言模型擅长写出流畅且细节十足的文字,但出错的往往是一些小细节:年份差了一年、为了“提供背景”而添加的名字,或是把引文转述成来源中从未说过的话。手动将整篇脚本与来源逐一核对,无法扩展到更大规模。这个工具将核对过程变成一道检查关卡,可在每次更改时运行。

检查内容

检查项结果
每条引文都存在于其源文件中(统一处理弯引号、破折号和空格)失败
每条引文至少有 20 个字符失败
正文中的每个数字都出现在该条目的引文中(1,000 = 1000)失败
来源 ID 只能是纯名称(不能包含路径)失败
正文中出现“hundred / thousand / million”,但引文中没有警告
句中出现引文中没有的大写单词(可能是未标明来源的名称)警告
与引文连续重复 11 个或更多单词(属于照抄而非转述)警告
可选的时代规则:正文提到某个时代,但引文未将该条目与该时代关联;引文中没有出现正文中的月份名称或“X era”短语;正文中出现特殊字母警告 / 失败

存在失败项时,退出代码为 1。使用 --strict 时,警告也会导致失败。

输入格式

一个声明文件(JSON)和一个纯文本来源文件夹,每个来源 ID 对应一个文件。

{
 "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_run11判定为照抄所需的连续重复单词数
min_quote_chars20可接受引文的最短长度
fold_accentsfalse将正文中的 Tokaido 与来源中的 Tōkaidō 进行匹配
eranull{"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"
通过你的 Agent 使用(MCP)

cite-gate 内置了一个小型 Model Context Protocol 服务,因此 Agent 可以在向你展示草稿前先检查自己的草稿。它通过 stdio 在本地运行,没有依赖项,不会进行网络调用,也不会收集遥测数据。

{
  "mcpServers": {
    "cite-gate": { "command": "python", "args": ["-m", "cite_gate.mcp_server"],
                   "cwd": "/path/to/cite-gate" }
  }
}

工具:

工具输入输出
check_citationsclaims(上述格式)和 sources({id: full text})失败项、警告、passed
check_numberstext 和 quotes文本中没有任何引文包含的数字

此外还有一个托管端点:https://mcp.mlpc.co.kr/mcp(MCP Streamable HTTP,提供相同的两个工具,每次调用最多处理 3,000 个字符的正文)。它不会存储你的文本;它会记录的内容列在 worker/README.md 中。如需零日志,请使用上方的本地服务。

托管版本或审核服务对你有帮助吗?欢迎在讨论区告诉我们。

限制

  • 这些启发式规则针对英文文本进行了调优。
  • 存在引文并不代表其内容正确。来源可能有误,某条内容也可能引用了真实存在但表达了其他意思的句子。此门禁可以缩小审查范围,但不能取代审查。
  • 专有名词和数量检查可能产生误报,因此仅发出警告。请修复问题,或将名称添加到 allow 中;不要习惯性地忽略这些警告。

示例文本

examples/gettysburg/sources/gettysburg.txt 是葛底斯堡演说(1863 年),属于公有领域,此处根据布利斯抄本转录而成。林肯的手稿副本之间存在细微的措辞差异;检查器仅与此文件进行比对。

许可证

AGPL-3.0-or-later。版权所有 (C) 2026 MLPC Inc.(参见 LICENSE)。

评论

支持 Markdown

第一次接触 MCP?

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

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