Semantic Scholar MCP Server

by YUZongmin
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Supports searching for papers using ArXiv IDs as part of the paper identification system, allowing retrieval of paper details via ArXiv identifiers.

  • Supports DOI-based paper identification, allowing users to retrieve paper details using Digital Object Identifiers.

  • Provides comprehensive access to Semantic Scholar API for academic paper data, author information, and citation networks. Features include paper search, citation analysis, author information retrieval, and paper recommendations.

语义学者 MCP 服务器

针对 Semantic Scholar API 的 FastMCP 服务器实现,提供对学术论文数据、作者信息和引用网络的全面访问。

项目结构

该项目已重构为模块化结构,以提高可维护性:

semantic-scholar-server/ ├── semantic_scholar/ # Main package │ ├── __init__.py # Package initialization │ ├── server.py # Server setup and main functionality │ ├── mcp.py # Centralized FastMCP instance definition │ ├── config.py # Configuration classes │ ├── utils/ # Utility modules │ │ ├── __init__.py │ │ ├── errors.py # Error handling │ │ └── http.py # HTTP client and rate limiting │ ├── api/ # API endpoints │ ├── __init__.py │ ├── papers.py # Paper-related endpoints │ ├── authors.py # Author-related endpoints │ └── recommendations.py # Recommendation endpoints ├── run.py # Entry point script

此结构:

  • 将关注点划分为逻辑模块
  • 使代码库更易于理解和维护
  • 允许更好的测试和未来的扩展
  • 将相关功能分组在一起
  • 集中 FastMCP 实例以避免循环导入

特征

  • 论文检索与发现
    • 具有高级过滤功能的全文搜索
    • 基于标题的论文匹配
    • 论文推荐(单篇和多篇论文)
    • 批量检索论文详情
    • 具有排名策略的高级搜索
  • 引文分析
    • 引文网络探索
    • 参考追踪
    • 引用上下文和影响分析
  • 作者信息
    • 作者搜索和个人资料详情
    • 出版历史
    • 批量检索作者详细信息
  • 高级功能
    • 具有多种排名策略的复杂搜索
    • 可自定义的字段选择
    • 高效的批量操作
    • 速率限制合规性
    • 支持经过身份验证和未经身份验证的访问
    • 优雅关机和错误处理
    • 连接池和资源管理

系统要求

  • Python 3.8+
  • FastMCP 框架
  • API 密钥的环境变量(可选)

安装

通过 Smithery 安装

要通过Smithery自动为 Claude Desktop 安装 Semantic Scholar MCP Server:

npx -y @smithery/cli install semantic-scholar-fastmcp-mcp-server --client claude

手动安装

  1. 克隆存储库:
git clone https://github.com/YUZongmin/semantic-scholar-fastmcp-mcp-server.git cd semantic-scholar-server
  1. 安装 FastMCP 和其他依赖项: https://github.com/jlowin/fastmcp
  2. 配置 FastMCP:

对于 Claude Desktop 用户,您需要在 FastMCP 配置文件中配置服务器。将以下内容添加到您的配置中(通常在~/.config/claude-desktop/config.json中):

{ "mcps": { "Semantic Scholar Server": { "command": "/path/to/your/venv/bin/fastmcp", "args": [ "run", "/path/to/your/semantic-scholar-server/run.py" ], "env": { "SEMANTIC_SCHOLAR_API_KEY": "your-api-key-here" # Optional } } } }

请确保:

  • /path/to/your/venv/bin/fastmcp替换为 FastMCP 安装的实际路径
  • /path/to/your/semantic-scholar-server/run.py替换为机器上 run.py 的实际路径
  • 如果您有 Semantic Scholar API 密钥,请将其添加到env部分。如果没有,您可以完全删除env部分。
  1. 开始使用服务器:

现在,您的 Claude Desktop 实例即可使用该服务器。无需手动运行任何命令 - Claude 会在需要时自动启动并管理服务器进程。

API 密钥(可选)

为了获得更高的速率限制和更好的性能:

  1. Semantic Scholar API获取 API 密钥
  2. 将其添加到 FastMCP 配置中,如上图所示,在env部分

如果未提供 API 密钥,服务器将使用速率限制较低的未经身份验证的访问。

配置

环境变量

  • SEMANTIC_SCHOLAR_API_KEY :您的 Semantic Scholar API 密钥(可选)

速率限制

服务器自动调整适当的速率限制:

使用 API 密钥

  • 搜索、批处理和推荐端点:每秒 1 个请求
  • 其他端点:每秒 10 个请求

没有 API 密钥

  • 所有端点:每 5 分钟 100 个请求
  • 请求超时时间更长

可用的 MCP 工具

注意:所有工具均与Semantic Scholar API 官方文档保持一致。请参阅官方文档,了解详细的字段规范和最新更新。

论文搜索工具

  • paper_relevance_search :使用相关性排名搜索论文
    • 支持全面的查询参数,包括年份范围和引用计数过滤器
    • 返回具有可自定义字段的分页结果
  • paper_bulk_search :批量论文搜索,带有排序选项
    • 与相关性搜索类似,但针对更大的结果集进行了优化
    • 支持按引用次数、出版日期等排序。
  • paper_title_search :按精确标题匹配查找论文
    • 当你知道标题时,有助于查找特定论文
    • 返回具有可自定义字段的详细论文信息
  • paper_details :获取有关特定论文的全面详细信息
    • 接受各种论文 ID 格式(S2 ID、DOI、ArXiv 等)
    • 返回带有嵌套字段支持的详细论文元数据
  • paper_batch_details :高效检索多篇论文的详细信息
    • 每个请求最多接受 1000 个论文 ID
    • 支持与单张纸质明细相同的ID格式和字段

引用工具

  • paper_citations :获取引用特定论文的论文
    • 返回引用论文的分页列表
    • 包含可用的引用上下文
    • 支持字段自定义和排序
  • paper_references :获取特定论文引用的论文
    • 返回参考论文的分页列表
    • 包含参考上下文(如有)
    • 支持字段自定义和排序

作者工具

  • author_search :按姓名搜索作者
    • 返回具有可自定义字段的分页结果
    • 包括附属机构和出版物数量
  • author_details :获取作者的详细信息
    • 返回全面的作者元数据
    • 包括 H 指数和引用计数等指标
  • author_papers :获取作者撰写的论文
    • 返回作者出版物的分页列表
    • 支持字段自定义和排序
  • author_batch_details :获取多个作者的详细信息
    • 高效检索多达 1000 位作者的信息
    • 返回与单个作者详细信息相同的字段

推荐工具

  • paper_recommendations_single :根据一篇论文获取建议
    • 根据内容和引用模式返回类似的论文
    • 支持推荐论文字段自定义
  • paper_recommendations_multi :根据多篇论文获取推荐
    • 接受正反例论文
    • 返回与正面例子相似、与负面例子不相似的论文

使用示例

基本论文搜索

results = await paper_relevance_search( context, query="machine learning", year="2020-2024", min_citation_count=50, fields=["title", "abstract", "authors"] )

论文推荐

# Single paper recommendation recommendations = await paper_recommendations_single( context, paper_id="649def34f8be52c8b66281af98ae884c09aef38b", fields="title,authors,year" ) # Multi-paper recommendation recommendations = await paper_recommendations_multi( context, positive_paper_ids=["649def34f8be52c8b66281af98ae884c09aef38b", "ARXIV:2106.15928"], negative_paper_ids=["ArXiv:1805.02262"], fields="title,abstract,authors" )

批量操作

# Get details for multiple papers papers = await paper_batch_details( context, paper_ids=["649def34f8be52c8b66281af98ae884c09aef38b", "ARXIV:2106.15928"], fields="title,authors,year,citations" ) # Get details for multiple authors authors = await author_batch_details( context, author_ids=["1741101", "1780531"], fields="name,hIndex,citationCount,paperCount" )

错误处理

服务器提供标准化的错误响应:

{ "error": { "type": "error_type", # rate_limit, api_error, validation, timeout "message": "Error description", "details": { # Additional context "authenticated": true/false # Indicates if request was authenticated } } }
ID: y4w83jn668