About Arxiv Demo1
Arxiv Demo1 is an MCP server in the Documentation category.
Install
git clone https://github.com/lemonhall/arxiv_demo1This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Arxiv Demo1
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
arXiv AI论文爬虫工具
这是一个基于MCP(Message Channel Protocol)的arXiv论文爬虫工具,专门用于获取最新的人工智能(CS.AI)领域的论文标题,并支持论文的主题归类与趋势分析。
功能特点
- 自动抓取arXiv CS.AI分类下的最新论文标题
- 基于日期的智能缓存机制,避免重复抓取
- 详细的日志记录系统,便于问题诊断
- 支持论文主题分类和趋势分析
- MCP服务器接口,支持多种客户端调用
技术实现
项目结构
.
├── README.md
├── requirements.txt
├── arxiv_server.py # MCP服务器主程序
├── tools/ # 工具函数目录
│ ├── crawler.py # 爬虫实现
│ ├── paper_info.py # 文件信息检查
│ └── titles.py # 标题获取功能
└── chrome_data/ # 浏览器数据目录(不纳入版本控制)
安装依赖
pip install -r requirements.txt
使用方法
启动服务器
python arxiv_server.py
MCP服务器接口
服务器提供三个主要工具函数:
-
check_latest_paper_info_tool- 检查是否存在当天的论文数据
- 只在基础目录中搜索文件
- 返回数据状态信息,包括:
- 是否存在论文数据
- 数据是否为当天的
- 文件修改时间
- 论文数量等信息
-
crawl_latest_papers_tool- 启动浏览器抓取最新论文
- 自动保存抓取结果到文件
- 返回抓取状态和结果信息
-
get_latest_titles_tool- 从本地文件读取已抓取的论文标题
- 返回所有标题数据
- 智能判断数据时效性
推荐使用流程
-
首先调用
check_latest_paper_info_tool- 如果返回
is_current=true,说明已有当天数据 - 如果返回
is_current=false,需要抓取新数据
- 如果返回
-
根据检查结果:
- 如果需要新数据,调用
crawl_latest_papers_tool - 如果已有当天数据,直接调用
get_latest_titles_tool
- 如果需要新数据,调用
调试支持
- 服务器运行时会自动创建日志文件(如
arxiv_server0.log) - 日志记录包括:
- 服务器启动时间
- 工作目录信息
- 文件搜索结果
- 错误信息等
典型使用案例
获取并分析最新论文趋势
这是一个典型的使用场景:获取最新的论文,根据主题归类,统计每个主题下的论文数量,分析研究趋势。
- 首先检查是否有当天数据
- 如果没有,抓取最新数据
- 获取所有论文标题
- 根据关键词对论文进行主题分类
- 统计每个主题的论文数量
- 分析研究热点和趋势变化
客户端配置示例
在Cherry Studio或其他MCP客户端中,可以使用如下配置:
{
"arxiv_crawler": {
"name": "arxiv_crawler",
"description": "抓取最新的arxiv关于人工智能的论文标题,存入文件;并可随时读取",
"isActive": true,
"command": "python",
"args": [
"E:/development/arxiv_demo1/arxiv_server.py"
],
"env": {
"PYTHONIOENCODING": "utf-8"
}
}
}
提示词示例
获取最新论文并分析趋势的提示词示例:
获取一下最新的论文,并且根据主题归类后,并统计每个主题下的论文数量,判断一下简要的趋势
注意事项
- 文件命名格式:
arxiv_AI_YYYY-MM-DD_(数量)entries.txt - 服务器会在基础目录中查找文件,不再进行递归搜索
- 所有操作都会记录到日志文件中,便于问题排查
- 日志文件和chrome_data目录不纳入版本控制
错误处理
-
如果遇到文件无法找到的问题:
- 检查日志文件中的搜索路径信息
- 确认文件命名是否符合规范
- 验证文件权限是否正确
-
如果需要强制更新数据:
- 直接调用
crawl_latest_papers_tool - 新数据会自动覆盖同日期的旧文件
- 直接调用
调用链
调用链图 (基于日志时间顺序):
2025-04-02 19:42:54.421
├─ [DEBUG] 初始化基础目录和设置
│ ├─ Base directory: E:\development\arxiv_demo1
│ └─ Current working directory: D:\Program Files\Cherry Studio
2025-04-02 19:42:54.423
├─ [DEBUG] 初始化FastMCP服务器
│ ├─ 注册ListToolsRequest处理器
│ ├─ 注册CallToolRequest处理器
│ ├─ 注册ListResourcesRequest处理器
│ ├─ 注册ReadResourceRequest处理器
│ ├─ 注册PromptListRequest处理器
│ └─ 注册GetPromptRequest处理器
2025-04-02 19:42:54.441
├─ [DEBUG] 收到InitializedNotification消息
2025-04-02 19:42:54.442
├─ [INFO] 处理ListToolsRequest请求
│ └─ [DEBUG] 分发并响应ListToolsRequest
2025-04-02 19:42:54.631
├─ [INFO] 处理PingRequest请求
│ └─ [DEBUG] 分发并响应PingRequest
2025-04-02 19:42:54.729
├─ [INFO] 处理PingRequest请求
│ └─ [DEBUG] 分发并响应PingRequest
2025-04-02 19:43:02.128
├─ [INFO] 处理PingRequest请求
│ └─ [DEBUG] 分发并响应PingRequest
2025-04-02 19:43:03.874
├─ [INFO] 处理PingRequest请求
│ └─ [DEBUG] 分发并响应PingRequest
2025-04-02 19:43:03.880
├─ [INFO] 处理CallToolRequest请求
│ └─ [DEBUG] 分发CallToolRequest
│ └─ [DEBUG] tools.paper_info执行
│ ├─ 检查论文信息
│ ├─ 验证文件路径
│ ├─ 分析arxiv_AI_2025-04-02_(140entries).txt
│ └─ 返回结果
2025-04-02 19:43:05.743
├─ [INFO] 处理PingRequest请求
│ └─ [DEBUG] 分发并响应PingRequest
2025-04-02 19:43:05.745
├─ [INFO] 处理CallToolRequest请求
│ └─ [DEBUG] 分发CallToolRequest
│ └─ [DEBUG] tools.titles执行
│ ├─ 获取最新标题
│ └─ 分析arxiv_AI_2025-04-02_(140entries).txt
mcp服务器配置之:npx
这些MCP服务器配置中使用的npx命令和包名(如@amap/amap-maps-mcp-server)实际上指向的是npm(Node Package Manager)注册表中的公开包,而非直接使用GitHub仓库地址。以下是关键点的解释:
1. 为什么用npx?
npx是Node.js自带的工具,主要用于直接运行npm包中的命令,无需先全局安装包。- 如果本地未安装目标包,
npx会自动从npm仓库下载并临时执行(完成后可清理缓存),非常适合快速运行一次性或工具类脚本。
2. -y参数的作用
-y是npx的选项,表示自动确认安装(等同于--yes)。- 当包未安装时,
npx默认会提示“是否安装?”,加-y可跳过确认直接安装。
3. 包名的含义(如@amap/amap-maps-mcp-server)
@scope/package-name:这是npm的命名规范,@scope表示包所属的组织(如@amap是高德地图的官方组织),package-name是具体包名。- 这些包本质上是发布在npm注册表上的公开模块,类似于Python的PyPI或Rust的Crates.io。虽然它们的源代码可能托管在GitHub(或其他平台),但用户通过
npm或npx安装时,实际从npm服务器下载编译后的代码。
4. 与GitHub的区别
- 直接使用GitHub仓库:若包未发布到npm,通常需要通过类似
npx github:user/repo的语法指定GitHub地址。 - 当前配置的包:如
@amap/amap-maps-mcp-server、@playwright/mcp等,均为已发布到npm的官方包,开发者无需关心源码位置,只需通过包名调用。
5. 配置示例解析(以高德地图MCP服务器为例)
"command": "npx",
"args": [
"-y",
"@amap/amap-maps-mcp-server"
]
- 等效命令行:
npx -y @amap/amap-maps-mcp-server - 行为:自动安装并运行
@amap/amap-maps-mcp-server包,无需手动操作。
6. 为什么看不到.js文件路径?
- npm包的入口文件已在
package.json中定义。通过npx运行时,会自动找到入口脚本(如bin字段指定的文件),用户无需关心具体路径。
总结
这些配置利用了npm生态的便捷性:通过npx直接调用远程包,省去手动下载、安装的步骤。所有包均来自npm官方仓库,而非直接关联GitHub。若包未发布到npm但托管在GitHub,需显式指定仓库地址(如npx github:user/repo)。
uvx风格的mcp-server
在 Cherry Studio 中发布自定义的 Python MCP 服务器需遵循标准化流程。首先需通过 create-mcp-server 工具生成符合 MCP 协议规范的项目框架,该工具会自动创建必要的目录结构和配置文件,确保服务接口与协议兼容6。建议使用 uvx 打包工具进行依赖管理和构建,该工具能显著提升 Python 依赖解析效率,生成符合 PEP 621 标准的 pyproject.toml 文件46。
发布至 PyPI 时需注意三点技术细节:1. 在 setup.py 中明确声明 entry_points,将主模块注册为控制台脚本,使安装后可直接通过 mcp-server- 命令调用5;2. 添加 mcp-server 分类标识符,便于 Cherry Studio 自动识别服务类型5;3. 对需要访问本地系统资源的服务类型(如文件操作类),必须在元数据中声明 requires-system-access 字段3。
用户安装后,需在 Cherry Studio 的 MCP 管理界面配置以下参数:服务类型选择 STDIO,命令格式应包含完整的模块调用路径,例如 uvx mcp-server- 或 python -m your_module13。若涉及环境变量配置(如 API 密钥),需在高级设置中声明 env 字段,并通过 export 指令指导用户配置系统环境变量3。
建议在文档中提供标准化测试用例,推荐使用 @modelcontextprotocol/inspector 工具包进行协议兼容性验证,该工具可检查服务响应格式是否符合 MCP 协议的 JSON Schema 规范56。对于需要持久化运行的服务,应提供 systemd 或 launchd 的守护进程配置文件模板9。
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.