](https://mseep.ai/app/zongmin-yu-semantic-scholar-fastmcp-mcp-server)
语义学者MCP服务器
](https://smithery.ai/server/semantic-scholar-fastmcp-mcp-server)
语义学者API的FastMCP服务器实现,提供对学术论文数据、作者信息和引用网络的全面访问。
正在寻找Claude Code技能? 结账 语义学者技能 --下一代工具包,将此MCP服务器与现成的Claude Code技能捆绑在一起(/expand-references,/trace-citations,/paper-triage)以及Python工作流引擎。
项目结构
该项目已被重构为模块化结构,以提高可维护性:
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.10+
- API密钥的环境变量(可选)
安装
快速安装(PyPI)
pip install semantic-scholar-fastmcp或者直接与 uvx:
uvx semantic-scholar-fastmcpMCP客户端配置
对于支持以下功能的任何MCP客户端 uvx:
{
"mcpServers": {
"semantic-scholar": {
"command": "uvx",
"args": ["semantic-scholar-fastmcp"],
"env": {
"SEMANTIC_SCHOLAR_API_KEY": "your-api-key-here"
}
}
}
}通过史密瑟里安装
通过以下方式自动安装克劳德桌面语义学者MCP服务器 史密瑟里:
npx -y @smithery/cli install semantic-scholar-fastmcp-mcp-server --client claude手动安装
- 克隆存储库:
git clone https://github.com/YUZongmin/semantic-scholar-fastmcp-mcp-server.git
cd semantic-scholar-fastmcp-mcp-server- 在开发模式下安装:
pip install -e ".[dev]"- 运行服务器:
semantic-scholar-mcp-serverAPI密钥(可选)
要获得更高的速率限制和更好的性能:
- 从获取API密钥 语义学者API
- 将其添加到您的FastMCP配置中,如上文所示
env部分
如果未提供API密钥,则服务器将使用具有较低速率限制的未经身份验证的访问。
配置
贡献
看 CONTRIBUTING.md.
环境变量
SEMANTIC_SCHOLAR_API_KEY:您的语义学者API密钥(可选)
- 从以下位置获取密钥 语义学者API - 如果没有提供,服务器将使用未经身份验证的访问
HTTP网桥(内置)
此存储库包括一个小型HTTP网桥(semantic_scholar.bridge)那个 公开了用于常见工作流的最小REST API。
默认侦听端口: 8000.
通过环境变量配置网桥:
SEMANTIC_SCHOLAR_ENABLE_HTTP_BRIDGE(默认值:1)--设置为0禁用SEMANTIC_SCHOLAR_HTTP_BRIDGE_HOST(默认值:0.0.0.0)SEMANTIC_SCHOLAR_HTTP_BRIDGE_PORT(默认值:8000)
可用端点:
GET /v1/paper/search?q=...--论文搜索(参数:fields,offset,limit)GET /v1/paper/{paper_id}--纸张详细信息(参数:fields)POST /v1/paper/batch--批处理纸张详细信息(JSON:{ "ids": [ ... ] })GET /v1/author/search?q=...--作者搜索(参数:fields,offset,limit)GET /v1/author/{author_id}--作者详细信息(参数:fields)POST /v1/author/batch--批处理作者详细信息(JSON:{ "ids": [ ... ] })GET /v1/recommendations?paper_id=...--论文建议
网桥重用包的HTTP实用程序(semantic_scholar.utils.http) 因此速率限制、API密钥处理和连接池与 MCP工具。
例子:
curl 'http://localhost:8000/v1/paper/search?q=machine+learning&limit=5'速率限制
服务器会自动调整到适当的速率限制:
使用API密钥:
- 搜索、批处理和推荐端点:每秒1个请求
- 其他端点:每秒10个请求
没有API密钥:
- 所有端点:每5分钟100个请求
- 请求超时时间更长
注:费率限制可能会发生变化。看 语义学者API 获取最新信息。
语义学者API术语
该项目使用 语义学者学术图谱API,由艾伦人工智能研究所(AI2)提供。 请审阅 API许可协议 使用前。
可用的MCP工具
服务器目前公开了16个MCP工具。
注:所有工具均与官方一致 语义学者API文档。有关详细的现场规范和最新更新,请参阅官方文件。
论文搜索工具
paper_relevance_search:使用相关性排名搜索论文
- 支持全面的查询参数,包括年份范围和引用计数过滤器 - 返回带有可自定义字段的分页结果
paper_bulk_search:具有排序选项的批量纸张搜索
- 类似于相关性搜索,但针对更大的结果集进行了优化 - 支持按引用次数、发表日期等排序。
paper_title_search:按完全匹配的标题查找论文
- 当你知道标题时,可以用来查找特定的论文 - 返回具有可自定义字段的详细纸张信息
paper_details:获取特定论文的全面详细信息
- 接受各种纸张ID格式(S2 ID、DOI、ArXiv等) - 返回具有嵌套字段支持的详细纸张元数据
paper_batch_details:高效检索多篇论文的详细信息
- 每次请求最多可接受1000个纸质ID - 支持与单张纸详细信息相同的ID格式和字段
paper_authors:获取与特定论文相关的作者
- 返回论文的分页作者结果 - 支持使用偏移和限制控件自定义作者字段
paper_autocomplete:获取部分查询的论文标题建议
- 返回交互式搜索完成所需的最小纸张元数据 - 将过长的查询截断为API支持的长度
snippet_search:在论文片段和摘录中搜索
- 从标题、摘要和正文中返回相关的文本匹配 - 支持论文ID、作者、地点、年份和研究领域的过滤器
引用工具
paper_citations:获取引用特定论文的论文
- 返回引用论文的分页列表 - 包括引用上下文(如果可用) - 支持字段自定义和排序
paper_references:获取特定论文引用的论文
- 返回引用论文的分页列表 - 包括可用的参考上下文 - 支持字段自定义和排序
作者工具
author_search:按姓名搜索作者
- 返回带有可自定义字段的分页结果 - 包括从属关系和出版物数量
author_details:获取作者的详细信息
- 返回完整的作者元数据 - 包括h指数和引用计数等指标
author_papers:获取作者撰写的论文
- 返回作者出版物的分页列表 - 支持字段自定义和排序
author_batch_details:获取多位作者的详细信息
- 为多达1000名作者高效检索信息 - 返回与单作者详细信息相同的字段
推荐工具
get_paper_recommendations_single:根据一篇论文获得建议
- 根据内容和引用模式返回类似的论文 - 支持推荐论文的字段自定义
get_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 get_paper_recommendations_single(
context,
paper_id="649def34f8be52c8b66281af98ae884c09aef38b",
fields="title,authors,year"
)
# Multi-paper recommendation
recommendations = await get_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
}
}
}