arXiv MCP服务器
主要特点:
- 将arXiv论文从LaTeX转换为Markdown
- 从URL中提取arXiv ID
- 从纸张ID生成arXiv URL
- 集中式速率限制 (所有工具每秒3个请求)
工具
此MCP服务器公开以下工具(均受速率限制):
1. convert_arxiv_to_markdown
通过下载并处理其LaTeX源代码,将arXiv论文转换为Markdown格式。
参数:
arxiv_url(string):arXiv URL(例如。,https://arxiv.org/abs/1706.03762)
退货:
markdown(string):转换后的markdown内容title(字符串,可选):元数据中的论文标题authors(列表,可选):元数据中的论文作者abstract(字符串,可选):元数据中的论文摘要url(string):原始arXiv URL
2. extract_arxiv_id
从URL中提取arXiv纸张ID。
参数:
arxiv_url(string):任何格式的arXiv URL
退货:
- 提取的arXiv ID(例如。,
"1706.03762")
3. build_arxiv_urls
从纸张ID生成各种arXiv URL。
参数:
arxiv_id(string):arXiv论文ID
退货:
- 词典与
abstract,pdf,以及source网址
安装
此项目使用 紫外线 用于快速、可靠的Python包管理。
安装uv(如果尚未安装):
curl -LsSf https://astral.sh/uv/install.sh | sh安装项目依赖关系:
uv sync就是这样!uv将自动:
- 安装正确的Python版本(3.11)
- 创建虚拟环境
- 安装所有依赖项,包括开发依赖项
用法
运行服务器
开发模式(带自动重新加载和检查器):
uv run fastmcp dev inspector server.py这将以以下方式启动服务器:
- 保存更改时自动重新加载
- 浏览器中的MCP检查器用于交互式测试
- 更好的调试输出
生产方式:
uv run python server.py使用make:
make run与Claude Desktop一起使用
将此服务器添加到您的Claude Desktop配置中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"arxiv": {
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/arxiv-mcp-ng",
"arxiv-mcp-ng"
]
}
}
}替换 /absolute/path/to/arxiv-mcp-ng 此目录的实际路径。
更新配置后,重新启动Claude Desktop以使更改生效。
与MCP客户端一起使用
完整的客户端示例见 example_client.py。运行它以查看服务器的运行情况:
python example_client.py这将:
- 连接到MCP服务器
- 列出所有可用工具
- 将“注意力就是你所需要的一切”的论文转换为Markdown
- 从URL中提取arXiv ID
- 从arXiv ID构建URL
您还可以通过编程方式使用FastMCP客户端:
from fastmcp.client import Client
import asyncio
async def main():
async with Client("python server.py") as client:
# Convert a paper
result = await client.call_tool(
"convert_arxiv_to_markdown",
{"arxiv_url": "https://arxiv.org/abs/1706.03762"}
)
paper_data = result.data
with open("paper.md", "w") as f:
f.write(paper_data['markdown'])
asyncio.run(main())速率限制
此服务器实现 集中速率限制 为了防止arXiv服务器不堪重负并确保公平使用:
- 限制: 所有工具每秒3个请求
- 范围: 服务器范围(适用于所有工具调用的组合)
- 实施: 使用带有async/await的滑动窗口算法
- 行为: 当超过限制时,请求会自动排队并延迟
速率限制对客户端是透明的——您的请求将在必要时等待。您将看到日志消息,指示何时启用速率限制:
Rate limit reached (3 requests/1.0s). Waiting 0.45 seconds...三种工具(convert_arxiv_to_markdown, extract_arxiv_id, build_arxiv_urls)共享相同的速率限制池,确保无论调用哪些工具,服务器每秒都不会超过3个请求。
局限性
基于arxiv2md.org API:
- 没有LaTeX源的论文无法转换(一些旧论文只有PDF)
- 大型论文可能需要大量的处理时间(最多2分钟)
- 需要互联网连接才能访问API
需求
- Python>=3.11
- fastmcp>=3.0.0
- httpx>=0.27.0
- 媒染剂>=2.0.0
许可证
麻省理工学院
