使用说明
语义学者MCP服务器
一种模型上下文协议(MCP)服务器,提供对语义学者学术图API的访问。此服务器允许您搜索学术论文、作者,并获取有关引用和参考文献的详细信息。
特性
- 论文搜索:使用各种过滤器搜索学术论文
- 纸张详细信息:获取特定论文的详细信息
- 批量纸张检索:同时获取多篇论文的信息
- 作者搜索:按姓名查找作者
- 作者详细信息:获取详细的作者信息和他们的论文
- 引文分析:获取引用特定论文的论文
- 参考分析:获取特定论文引用的论文
- 引文内容:了解一篇论文引用另一篇论文的背景
- 文本片段:在学术论文中搜索文本片段
- PDF下载:下载具有正确文件名和元数据的开放获取PDF
- PDF可用性:下载前检查PDF是否可用
- 智能命名:PDF文件以纸张标题和年份作为文件名保存
- 元数据支持:在PDF文件属性中嵌入标题、作者和年份
安装
- 克隆此存储库:
git clone <repository-url>
cd SemanticScholarMCP
- 安装依赖项:
pip install -r requirements.txt
- (可选但推荐)设置语义学者API密钥:
export SEMANTIC_SCHOLAR_API_KEY="your-api-key-here"
备注:API密钥是可选的。服务器可以在没有它的情况下工作,但您将共享公共速率限制(所有未经身份验证的用户每秒1000个请求)。
- (可选)安装PDF元数据支持:
pip install -e ".[metadata]"
发展
设置开发环境
# Install with development dependencies
pip install -e ".[test,dev]"
运行测试
# Run all tests
make test
# Run only unit tests (fast, no API calls)
make test-unit
# Run integration tests (requires API key)
export SEMANTIC_SCHOLAR_API_KEY="your-api-key"
make test-integration
# Run performance tests
make test-performance
代码质量
# Run linting
make lint
# Format code
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使用您的实际用户名 - API密钥是 可选的 但建议用于专用速率限制
- 没有API密钥:共享公共速率限制(所有用户每秒1000个请求)
- 使用免费API密钥:为您的使用提供专用的更高费率限制
可用工具
纸张工具
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(必填):作者IDfields:要返回的以逗号分隔的字段列表
引用和参考工具
get_paper_citations
获取引用特定论文的论文。
参数:
paper_id(必填):获取引用的论文IDlimit:最大结果数(默认值:10,最大值:1000)offset:要跳过的结果数(默认值:0)fields:要返回的以逗号分隔的字段列表
get_paper_references
获取特定论文引用的论文。
参数:
paper_id(必填):获取参考文献的纸张IDlimit:最大结果数(默认值:10,最大值:1000)offset:要跳过的结果数(默认值:0)fields:要返回的以逗号分隔的字段列表
get_citation_context
了解一篇论文引用另一篇论文的背景。
参数:
paper_id(必填):引用论文的IDciting_paper_id(必填):引用论文的ID
文本搜索工具
search_snippets
在学术论文中搜索文本片段。
参数:
query(必填):搜索文本片段查询limit:最大结果数(默认值:10,最大值:100)offset:要跳过的结果数(默认值:0)
PDF工具
get_paper_pdf_info
查看论文的PDF可用性。
参数:
paper_id(必填):用于检查PDF可用性的纸质ID
download_paper_pdf
下载论文的PDF(如果可用),使用论文标题作为文件名并设置元数据。
参数:
paper_id(必填):下载PDF的纸张IDdownload_path:保存PDF的目录(默认:~/Downloads/semantic_scholar_passes)
特征:
- 使用论文标题作为文件名(例如,“医疗保健中的机器学习(2023).pdf”)
- 设置带有标题、作者和出版年份的PDF元数据
- 自动处理重复的文件名
- 创建有组织的文件夹结构
使用示例
搜索关于机器学习的论文
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")
检查PDF可用性
get_paper_pdf_info("10.1038/nature14539")
下载纸质PDF
download_paper_pdf("10.1038/nature14539")
这将把PDF保存为以下格式:
"Deep learning (2015).pdf"
嵌入元数据,包括标题、作者(LeCun,Y.、Bengio,Y.和Hinton,G.)和年份(2015)。
API费率限制
语义学者API有以下费率限制:
- 没有API密钥:所有未经身份验证的用户每秒共享1000个请求(在频繁使用时可能会受到限制)
- 使用免费的API密钥:为您的个人使用设定更高的费率限制
建议获取一个免费的API密钥以获得一致的性能。
故障排除
速率限制错误
如果您看到此错误:
Error: Rate limit exceeded. Please wait a moment and try again, or get an API key for higher limits.
这意味着你已经达到了共享的公共费率限制,或者API由于大量使用而被节流。
即时解决方案:
-
获取免费的API密钥 (推荐):
- 访问https://www.semanticscholar.org/product/api
- 注册一个免费帐户
- 获取API密钥
- 将其添加到您的Claude Desktop配置中:
"env": { "SEMANTIC_SCHOLAR_API_KEY": "your-actual-api-key-here" }- 重新启动克劳德桌面
-
等待并重试:可能暂时超过共享公共费率限制
-
使用较小的结果限制:减少
limit查询中的参数 -
间隔请求:避免快速连续地提出许多请求
配置问题
- 确保配置中的Python路径指向正确的虚拟环境
- 验证服务器脚本路径是否正确
- 检查虚拟环境中是否安装了所有依赖项
测试连接
您可以通过让Claude搜索一篇限制较小的论文来测试服务器是否正常工作:
search_papers("machine learning", limit=1)
错误处理
所有工具都包括全面的错误处理,如果请求失败或API返回错误,将返回描述性错误消息。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
贡献
欢迎投稿!请随时提交拉取请求。