重新检查
](https://pypi.org/project/refcheck-mcp/)   
人工智能助理的学术参考验证。
一 主控程序 将学术引文与真实出版物数据库进行交叉检查的服务器。它捕获幻觉参考,查找关于某个主题的真实论文,并导出可发布的BibTeX——所有这些都可以从Claude Code、Claude Desktop或任何兼容MCP的客户端中导出。
问题
大型语言模型经常使学术引用产生幻觉:看似合理的引用,带有捏造的标题、作者、DOI或场所。论文或资助提案中的一个幻觉引用可能会破坏可信度。
重新检查 通过让你的AI助手直接访问Crossref、Semantic Scholar和arXiv来解决这个问题。它返回的每个引用都有一个真实的数据库记录作为支持。
它的作用
| 工具 | 目的 |
|---|---|
verify_reference | 检查引文是否真实。退货 verified, partial_match,或 not_found 具有置信度得分和校正的BibTeX。 |
search_references | 查找关于某一主题的真实论文。从不捏造,只返回数据库支持的结果。 |
get_bibtex | 按DOI、标题或语义学者ID导出已准备好发布的BibTeX。支持批量导出。 |
快速开始
1.安装
pip install refcheck-mcp或者从源代码安装:
git clone https://github.com/benchoi93/refcheck.git
cd refcheck
pip install -e .要求: Python 3.11+
2.配置克劳德代码
添加到您的克劳德代码设置(~/.claude.json):
{
"mcpServers": {
"refcheck": {
"command": "python",
"args": ["-m", "refcheck"],
"env": {
"CROSSREF_EMAIL": "you@university.edu"
}
}
}
}3.使用它
> Verify this reference: Li, Y., Yu, R., Shahabi, C., & Liu, Y. (2018).
Diffusion convolutional recurrent neural network: Data-driven traffic
forecasting. ICLR 2018.
> Find me 5 recent papers on physics-informed neural networks for traffic
state estimation and get their BibTeX.
> Get BibTeX for DOI 10.1016/j.trc.2024.104873
> Verify all references in my refs.bib and replace any incorrect entries
with the corrected BibTeX.工具
verify_reference
通过查询多个数据库并对结果进行模糊匹配来检查引文是否真实。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
title | str | 至少一个 title 或 doi | 论文标题 |
authors | list[str] | 否 | 作者姓名(姓氏足够) |
year | int | 否 | 出版年份 |
doi | str | 至少一个 title 或 doi | DOI字符串 |
venue | str | 否 | 期刊或会议名称 |
验证管道:
- DOI查找 (如果提供)--通过Crossref解决。DOI匹配已接近确定验证。
- 标题搜索 --并行查询所有可用数据库。
- 模糊匹配 --根据标题相似性(标记集比率)、作者重叠(姓氏为Jaccard)、年份匹配(+/-1容差)和地点相似性对每个候选人进行评分。
- 裁决 --加权综合得分产生分类:
| 判决 | 得分 | 含义 |
|---|---|---|
verified | >=0.85 | 参考真实准确的置信度高 |
partial_match | 0.50-0.85 | 存在类似的论文,但某些领域不同 |
not_found | \<0.50 | 任何数据库中都没有匹配项。可能是幻觉。 |
自动BibTeX校正: 当判决是 verified 或 partial_match,响应包括 corrected_bibtex 从匹配的纸张中选择正确的BibTeX条目。这意味着一次调用既能检测错误,又能提供修复。
示例响应(部分匹配):
{
"verdict": "partial_match",
"confidence": 0.72,
"matched_reference": {
"title": "Attention is All You Need",
"authors": ["Ashish Vaswani", "Noam Shazeer", "..."],
"year": 2017,
"doi": "10.48550/arXiv.1706.03762",
"venue": "Advances in Neural Information Processing Systems",
"url": "https://doi.org/10.48550/arXiv.1706.03762"
},
"discrepancies": ["Year mismatch: claimed 2018, found 2017"],
"sources_checked": ["crossref", "semantic_scholar", "arxiv"],
"corrected_bibtex": "@article{vaswani2017attention,\n author = {Vaswani, Ashish and ...},\n title = {Attention is All You Need},\n year = {2017},\n doi = {10.48550/arXiv.1706.03762},\n}"
}search_references
在所有配置的数据库中搜索真实论文。结果通过DOI和标题相似性进行重复数据消除。
参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
query | str | *必需的* | 搜索主题或关键字 |
max_results | int | 10 | 结果数量(1-30) |
year_from | int | 无 | 最早出版年份 |
year_to | int | 无 | 最新出版年份 |
databases | list[str] | 全部可用 | 要查询哪些数据库 |
每个结果包括: 标题、作者、年份、DOI、地点、摘要(截断)、URL和源数据库。
get_bibtex
生成经过验证的BibTeX条目。更喜欢Crossref内容协商(发布者质量BibTeX),并在需要时回退到元数据构建。
参数(提供一个):
| 参数 | 类型 | 说明 |
|---|---|---|
doi | str | 单一DOI |
dois | list[str] | 多个DOI(批处理模式) |
title | str | 论文标题(先搜索和验证) |
semantic_scholar_id | str | 语义学者论文ID |
示例——批量DOI导出:
get_bibtex(dois=["10.1016/j.trc.2024.104873", "10.48550/arXiv.1706.03762"])返回连接好的BibTeX条目,准备附加到 .bib 文件:
@article{vaswani2017attention,
author = {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and ...},
title = {Attention is All You Need},
journal = {Advances in Neural Information Processing Systems},
year = {2017},
doi = {10.48550/arXiv.1706.03762},
url = {https://doi.org/10.48550/arXiv.1706.03762},
}BibTeX惯例:
- 引用关键字如下
{lastname}{year}{keyword}格式(例如。,vaswani2017attention) - 首字母缩略词和专有名词被包裹在
{}保持资本化 - 条目类型从元数据中推断出来(
@article,@inproceedings,@misc等等) - 田地从来不是捏造的。缺失的数据(例如页码)被省略而不是猜测。
数据库
refcheck并行查询多个学术数据库。它在没有API密钥的情况下开箱即用-Crossref和arXiv是免费的,未经验证。添加可选密钥可以解锁额外的源和更好的速率限制。
| 数据库 | 所需密钥 | 覆盖范围 | 注释 |
|---|---|---|---|
| Crossref | 无 | 156M+DOI注册出版物 | DOI骨干。集 CROSSREF_EMAIL 以获得更快的速率限制。 |
| 语义学者 | 没有 | 2亿+篇论文 | 覆盖范围最广。建议使用免费API密钥。 |
| arXiv | 无 | 250万+预印本 | 对最近的ML/CS工作至关重要。强制执行3s速率限制。 |
| 垃圾 | 是 | 90M+记录 | Elsevier API密钥+可选机构令牌。 |
| IEEE Xplore。 | 是 | IEEE/IET出版物 | 免费等级:每天200个请求。 |
服务器在 降级模式 当密钥丢失时,它会跳过不可用的API并报告检查了哪些源。
配置
复制示例env文件并填写密钥:
cp .env.example .env然后编辑 .env:
# Strongly recommended — enables Crossref "polite pool" (~50 req/sec)
CROSSREF_EMAIL=you@university.edu
# Recommended — free key from https://www.semanticscholar.org/product/api
S2_API_KEY=your-s2-key
# Optional — Elsevier API key from https://dev.elsevier.com/
ELSEVIER_KEY=
# Optional — Elsevier institutional token (higher rate limits)
ELSEVIER_INSTTOKEN=
# Optional — free key from https://developer.ieee.org/
IEEE_API_KEY=这 .env 文件被标记为无效。服务器在启动时通过以下方式自动加载 python-dotenv.
或者,您可以直接设置环境变量或将其传递给 env MCP服务器配置块 ~/.claude.json.
建筑
refcheck/
├── src/refcheck/ # Python package
│ ├── __init__.py # Package version
│ ├── __main__.py # python -m refcheck entry point
│ ├── server.py # FastMCP server, three tool definitions
│ ├── clients/
│ │ ├── __init__.py # Client protocol & registry
│ │ ├── crossref.py # Crossref: DOI lookup, title search, BibTeX export
│ │ ├── semantic_scholar.py # Semantic Scholar: keyword search, paper lookup
│ │ ├── arxiv.py # arXiv: title/keyword search, XML parsing
│ │ ├── scopus.py # Scopus: search with API key (optional)
│ │ └── ieee.py # IEEE Xplore: search with API key (optional)
│ ├── matching.py # Fuzzy matching: title, author, year, venue scoring
│ ├── bibtex.py # BibTeX generation, formatting, citation keys
│ ├── models.py # Pydantic v2 input/output models
│ └── config.py # Environment variable management
├── pyproject.toml # Package metadata & dependencies
├── server.json # MCP Registry metadata
└── requirements.txt # Pinned dependencies (alternative to pyproject.toml)关键设计决策:
- 异步贯穿始终 -所有API调用都使用
httpx.AsyncClient超时10秒。 - 并行查询 --通过以下方式同时查询多个数据库
asyncio.gather. - 优雅降级 -一个失败的API永远不会阻止其他API。错误记录到stderr,响应指示检查了哪些源。
- 从不捏造 --如果没有找到匹配项,该工具会这样说。BibTeX字段会被省略而不是猜测。
用例
- 写论文 --提交前核实每一条引文。抓住错误的年份、拼写错误的作者或完全捏造的参考文献。部分匹配会自动返回更正的BibTeX。
- 修复.bib文件 --批量验证引用,并在一次传递中用数据库支持的更正的BibTeX替换不正确的条目。
- 文献综述 --搜索某个主题的真实论文,一步即可获得BibTeX。
- 拨款建议 --确保所有引用的先前工作确实存在。
- 教学 --帮助学生核实作业中的引用。
- 批量BibTeX导出 --从草稿中收集DOI并导出干净的DOI
.bib文件。
局限性
- 覆盖差距 --一些利基出版物可能不会出现在查询的数据库中。A.
not_found结果并不能保证纸张是假的;它可能存在于未涵盖的数据库中(例如,PubMed用于生物医学,DBLP用于CS)。 - 元数据质量 --由元数据构造的BibTeX(当Crossref内容协商不可用时)可能缺少页码或卷等字段。
- 费率限制 --arXiv在请求之间强制执行3秒的延迟。IEEE免费等级限制为每天200个请求。
- 没有谷歌学者 -没有官方的谷歌学者API。Crossref+Semantic Scholar+arXiv的现有覆盖范围更广、更可靠。
许可证
麻省理工学院
引用
如果您在研究工作流程中使用refcheck,请提及:
refcheck: Academic Reference Verification MCP Server
https://github.com/benchoi93/refcheck