语义学者MCP服务器是一个模型上下文协议(MCP)服务器,它提供对语义学者学术图谱API的访问。借助该服务器,你可以搜索学术论文、作者,还能获取有关引用和参考文献的详细信息。
此MCP服务器能让你轻松访问语义学者学术图谱API,搜索学术资源并获取详细信息。你可按以下步骤进行安装和配置。
git clone
cd SemanticScholarMCP
pip install -r requirements.txt
export SEMANTIC_SCHOLAR_API_KEY="your-api-key-here"
注意:API密钥是可选的。即使不设置,服务器也能正常工作,但你将共享公共速率限制(所有未认证用户每秒最多1000个请求)。
pip install -e ".[metadata]"
# 安装开发依赖项
pip install -e ".[test,dev]"
# 运行所有测试
make test
# 仅运行单元测试(快速,无API调用)
make test-unit
# 运行集成测试(需要API密钥)
export SEMANTIC_SCHOLAR_API_KEY="your-api-key"
make test-integration
# 运行性能测试
make test-performance
# 运行代码检查
make lint
# 格式化代码
make format
将此服务器添加到你的MCP客户端配置中:
{
"mcpServers": {
"SemanticScholarMCP": {
"command": "/Users/your-username/Desktop/SemanticScholarMCP/venv/bin/python",
"args": ["/Users/your-username/Desktop/SemanticScholarMCP/src/semantic_scholar_mcp/server.py"],
"env": {
"SEMANTIC_SCHOLAR_API_KEY": "your-actual-api-key-here"
}
}
}
}
无API密钥的配置(共享公共速率限制):
{
"mcpServers": {
"SemanticScholarMCP": {
"command": "/Users/your-username/Desktop/SemanticScholarMCP/venv/bin/python",
"args": ["/Users/your-username/Desktop/SemanticScholarMCP/src/semantic_scholar_mcp/server.py"]
}
}
}
重要提示:
your-username
替换为你实际的用户名。search_papers
使用各种过滤器搜索学术论文。
参数:
query
(必需):搜索查询字符串。limit
:最大结果数(默认:10,最大:100)。offset
:跳过的结果数(默认:0)。fields
:要返回的字段列表,以逗号分隔。publication_types
:按出版类型过滤。open_access_pdf
:过滤具有开放获取PDF的论文。min_citation_count
:最小引用次数。year
:出版年份或年份范围(例如,"2020 - 2023")。venue
:出版场所。get_paper
获取特定论文的详细信息。
参数:
paper_id
(必需):论文ID(语义学者ID、DOI、arXiv ID等)。fields
:要返回的字段列表,以逗号分隔。get_paper_batch
在单个请求中获取多篇论文的信息。
参数:
paper_ids
(必需):论文ID列表,以逗号分隔。fields
:要返回的字段列表,以逗号分隔。search_authors
按姓名搜索作者。
参数:
query
(必需):作者姓名或搜索查询。limit
:最大结果数(默认:10,最大:1000)。offset
:跳过的结果数(默认:0)。fields
:要返回的字段列表,以逗号分隔。get_author
获取特定作者的详细信息。
参数:
author_id
(必需):作者ID。fields
:要返回的字段列表,以逗号分隔。get_paper_citations
获取引用特定论文的其他论文。
参数:
paper_id
(必需):要获取引用的论文ID。limit
:最大结果数(默认:10,最大:1000)。offset
:跳过的结果数(默认:0)。fields
:要返回的字段列表,以逗号分隔。get_paper_references
获取特定论文引用的其他论文。
参数:
paper_id
(必需):要获取参考文献的论文ID。limit
:最大结果数(默认:10,最大:1000)。offset
:跳过的结果数(默认:0)。fields
:要返回的字段列表,以逗号分隔。get_citation_context
获取一篇论文引用另一篇论文的上下文。
参数:
paper_id
(必需):被引用论文的ID。citing_paper_id
(必需):引用论文的ID。search_snippets
在学术论文中搜索文本片段。
参数:
query
(必需):文本片段搜索查询。limit
:最大结果数(默认:10,最大:100)。offset
:跳过的结果数(默认:0)。get_paper_pdf_info
检查论文的PDF可用性。
参数:
paper_id
(必需):要检查PDF可用性的论文ID。download_paper_pdf
如果论文的PDF可用,则下载该PDF,使用论文标题作为文件名并设置元数据。
参数:
paper_id
(必需):要下载PDF的论文ID。download_path
:保存PDF的目录(默认:~/Downloads/semantic_scholar_papers)。特性:
search_papers("machine learning", limit=5, year="2023")
get_paper("10.1038/nature14539")
get_paper_citations("10.1038/nature14539", limit=10)
search_authors("Geoffrey Hinton")
get_citation_context("paper-id-1", "paper-id-2")
get_paper_pdf_info("10.1038/nature14539")
download_paper_pdf("10.1038/nature14539")
这将保存PDF文件,文件名类似:
"Deep learning (2015).pdf"
文件中嵌入了包括标题、作者(LeCun, Y., Bengio, Y., Hinton, G.)和年份(2015)的元数据。
语义学者API有以下速率限制:
为确保性能稳定,建议获取免费API密钥。
如果你看到以下错误:
Error: Rate limit exceeded. Please wait a moment and try again, or get an API key for higher limits.
这意味着你已达到共享公共速率限制,或者由于高流量API受到限制。
即时解决方案:
获取免费API密钥(推荐):
"env": {
"SEMANTIC_SCHOLAR_API_KEY": "your-actual-api-key-here"
}
等待并重试:共享公共速率限制可能只是暂时超出。
使用较小的结果限制:减少查询中的 limit
参数。
分散请求:避免连续快速发出多个请求。
你可以通过让Claude以较小的限制搜索单篇论文来测试服务器是否正常工作:
search_papers("machine learning", limit=1)
所有工具都包含全面的错误处理,如果请求失败或API返回错误,将返回详细的错误消息。
本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。
欢迎贡献代码!请随时提交拉取请求。