学术论文检索聚合 MCP 服务

学术论文检索聚合 MCP 服务

源码地址:学术论文检索聚合 MCP 服务

基于 Go 语言实现的学术论文检索聚合 MCP (Model Context Protocol) 服务,通过统一接口同时调用多个学术数据库,提供智能去重、合并和排序的搜索结果。

功能特性

  • 🔍 多源聚合搜索: 同时调用6个主要学术数据库
  • 🧠 智能去重合并: 基于DOI和标题的智能重复检测
  • 📊 统一数据格式: 标准化的论文元数据结构
  • 🚀 并发高性能: 异步并行调用所有数据源
  • 🎯 精确结果: 智能排序和相关性评分
  • 🌐 MCP 协议支持: 完整的MCP工具接口
  • 📝 详细状态报告: 实时数据源状态和性能监控

支持的数据源

  • arXiv: 物理学、数学、计算机科学预印本 (免费)
  • Semantic Scholar: AI驱动的学术搜索引擎 (免费)
  • Crossref: 全球最大的DOI注册机构 (免费)
  • Scopus: Elsevier学术数据库 (需要API密钥)
  • ADSABS: NASA天体物理学数据系统 (需要API密钥)
  • Sci-Hub: 学术论文PDF获取 (免费,但需注意法律风险)

可用工具

1. searchScholarPapers - 聚合学术论文搜索

从多个数据源同时搜索学术论文,自动合并去重并排序结果。

参数:

  • query (string): 搜索关键词(必需)
  • author (string): 作者筛选(可选)
  • title (string): 标题筛选(可选)
  • journal (string): 期刊筛选(可选)
  • year (string): 年份筛选(可选,如"2020-2023")
  • categories ([]string): 分类筛选(可选)
  • min_citations (int): 最小引用数(可选)
  • open_access_only (bool): 仅开放获取(可选)
  • offset (int): 偏移量,默认 0
  • limit (int): 限制数量,默认 10,最大 100
  • sort_by (string): 排序方式(relevance, citation_count, published_date)
  • sort_order (string): 排序顺序(asc, desc)
  • enabled_sources ([]string): 指定数据源(可选)

基础搜索示例:

json 复制代码
{
  "query": "machine learning"
}

高级搜索示例:

json 复制代码
{
  "query": "deep learning",
  "author": "Hinton",
  "year": "2020-2023",
  "min_citations": 100,
  "open_access_only": true,
  "limit": 20,
  "sort_by": "citation_count",
  "sort_order": "desc"
}

指定数据源示例:

json 复制代码
{
  "query": "quantum computing",
  "enabled_sources": ["arxiv", "semantic_scholar", "crossref"]
}

2. getScholarPaper - 获取论文详情

根据任意标识符获取特定论文的完整信息,自动选择最佳数据源。

参数:

  • identifier (string): 论文标识符(必需)

DOI查询示例:

json 复制代码
{
  "identifier": "10.1038/nature12373"
}

arXiv ID查询示例:

json 复制代码
{
  "identifier": "2301.07041"
}

安装和运行

环境要求

  • Go 1.24+
  • 网络连接(访问各学术数据库API)
  • 可选:Scopus API密钥
  • 可选:ADSABS API密钥

快速启动

  1. 克隆项目
bash 复制代码
git clone https://github.com/Seelly/scholar_mcp_server.git
cd scholar_mcp_server
  1. 安装依赖
bash 复制代码
go mod tidy
  1. 基础运行(使用免费数据源)
bash 复制代码
go run main.go logging.go

完整功能运行

配置API密钥以启用全部功能:

bash 复制代码
# 设置API密钥
export SCOPUS_API_KEY="your_scopus_api_key"
export ADSABS_API_KEY="your_adsabs_api_key"

# 运行服务器
go run main.go logging.go

生产部署

bash 复制代码
# 编译二进制文件
go build -o scholar-server main.go logging.go

# 后台运行
nohup ./scholar-server > server.log 2>&1 &

服务器将在 http://127.0.0.1:8080/ 启动。

MCP 客户端配置

Claude Desktop 配置

~/.cursor/mcp.json 或 Claude Desktop 配置文件中添加:

json 复制代码
{
  "mcpServers": {
    "arXiv论文检索服务": {
      "url": "http://127.0.0.1:8080/mcp"
    }
  }
}

使用示例

搜索论文

bash 复制代码
# 使用 curl 测试搜索功能
curl -X POST http://127.0.0.1:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "searchArxivPapers",
      "arguments": {
        "query": "deep learning",
        "max_results": 5
      }
    }
  }'

获取论文详情

bash 复制代码
curl -X POST http://127.0.0.1:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "getArxivPaper",
      "arguments": {
        "id": "2301.07041"
      }
    }
  }'
相关推荐
_OP_CHEN12 小时前
C++基础:(八)STL简介
开发语言·c++·面试·stl
crystal_pin14 小时前
Excel/Word 导出模块思路
面试
crystal_pin15 小时前
Echarts图表使用与性能优化思路
面试
UrbanJazzerati16 小时前
一文看懂指数函数:基础与性质
面试
crystal_pin17 小时前
前端多端适配与Electron思路
面试
聪明的笨猪猪18 小时前
Java Spring “核心基础”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
Lotzinfly21 小时前
10个JavaScript浏览器API奇淫技巧你需要掌握😏😏😏
前端·javascript·面试
合肥烂南瓜21 小时前
浏览器的事件循环EventLoop
前端·面试
xxxxxxllllllshi21 小时前
Java 集合框架全解析:从数据结构到源码实战
java·开发语言·数据结构·面试
Q741_14721 小时前
C++ 位运算 高频面试考点 力扣137. 只出现一次的数字 II 题解 每日一题
c++·算法·leetcode·面试·位运算