一个全面的模型上下文协议(MCP)实现,用于与arXiv.org进行交互,使AI助手能够无缝地搜索、检索、分析和导出学术论文。
# 克隆仓库
git clone https://github.com/yourusername/arxiv-mcp-client.git
cd arxiv-mcp-client
# 安装依赖
poetry install
# 激活虚拟环境
poetry shell
# 安装依赖
pip install mcp httpx
# 运行客户端
python arxiv_mcp_client.py
import asyncio
from arxiv_mcp_client import ArxivMCPClient
async def main():
# 初始化客户端
client = ArxivMCPClient()
# 连接到MCP服务器
await client.connect("arxiv_mcp_server.py")
# 在这里编写你的代码...
# 关闭连接
await client.close()
asyncio.run(main())
# 通用搜索
results = await client.search_papers("transformer神经网络", max_results=10)
# 按作者搜索
papers = await client.search_by_author("Geoffrey Hinton", max_results=20)
# 按类别搜索
ai_papers = await client.search_by_category("cs.AI", max_results=15)
# 获取最近的论文
recent = await client.get_recent_papers("cs.LG", days_back=7, max_results=10)
# 获取论文详情
paper = await client.get_paper_details("2301.07041")
# 获取格式化的摘要
summary = await client.get_paper_summary("2301.07041")
# 比较论文
comparison = await client.compare_papers(
["2301.07041", "2302.13971"],
comparison_fields=["authors", "abstract", "categories"]
)
# 查找相关论文
related = await client.find_related_papers("2301.07041", max_results=10)
# 导出到BibTeX
bibtex = await client.export_papers(
["2301.07041", "2302.13971"],
format="bibtex",
include_abstract=True
)
# 分析研究趋势
trends = await client.analyze_trends(
category="cs.AI",
time_period="3_months",
analysis_type="top_authors"
)
| 工具 | 描述 | 关键参数 |
|---|---|---|
search_arxiv | 通用论文搜索 | query, max_results, sort_by |
get_paper | 获取特定论文详情 | arxiv_id |
summarize_paper | 生成格式化摘要 | arxiv_id |
search_by_author | 按作者查找论文 | author_name, max_results |
search_by_category | 浏览类别论文 | category, max_results, sort_by |
get_recent_papers | 获取最新发表的论文 | category, days_back, max_results |
compare_papers | 比较多篇论文 | arxiv_ids, comparison_fields |
find_related_papers | 发现相关工作 | arxiv_id, max_results |
get_paper_citations | 引用分析 | arxiv_id |
analyze_trends | 研究趋势分析 | category, time_period, analysis_type |
export_papers | 多格式导出 | arxiv_ids, format, include_abstract |
cs.AI - 人工智能cs.LG - 机器学习cs.CV - 计算机视觉cs.CL - 计算与语言cs.CR - 密码学与安全cs.DB - 数据库cs.DS - 数据结构与算法math.CO - 组合数学math.ST - 统计理论math.PR - 概率论math.OC - 最优化与控制physics.comp-ph - 计算物理physics.data-an - 数据分析quant-ph - 量子物理@article{2301_07041,
title={论文标题},
author={作者一 and 作者二},
journal={arXiv预印本 arXiv:2301.07041},
year={2023},
url={https://arxiv.org/abs/2301.07041}
}
{
"id": "2301.07041",
"title": "论文标题",
"authors": ["作者一", "作者二"],
"abstract": "论文摘要...",
"published": "2023-01-17",
"categories": ["cs.AI", "cs.LG"]
}
id,title,authors,published,categories,url
2301.07041,论文标题,"作者一; 作者二",2023-01-17,"cs.AI; cs.LG",https://arxiv.org/abs/2301.07041
# 关键词搜索
await client.search_papers("神经网络")
# 多个关键词
await client.search_papers("transformer注意力机制")
# 精确短语
await client.search_papers('"大型语言模型"')
# 作者搜索
await client.search_by_author("Yoshua Bengio")
# 类别搜索
await client.search_by_category("cs.AI")
# 类别中的最新论文
await client.get_recent_papers("cs.LG", days_back=14)
跟踪特定类别中论文发表的数量随时间的变化。
trends = await client.analyze_trends("cs.AI", "6_months", "publication_count")
# 返回:每月发表数量
识别给定时间段内领域中最活跃的作者。
trends = await client.analyze_trends("cs.LG", "1_year", "top_authors")
# 返回:按论文数量排名的作者
分析特定类别中论文标题中最常见的关键词。
trends = await client.analyze_trends("cs.CV", "3_months", "keyword_frequency")
# 返回:按频率排名的关键词
客户端包含了全面的错误处理:
try:
results = await client.search_papers("机器学习")
if "error" in results:
print(f"搜索失败: {results['error']}")
else:
print(f"找到 {len(results['papers'])} 篇论文")
except Exception as e:
print(f"连接错误: {e}")
客户端遵守arXiv的API指南,内置了速率限制和超时处理。
# 自定义超时
client = ArxivMCPClient()
client.http_client = httpx.AsyncClient(timeout=60.0)
# 自定义结果限制
results = await client.search_papers("AI", max_results=50) # 最大值: 100
git checkout -b feature/amazing-feature)git commit -m '添加神奇的功能')git push origin feature/amazing-feature)该项目采用MIT许可证 - 详情见LICENSE文件。
为研究社区制作 ❤️