一个用于学术研究和知识积累的模型上下文协议(MCP)服务器,通过智能论文搜索、检索和元数据提取实现。
重要:此工具仅限个人学术用途。
本软件仅供教育和研究目的使用。用户应确保其使用符合以下规定:
该工具的开发者不支持或鼓励任何非法活动。用户应:
使用本软件即表示您理解并同意遵守所有关于访问学术内容的适用法律和法规。
🔍 多提供商搜索:跨14个学术来源进行综合搜索:
🧠 智能路由:基于以下条件的智能提供商优先级:
📥 强大的下载:多提供商回退机制,零字节保护和完整性验证
🔍 代码模式搜索:使用正则表达式在研究论文中搜索算法实现
📊 元数据提取:从PDF中批量处理提取文献信息
📚 参考文献生成:多种格式引用(BibTeX、APA、MLA、芝加哥、IEEE、哈佛)
🏷️ 智能分类:自动论文分类和组织
🤖 MCP集成:对Claude Desktop和Claude Code工作流的原生支持
⚡ 高性能:使用Rust构建,速度快且可靠
🔄 弹性架构:断路器、速率限制、自动重试和优雅错误处理
🛡️ 安全第一:仅HTTPS连接,证书验证和安全HTTP客户端工厂
🔧 守护进程模式:后台服务,带有健康监控和信号处理
从源码构建:
# 预备条件:Rust 1.70+(从 https://rustup.rs/ 安装)
git clone https://github.com/Ladvien/sci_hub_mcp.git
cd sci_hub_mcp
cargo build --release
# 二进制文件位于 ./target/release/rust-research-mcp
# 移动到永久位置
sudo cp target/release/rust-research-mcp /usr/local/bin/
使用Cargo:
cargo install rust-research-mcp
开发构建:
git clone https://github.com/Ladvien/sci_hub_mcp.git
cd sci_hub_mcp
cargo build --release
在您的Claude Desktop配置文件中添加以下内容:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"rust-research-mcp": {
"command": "/usr/local/bin/rust-research-mcp",
"args": [
"--download-dir", "~/downloads/research_papers",
"--log-level", "info"
],
"env": {
"RUST_LOG": "info"
}
}
}
}
对于生产部署,您可以作为守护进程运行服务器:
# 使用自定义配置启动守护进程
rust-research-mcp --daemon --pid-file /var/run/rust-research-mcp.pid --health-port 8090
# 检查守护进程状态
curl http://localhost:8090/health
# 停止守护进程(发送SIGTERM以优雅关闭)
kill -TERM $(cat /var/run/rust-research-mcp.pid)
配置完成后,您可以请求Claude执行以下操作:
rust-research-mcp [OPTIONS]
选项:
-v, --verbose 启用详细日志记录
-c, --config <PATH> 配置文件路径
-d, --daemon 作为守护进程运行
--pid-file <PATH> 守护进程模式下的PID文件路径
--health-port <PORT> 健康检查端口 [默认值:8090]
--port <PORT> 覆盖服务器端口
--host <HOST> 覆盖服务器主机
--log-level <LEVEL> 覆盖日志级别(trace, debug, info, warn, error)
--profile <PROFILE> 设置环境配置(development, production)
--download-dir <PATH> 覆盖下载目录路径
--generate-schema 为配置生成JSON模式
-h, --help 显示帮助信息
-V, --version 显示版本信息
RUST_RESEARCH_MCP_*:配置变量(详见config.toml中的完整列表)RUST_LOG:标准Rust日志配置(debug, info, warn, error, trace)跨14个不同学术来源搜索学术论文,具有智能提供商路由。
参数:
query(必需):搜索查询(DOI、标题、作者或关键词)search_type(可选):搜索类型(auto, doi, title, author, author_year)limit(可选):返回的最大结果数(默认:10)offset(可选):分页偏移量(默认:0)使用多提供商回退和完整性验证下载论文PDF。
参数:
doi(可选):要下载的论文的DOIurl(可选):直接下载URL(替代DOI)filename(可选):下载PDF的自定义文件名directory(可选):目标目录(未指定时使用默认下载目录)category(可选):组织类别(创建子目录)overwrite(可选):是否覆盖现有文件(默认:false)verify_integrity(可选):下载后验证文件完整性(默认:true)使用多种提取方法从PDF文件中提取文献元数据。
参数:
file_path(必需):PDF文件的路径extract_full_text(可选):同时提取全文内容(默认:false)extract_references(可选):提取参考文献列表(默认:false)使用正则表达式模式在已下载的研究论文中搜索代码模式。
参数:
pattern(必需):要搜索的正则表达式模式search_dir(可选):搜索的目录(默认为下载目录)file_extensions(可选):要搜索的文件扩展名(默认:[".pdf", ".txt"])max_results(可选):返回的最大结果数(默认:50)context_lines(可选):匹配周围的行数(默认:2)根据论文元数据生成多种引用格式的格式化引用。
参数:
papers(必需):论文元数据或DOI数组format(可选):引用格式(bibtex, apa, mla, chicago, ieee)(默认:bibtex)sort_by(可选):排序顺序(author, year, title)(默认:author)include_abstracts(可选):在输出中包括摘要(默认:false)根据内容和元数据自动分类研究论文。
参数:
papers(必需):论文元数据或文件路径数组category_scheme(可选):分类方案(subject, methodology, custom)custom_categories(可选):自定义分类定义confidence_threshold(可选):分类的最小置信度(默认:0.7)# 第一步:搜索特定主题的论文
"搜索最近关于Transformer架构的论文,限制20篇"
# 第二步:下载选定的论文
"下载DOI为10.1038/nature12373的论文到~/research/transformers/"
# 第三步:提取元数据以便组织
"从~/research/transformers/paper.pdf中提取元数据"
# 第四步:搜索代码实现
"在~/research/transformers/中搜索'class Transformer'模式"
# 第五步:生成参考文献
"从收集的论文中创建BibTeX参考文献"
# 在多个方面搜索主题
"搜索由作者'Yoshua Bengio'撰写的深度学习论文"
"搜索关于神经网络注意力机制的论文"
# 按类别整理论文
"按方法论对~/research/attention/中的论文进行分类"
# 生成全面的参考文献
"从所有分类的论文中生成IEEE格式的参考文献"
此MCP服务器特别增强了Claude Code工作流,具备高级研究能力:
在~/.config/knowledge_accumulator_mcp/config.toml创建配置文件:
# 服务器配置
[server]
port = 8080
host = "127.0.0.1"
graceful_shutdown_timeout_secs = 30
# 研究来源配置
[research_source]
provider_timeout_secs = 30
max_results_per_provider = 50
# 下载设置
[downloads]
directory = "~/downloads/research_papers"
max_concurrent_downloads = 5
max_file_size_mb = 100
verify_integrity = true
# 日志配置
[logging]
level = "info"
format = "pretty"
output = "stderr"
# 弹性设置
[circuit_breaker]
failure_threshold = 5
timeout_duration_secs = 60
half_open_max_calls = 3
[rate_limiting]
requests_per_second = 2
burst_size = 10
# 运行所有测试(并行执行)
cargo nextest run
# 运行特定测试
cargo nextest run TEST_NAME
# 运行带覆盖率报告
cargo tarpaulin --out Html
# 运行集成测试
cargo test --test comprehensive_e2e_scenarios
# 格式化代码
cargo fmt
# 运行lint(提交前必须通过)
cargo clippy -- -D warnings
# 安全审计
cargo audit
# 构建发布版本
cargo build --release
该项目遵循干净、模块化的架构,采用依赖注入:
src/
├── main.rs # CLI入口点和配置
├── lib.rs # 公共API和导出
├── server/ # MCP服务器实现
│ ├── handler.rs # MCP请求处理器
│ └── transport.rs # 传输层验证
├── tools/ # MCP工具实现
│ ├── search.rs # 多提供商搜索
│ ├── download.rs # 论文下载及回退
│ ├── metadata.rs # PDF元数据提取
│ ├── code_search.rs # 代码模式搜索
│ ├── bibliography.rs # 引用生成
│ └── categorize.rs # 论文分类
├── client/ # 研究来源集成
│ ├── meta_search.rs # 元搜索编排
│ ├── mirror.rs # 镜像管理
│ ├── rate_limiter.rs # 速率限制
│ └── providers/ # 学术来源实现
│ ├── arxiv.rs
│ ├── crossref.rs
│ ├── semantic_scholar.rs
│ ├── pubmed_central.rs
│ ├── openreview.rs
│ ├── openalex.rs
│ └── ... (总共14个提供商)
├── resilience/ # 断路器和重试逻辑
├── services/ # 业务逻辑服务
├── config/ # 配置管理
└── error.rs # 中央化错误处理
欢迎贡献!请阅读我们的贡献指南了解详情。
git checkout -b feature/amazing-feature)git commit -m '添加惊人的功能')git push origin feature/amazing-feature)问题:论文无法下载
问题:MCP服务器无法连接
claude_desktop_config.json中的二进制路径是绝对路径,并且二进制文件具有执行权限(chmod +x)。问题:内存使用过高
config.toml中配置合适的并发限制。降低资源有限系统上的max_concurrent_downloads。问题:提供商超时错误
provider_timeout_secs或检查到学术数据库的互联网连接。问题:断路器错误
守护进程模式日志:
journalctl -u rust-research-mcp(systemd)