返回市场
学术论文-MCP-HTTP服务器

学术论文-MCP-HTTP服务器

作者:pastchais3 星标更新:2025-10-11

项目介绍

学术论文MCP HTTP/SSE服务

基于模型上下文协议(MCP)的学术文献检索HTTP/SSE服务。它聚合了诸如arXiv、Crossref、OpenAlex、PubMed和Semantic Scholar(可选:通过SerpApi访问Google Scholar)等数据源,为AI助手和应用程序提供标准化的搜索、详情、引用、趋势和推荐能力。

快速导航:入门指南 | API概览 | SSE使用 | 环境变量 | Docker | 示例

功能特性

  • 支持REST API和SSE(MCP)双协议,易于集成
  • 智能主题选择:根据研究领域自动选择最优的数据源组合
  • 多源数据聚合:支持13个以上的学术数据库(免费+付费)
  • 开放获取支持:自动查找合法的OA版本论文
  • 内置CORS,简洁的请求体设计
  • 使用TypeScript编写,构建输出位于dist/
  • 提供Docker和Compose部署脚本

支持的数据源

免费数据源(开箱即用):

  • arXiv - 物理学、数学和计算机科学预印本
  • Crossref - DOI元数据和引用
  • OpenAlex - 多学科开放索引
  • PubMed - 生物医学文献
  • Semantic Scholar - AI驱动的学术搜索
  • DBLP - 计算机科学文献
  • Europe PMC - 来自欧洲的生命科学全文
  • bioRxiv/medRxiv - 生物医学预印本

需要注册但免费:

  • CORE - 开放获取聚合器(需要API密钥)
  • Unpaywall - 查找OA版本(只需电子邮件)

付费/订阅数据源(可选):

  • IEEE Xplore - 电子工程(待办事项)
  • ACM数字图书馆 - 计算机科学(待办事项)
  • Springer - 跨学科(待办事项)
  • Web of Science - 引文索引(待办事项)
  • Scopus - 综合覆盖(待办事项)
  • JSTOR - 人文和社会科学(待办事项)
  • Google Scholar - 通过SerpAPI

主要工具

搜索功能:

  • search_papers智能跨源检索(支持自动主题选择)
  • search_papers_by_discipline按主题搜索并自动选择数据源
  • search_papers_by_author按作者搜索
  • search_papers_by_journal按期刊搜索
  • search_papers_by_conference按会议搜索

论文信息:

  • get_paper_details论文详情
  • get_citation_info引用/被引用信息
  • get_recommended_papers相关推荐
  • get_open_access_link检查OA版本

趋势分析:

  • get_research_trends研究趋势
  • get_recent_papers最新论文
  • search_influential_papers高影响力论文

提示(研究助理)

research-advisor``literature-finder``research-plan``trend-analysis``paper-comparison

快速开始

本地运行(Node.js ≥ 18):

npm install
npm run build
npm start
# 服务启动于 http://localhost:3000

健康检查和基本验证:

curl http://localhost:3000/health

curl -X POST http://localhost:3000/api/search \
  -H "Content-Type: application/json" \
  -d '{"query": "机器学习", "max_results": 5}'

更多脚本:npm run dev(直接编译和启动)npm run watch(监控编译)npm test(示例API测试)。

API概览(HTTP)

基础路由:

  • GET /服务信息
  • GET /health健康检查
  • GET /sse建立SSE(MCP)连接

REST路由:

  • POST /api/search关键词搜索(支持discipline``auto_detect_discipline``sources``max_results
  • POST /api/search/author作者搜索(author_name可选source``discipline``max_results
  • POST /api/paper论文详情(paper_id``source
  • POST /api/citations引用信息(paper_id可选source``max_results
  • POST /api/recommendations相关推荐(paper_id可选source``max_results
  • POST /api/trends研究趋势(field可选source``max_results
  • POST /api/recent最近论文(topic可选days``source``max_results
  • POST /api/influential高影响力论文(field可选max_results

示例:

# 普通搜索
curl -X POST http://localhost:3000/api/search \
  -H "Content-Type: application/json" \
  -d '{
    "query": "量子计算",
    "sources": ["arxiv", "semantic_scholar"],
    "max_results": 5
  }'

# 学科智能搜索(自动选择数据源)
curl -X POST http://localhost:3000/api/search \
  -H "Content-Type:application/json" \
  -d '{
    "query": "机器学习",
    "discipline": "machine_learning",
    "max_results": 10
  }'

# 自动检测学科
curl -X POST http://localhost:3000/api/search \
  -H "Content-Type:application/json" \
  -d '{
    "query": "CRISPR基因编辑",
    "auto_detect_discipline": true,
    "max_results": 10
  }'

更多示例和字段描述,请参阅:HTTP_API_GUIDE.md``API_REFERENCE.md``examples/

SSE(MCP)使用

建立连接:

const es = new EventSource('http://localhost:3000/sse');
es.onmessage = (e) => {
  console.log('事件', e.data);
  // 首次消息中可获取并保存会话信息(如sessionId)
};

发送消息:使用POST /sse?sessionId=...请求体是MCP请求消息(例如,调用一个工具)。具体消息格式和示例,请参考HTTP_API_GUIDE.md

注意:服务器为每个SSE连接维护会话,并需要相同的sessionId来发送后续消息。

环境变量

复制模板并按需填写:

cp env-template .env

可用变量(全部可选):

  • PORT(默认 3000)
  • HOST(默认 0.0.0.0)
  • CORS_ENABLED(默认启用)

基本数据源(推荐配置):

  • OPENALEX_EMAIL(强烈推荐以提高OpenAlex响应质量)
  • PUBMED_API_KEY(提高PubMed速率限制)
  • SEMANTIC_SCHOLAR_API_KEY(提高速率上限)
  • UNPAYWALL_EMAIL(用于检查OA版本,强烈推荐)
  • CORE_API_KEY(开放获取聚合器,免费注册)

可选数据源:

  • SERPAPI_KEY(启用Google Scholar,付费服务)
  • IEEE_API_KEY(电气工程,需要订阅)
  • ACM_API_KEY(计算机科学,需要订阅)
  • SPRINGER_API_KEY跨学科
  • WOS_API_KEY(Web of Science,需要机构订阅)
  • SCOPUS_API_KEY(Scopus,需要订阅)
  • JSTOR_API_KEY(人文和社会科学,需要订阅)

详情请参阅:API_KEY_GUIDE.md

Docker/Compose

使用Compose:

npm run compose:up      # 启动
npm run compose:logs    # 查看日志
npm run compose:restart # 重启
npm run compose:down    # 停止

本地镜像:

npm run docker:build
npm run docker:run
# 其他:docker:stop / docker:logs / docker:restart / docker:remove

示例和测试

  • examples/http-api-examples.js|py|shHTTP API示例
  • test-http-api.js简单连通性和接口演示npm test
  • 进一步指导:HTTP_QUICKSTART.md``HOW_TO_TEST.md

目录结构(简要)

  • src/clients/数据源客户端(arXiv/Crossref/OpenAlex/PubMed/Semantic Scholar/Google Scholar)
  • src/tools/MCP工具注册和实现
  • src/prompts/MCP提示定义
  • src/index.tsHTTP/SSE服务入口点
  • examples/调用示例

许可证

MIT许可证