arXiv论文管理服务器

一个增强型的Model Context Protocol (MCP)服务器,提供对arXiv科学论文的搜索、下载、阅读和AI驱动的分析功能,适用于研究人员和学生处理学术文献。

  • by MaksPyn
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 makspyn/arxiv-mcp-server

使用说明

arXiv MCP服务器

一个增强的模型上下文协议(MCP)服务器,提供对arXiv的全面访问,用于搜索、下载、阅读和分析具有AI支持的研究提示的科学论文。

概述

该MCP服务器使AI助手不仅可以从arXiv搜索和检索科学论文,还可以在本地下载、提取内容并生成面向研究的分析提示。非常适合研究人员、学生和任何从事学术文献工作的人。

特性

核心功能

  • 搜索论文 按标题、作者、摘要、类别或任何组合
  • 检索文件 通过他们的arXiv ID
  • 获取最新论文 在特定类别中
  • 查找所有论文 由特定作者
  • 速率限制 遵守arXiv API指南

增强功能(v1.1.0)

  • 📥 纸张下载和存储:通过元数据跟踪在本地下载和存储论文
  • 📖 PDF内容阅读:从下载的论文中提取和阅读文本内容
  • 🔍 论文搜索:在下载的论文中搜索特定术语
  • 🤖 AI研究提示:用于论文摘要、方法分析等的预配置分析提示
  • 📊 存储管理:跟踪存储使用情况并管理下载的论文
  • 🔧 增强的错误处理:具有重试逻辑的强大错误处理
  • 📝 结构化日志记录:基于Winston的日志记录,级别可配置

安装

先决条件

  • Node.js(v16或更高版本)
  • npm或纱线

选项1:从npm安装

npm install -g @arxiv/mcp-server

然后运行:

arxiv-mcp-server

选项2:从源代码安装

  1. 克隆此存储库:
git clone https://github.com/MaksPyn/arxiv-mcp-server.git
cd arxiv-mcp-server
  1. 安装依赖项:
npm install
  1. 构建TypeScript代码:
npm run build

选项3:Docker

  1. 使用Docker Compose:
cd docker
docker-compose up -d
  1. 直接使用Docker:
docker build -t arxiv-mcp-server -f docker/Dockerfile .
docker run -it --name arxiv-mcp-server arxiv-mcp-server

配置

复制示例环境文件并根据需要进行自定义:

cp config/.env.example .env

可用配置选项:

  • LOG_LEVEL:日志记录级别(调试、信息、警告、错误)
  • STORAGE_DIR:用于存储下载论文的目录
  • MAX_STORAGE_SIZE_MB:纸张的最大存储容量
  • RATE_LIMIT_DELAY_MS:API请求之间的延迟(默认值:3000ms)

用法

运行服务器

使用以下命令启动服务器:

npm start

或者用于开发(构建+运行):

npm run dev

与Claude Desktop集成

将以下内容添加到您的Claude Desktop配置文件中:

视窗: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/claude/claude_desktop_config.json

{
  "mcpServers": {
    "arxiv": {
      "command": "node",
      "args": ["C:/path/to/arxiv-server/build/index.js"]
    }
  }
}

替换 C:/path/to/arxiv-server 使用arxiv服务器目录的实际路径。

可用工具

1. search_papers

使用各种标准搜索论文。

参数:

  • query (字符串,可选):原始搜索查询
  • title (字符串,可选):在论文标题中搜索
  • author (字符串,可选):按作者姓名搜索
  • abstract (字符串,可选):在摘要中搜索
  • category (字符串,可选):按类别筛选(例如,“cs.AI”、“math.CO”)
  • all (字符串,可选):在所有字段中搜索
  • start (数字,可选):起始索引(默认值:0)
  • maxResults (数字,可选):返回的最大结果,最大2000(默认值:10)
  • sortBy (字符串,可选):按“相关性”、“lastUpdatedDate”或“submittedDate”排序(默认值:“相关性”)
  • sortOrder (字符串,可选):“升序”或“降序”(默认值:“降序”)

例子:

{
  "title": "neural networks",
  "category": "cs.AI",
  "maxResults": 5
}

2. get_paper_by_id

通过arXiv ID检索特定论文。

参数:

  • ids (字符串数组,必填):arXiv ID数组

例子:

{
  "ids": ["2301.00001", "2312.12345"]
}

3. get_recent_papers

获取特定类别的最新论文。

参数:

  • category (字符串,必填):要过滤的类别(例如,“cs.AI”,“physics.quant-ph”)
  • maxResults (数字,可选):最大结果(默认值:10)

例子:

{
  "category": "cs.LG",
  "maxResults": 20
}

4. search_author

查找特定作者的所有论文。

参数:

  • author (字符串,必填):要搜索的作者姓名
  • maxResults (数字,可选):最大结果(默认值:20)
  • sortBy (字符串,可选):“submittedDate”或“lastUpdatedDate”(默认值:“submittedDate”)

例子:

{
  "author": "Yann LeCun",
  "maxResults": 10
}

5. download_paper

下载纸质PDF并将其存储在本地。

参数:

  • arxivId (string,必填):arXiv要下载的论文ID

例子:

{
  "arxivId": "2301.00001"
}

6. list_downloaded_papers

列出所有本地下载的论文及其元数据。

参数: 无

7. delete_paper

从本地存储中删除下载的论文。

参数:

  • arxivId (string,必填):arXiv要删除的纸张ID

8. get_storage_stats

获取下载论文的存储统计信息。

参数: 无

退货:

  • 论文总数
  • 总存储大小
  • 格式化大小字符串

9. read_paper_content

从下载的论文中阅读并提取文本内容。

参数:

  • arxivId (string,必填):arXiv要读取的纸张ID

退货:

  • 摘录部分(摘要、引言、方法论、结果、讨论、结论、参考文献)
  • 全文长度

10. search_in_paper

在下载的论文中搜索文本。

参数:

  • arxivId (string,必填):arXiv要搜索的论文ID
  • searchTerm (字符串,必填):要搜索的文本
  • caseSensitive (boolean,可选):搜索是否应区分大小写(默认值:false)

退货:

  • 找到的匹配项总数
  • 按章节和上下文组织的比赛

11. get_analysis_prompts

获取可用的研究分析提示。

参数: 无

退货:

  • 带有ID、名称、描述和所需变量的可用提示列表

12. analyze_paper

为论文生成分析提示。

参数:

  • arxivId (string,必填):arXiv要分析的论文ID
  • promptId (字符串,必填):要使用的分析提示的ID

可用提示ID:

  • summary:综合论文摘要
  • key_findings:提取关键发现和结果
  • methodology_analysis:分析研究方法
  • literature_review:创建文献综述条目
  • research_gaps:确定研究差距和未来方向
  • technical_deep_dive:算法和实施细节的技术分析
  • comparison:与相关工作进行比较
  • practical_applications:识别真实世界的应用程序

例子:

{
  "arxivId": "2301.00001",
  "promptId": "summary"
}

arXiv分类

常见的arXiv类别代码包括:

计算机科学

  • cs.AI -人工智能
  • cs.LG -机器学习
  • cs.CV -计算机视觉与模式识别
  • cs.CL -计算与语言
  • cs.NE -神经与进化计算

物理学

  • physics.gen-ph -普通物理
  • physics.optics -光学
  • quant-ph -量子物理学

数学

  • math.CO -组合学
  • math.PR -概率
  • math.ST -统计学理论

有关完整列表,请访问 arXiv类别分类.

响应格式

所有工具都返回结构化的JSON响应,其中包含:

  • 纸张ID
  • 标题
  • 作者(有附属机构时)
  • 发布/更新日期
  • 分类
  • 摘要(搜索结果截断,特定论文检索完整)
  • 直接PDF链接
  • 附加元数据(DOI、期刊参考文献、评论)

速率限制

该服务器遵守arXiv的API使用指南,在请求之间实现3秒的延迟。这是自动处理的,并确保遵守arXiv的服务条款。

错误处理

该服务器包括全面的错误处理功能,用于:

  • 网络错误
  • 无效参数
  • 速率限制
  • arXiv API错误

错误以结构化格式返回,MCP客户端可以轻松解析。

发展

项目结构

arxiv-server/
├── src/
│   ├── index.ts              # Main server implementation
│   ├── types/                # TypeScript type definitions
│   ├── utils/                # Utility functions (logger, errors, file operations)
│   ├── storage/              # Storage management for downloaded papers
│   └── prompts/              # Research prompt management
├── build/                    # Compiled JavaScript files
├── storage/                  # Downloaded papers storage
├── prompts/                  # Prompt templates
├── logs/                     # Application logs
├── config/                   # Configuration files
├── docker/                   # Docker configuration
│   ├── Dockerfile
│   └── docker-compose.yml
├── package.json              # Project dependencies
├── tsconfig.json             # TypeScript configuration
├── .npmignore                # NPM publish ignore rules
└── README.md                 # This file

从源头构建

npm run build

以开发模式运行

npm run dev

许可证

MIT许可证-详见package.json。

贡献

欢迎投稿!请随时提交问题或拉取请求。

致谢

此服务器使用 arXiv API 访问科学论文。使用此服务器时,请遵守arXiv的服务条款和使用指南。