Token导航 LogoToken导航TokenDH.com
Scientific Papers MCP logo
搜索检索stdio官方级别未说明来源级核验

Scientific Papers MCP

MCP Server

一个强大的科学论文语义搜索服务,支持Zotero库集成、增量索引和交叉编码器重排名,适用于研究人员和AI助手快速检索学术文献。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
搜索PythonClaude学术研究Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

tofunori

提供方

tofunori

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

MCP服务器科学论文

一个强大的模型上下文协议(MCP)服务器,用于在科学论文中进行智能语义搜索 Zotero库集成, 增量索引,以及 交叉编码器重新排序.

🎯 这个MCP做什么

MCP科学论文 使Claude和其他人工智能助手能够搜索您的 Zotero图书馆 受Zotero MCP实现启发的高级功能:

  • Zotero图书馆集成:自动为本地Zotero存储建立索引
  • 增量索引:仅处理新的/修改的文档(更新速度快90倍)
  • 智能重复数据删除:按DOI和标题匹配删除重复项
  • 交叉编码器重新排序:元数据增强,精度提高35%
  • 丰富元数据提取:DOI、摘要、关键字、作者、出版信息
  • 混合搜索:结合语义+关键字搜索以获得最佳结果

🚀 主要特点

特性描述性能
增量索引跳过未更改的文档45分钟→ 30秒用于更新
智能重复数据删除DOI+模糊标题匹配索引缩小15-30%
交叉编码器重新排序用marco重新排名前50名准确率提高35%
元数据增强标题2倍,摘要1.5倍权重更好的引用查询
全文提取支持OCR回退的PDF支持扫描纸张
Zotero集成自动扫描本地存储不需要API密钥

📦 安装

# Clone repository
git clone 
cd scientific-papers-mcp

# Install dependencies
pip install -e .

# Verify installation
python index_zotero_library.py --help

🔧 配置

MCP使用 Voyage AI 默认情况下,为了获得最佳性能。编辑 .env 文件:

# Paths (required)
DOCUMENTS_PATH=C:/Users/YourName/Zotero/storage
CHROMA_PATH=./data/chroma

# Voyage AI (default, recommended)
USE_VOYAGE_API=true
VOYAGE_API_KEY=your_voyage_key_here
VOYAGE_TEXT_MODEL=voyage-context-3
VOYAGE_MULTIMODAL_MODEL=voyage-multimodal-3

# OR use Jina API (alternative)
USE_JINA_API=false
JINA_API_KEY=your_jina_key_here
JINA_MODEL=jina-embeddings-v4

# OR use local model (fallback)
EMBEDDING_MODEL=Qwen/Qwen3-Embedding-0.6B

# Reranking model
RERANKER_MODEL=cross-encoder/ms-marco-MiniLM-L-6-v2

# Indexing options
ENABLE_INCREMENTAL_INDEXING=true
ENABLE_DEDUPLICATION=true
BATCH_INDEXING_SIZE=50

默认行为:Voyage AI(Voyage context-3)在以下情况下自动使用 USE_VOYAGE_API=true。该系统退回到Jina,然后是本地模型。

📁 项目结构

scientific-papers-mcp/
├── .env                           # Configuration (Voyage AI keys, paths)
├── pyproject.toml                 # Dependencies
├── src/
│   ├── config.py                  # Main configuration
│   ├── server.py                  # MCP server (fastmcp)
│   ├── embeddings/
│   │   ├── voyage_text_client.py  # ✅ Voyage AI client
│   │   └── voyage_hybrid_client.py # ✅ Multimodal Voyage client
│   ├── indexing/
│   │   ├── hybrid_search.py       # Search engine (Voyage → Jina → Local)
│   │   ├── zotero_indexer.py      # Zotero integration
│   │   └── ...
│   ├── models/
│   └── utils/
├── data/                          # ChromaDB collection (291MB)
│   └── chroma/
├── index_zotero_library.py        # Initial/full reindexing
├── update_zotero_index.py         # Fast incremental updates
├── validate_chunks.py             # Validation utility
└── tests/                         # Test suite
    ├── test_pdf_extractor.py
    ├── test_voyage.py            # ✅ Voyage AI tests
    └── ...

基本文件:保持 index_zotero_library.py, update_zotero_index.py, validate_chunks.py

已删除文件:旧测试文件(test_jina_*.py, test_qwen_*.py)以及过时的脚本

📚 用法

先决条件

  1. 设置Voyage AI (必填):

- 从获取API密钥 https://www.voyageai.com/ - 添加到 .env: VOYAGE_API_KEY=your_key_here

  1. 配置Zotero路径:

- 编辑 .env: DOCUMENTS_PATH=C:/Users/YourName/Zotero/storage

1.首次索引

索引您的整个Zotero库:

# Full indexing (150 docs ~8-10 min)
python index_zotero_library.py

# Test with first 10 documents
python index_zotero_library.py --limit 10

# Force complete reindex (clear old data)
python index_zotero_library.py --force-rebuild

Voyage AI的预期使用时间:150份文档约8-10分钟(旧方法约45分钟)

2.快速更新(日常使用)

仅使用新的/修改的文档更新索引:

# Fast incremental update (30sec - 2min)
python update_zotero_index.py

# With verbose logging
python update_zotero_index.py --verbose

预期时间:

  • 无变化:~5-10秒(仅扫描)
  • 少量更改(1-10个文档):约30秒-2分钟
  • 许多更改(50+个文档):~5-10分钟

3.使用MCP服务器

MCP可通过以下方式在克劳德代码中自动使用 .claude.json:

{
  "mcpServers": {
    "scientific-papers": {
      "type": "stdio",
      "command": "C:/Users/thier/miniforge3/Scripts/scientific-papers-mcp.exe",
      "args": []
    }
  }
}

如果需要,手动启动服务器:

python src/server.py

或使用FastMCP:

fastmcp run src.server:mcp

🔍 搜索功能

MCP工具可用

  1. search_papers -混合语义+关键字搜索
   # Example: Search for glacier albedo research
   {
     "query": "glacier albedo feedback mechanisms",
     "top_k": 10,
     "alpha": 0.7  # 0=keyword only, 1=semantic only
   }
  1. search_with_reranking -使用交叉编码器增强搜索
   # 35% better precision with reranking
   {
     "query": "wildfire aerosol deposition on snow",
     "top_k": 5,
     "use_metadata_boost": true  # Boost title/abstract matches
   }
  1. search_fulltext -基于正则表达式的全文搜索
   # Find specific terms or patterns
   {
     "query": "albedo.*feedback",
     "regex": true
   }
  1. generate_rag_answer -RAG引用的来源
   # Get answer with citations
   {
     "query": "What factors affect glacier albedo?",
     "top_k": 5
   }

🏗️ 建筑

使用Voyage AI索引管道

┌─────────────────────────────────────────────────────┐
│         Zotero Library (C:/Users/.../storage)       │
│              ~150 folders with PDFs                  │
└──────────────────┬──────────────────────────────────┘
                   │
                   ▼
      ┌────────────────────────────┐
      │  ZoteroLibraryIndexer      │
      │  ├─ Scan library           │
      │  ├─ Extract metadata       │
      │  │   (DOI, abstract, etc)  │
      │  ├─ Check incremental      │
      │  │   (skip unchanged)      │
      │  └─ Deduplicate            │
      │      (DOI + title match)   │
      └────────────┬───────────────┘
                   │
    ┌──────────────┴───────────────┐
    │                              │
    ▼                              ▼
┌─────────────────┐      ┌──────────────────┐
│  Embeddings     │      │  BM25 Index      │
│  (Voyage AI -   │      │  (Keyword)       │
│   context-3)    │      │                  │
└────────┬────────┘      └────────┬─────────┘
         │                        │
         └──────────┬─────────────┘
                    │
                    ▼
         ┌──────────────────────┐
         │  Hybrid Search       │
         │  (α=0.5 default)     │
         └──────────┬───────────┘
                    │
                    ▼
         ┌──────────────────────┐
         │  Cross-Encoder       │
         │  Reranking           │
         │  (ms-marco-MiniLM)   │
         └──────────┬───────────┘
                    │
                    ▼
         ┌──────────────────────┐
         │  Top-K Results       │
         │  (with metadata)     │
         └──────────────────────┘

关键组件

  1. VoyageTextEmbeddingClient (src/embeddings/voyage_text_client.py)

- Voyage AI(航行环境-3) 用于情境化嵌入 - 比OpenAI文本嵌入3大提高14.24% - 与SentenceTransformer接口兼容

  1. ZoteroDocument (src/models/document.py)

- 具有DOI、引用密钥和集合的丰富元数据模型 - 用于最优嵌入的分层文本组合 - 重复数据删除的标准化标题

  1. DocumentDeduplicator (src/indexing/deduplicator.py)

- 基于DOI的精确匹配 - 模糊标题匹配(相似度>90%) - 智能版本选择(已发布>预印本)

  1. IndexingStateManager (src/indexing/indexing_state.py)

- 跟踪文件修改时间 - 启用增量更新 - JSON中的持久状态

  1. CrossEncoderReranker (src/indexing/reranker.py)

- 重新排名前50名候选人 - 元数据增强(标题2x,摘要1.5x) - 精度提高约35%

  1. HybridSearchEngine (src/indexing/hybrid_search.py)

- 密集(语义)+稀疏(BM25)搜索 - 优先级:Voyage AI→ API→ 局部模型 - search_with_reranking() 追求最佳品质

📊 性能改进

操作之前之后改进注意事项
嵌入模型Qwen3(本地)Voyage AI(上下文3)+14%质量基于API,1024暗
初始索引(150个文档)~45分钟~8分钟速度提高5.6倍Voyage AI加速
重新索引(无更改)45分钟~30秒快90倍增量更新
索引大小154个文档~130个文档-15%重复智能重复数据删除
搜索精度基线+35%重新排名提升交叉编码器ms marco

🧹 最近更新(2025年11月)

项目清理

代码库已被清理和组织:

  • 23个文件已删除 (过时的测试、旧脚本、临时文件)
  • Voyage AI已确认 作为主要的嵌入引擎
  • 项目结构优化 日常使用
  • 收藏大小:291 MB英寸 data/chroma/

剩余重要文件

  • index_zotero_library.py -完全(重新)索引
  • update_zotero_index.py -增量更新
  • validate_chunks.py -块验证
  • test_voyage.py -Voyage AI测试参考

已删除文件

  • 旧脚本: index_all.py, fix_and_index.py, setup_mcp.py
  • 过时的测试: test_jina_*.py, test_qwen_*.py, test_complete.py
  • 临时日志和备份文件

项目结构 上面的部分是完整的组织目录。

🧪 测试

# Test with 5 documents
python index_zotero_library.py --limit 5

# Test incremental update
python update_zotero_index.py --limit 10

# Clear state and start fresh
python index_zotero_library.py --clear-state --force-rebuild --limit 5

📝 索引状态管理

状态存储在 data/indexing_state.json:

{
  "indexed_files": {
    "C:/Users/.../file.pdf": {
      "date_modified": "2025-11-08T08:21:14",
      "doc_id": "ABC123XY",
      "doi": "10.1000/xyz123"
    }
  },
  "deduplicated_files": {
    "10.1000/xyz123": ["file1.pdf", "file2.pdf"]
  },
  "statistics": {
    "total_indexed": 150,
    "last_full_reindex": "2025-11-08T08:00:00",
    "last_incremental_update": "2025-11-08T08:21:14"
  }
}

🔄 推荐工作流程

  1. 首次设置:
   python index_zotero_library.py
  1. 每日/每周更新 (使用MCP前):
   python update_zotero_index.py
  1. 添加多篇论文后 (>20):
   python update_zotero_index.py
  1. 如果有什么东西坏了:
   python index_zotero_library.py --clear-state --force-rebuild

🛠️ 故障排除

问题:“未检测到任何更改”,但我添加了论文

解决方案:增量索引器检查文件修改时间。如果您在不修改文件的情况下移动了文件,请运行:

python index_zotero_library.py --force-rebuild

问题:结果中存在重复论文

解决方案:在索引过程中运行重复数据删除。重新运行:

python index_zotero_library.py --force-rebuild

问题:搜索返回不相关的结果

解决方案:使用重新排序以提高精度:

search_with_reranking(query="your query", top_k=5, use_metadata_boost=True)

📚 高级配置

禁用功能

# Disable deduplication
python index_zotero_library.py --no-dedup

# Disable incremental indexing (always reindex)
# Edit src/config.py:
ENABLE_INCREMENTAL_INDEXING=False

自定义批量大小

python index_zotero_library.py --batch-size 100

不同的嵌入模型

编辑 src/config.py:

EMBEDDING_MODEL="Qwen/Qwen3-Embedding-0.6B"              # State-of-the-art 2025 (default)
EMBEDDING_MODEL="jinaai/jina-embeddings-v3"              # Excellent alternative
EMBEDDING_MODEL="intfloat/multilingual-e5-large"         # Solid multilingual
EMBEDDING_MODEL="BAAI/bge-large-en-v1.5"                 # English only, high quality

🤝 贡献

这一实施的灵感来自 Zotero MCP 该项目已针对本地Zotero库进行了调整,并具有增强的功能。

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件

🙏 致谢

目录标签

目录标签

搜索PythonClaude学术研究语义搜索本地部署Zotero集成增量索引交叉编码器

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP