学术搜索服务

一个连接AI助手与Google Scholar的强大模型上下文协议(MCP)服务器,支持搜索学术出版物、查找研究人员、分析引用、下载论文和执行高级研究工作流程。

  • by dihannahdi
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 dihannahdi/google-scholar-mcp

使用说明

谷歌学术MCP服务器

适用于AI助手的最全面的Google Scholar MCP服务器

安装 • 快速开始 • 工具 • API 参考 • 贡献


一个强大的模型上下文协议(MCP)服务器,将克劳德等人工智能助手连接到谷歌学术。搜索学术出版物,查找研究人员,分析引文,下载论文,并执行高级研究工作流程。

🌟 特性

工具(共11个)

工具 说明
search_publications 按主题、作者或日期范围搜索学术论文
search_author 按姓名、领域或机构查找研究人员
get_author_profile 获取详细的作者信息,包括h-index、出版物和合著者
get_citations 查找引用特定出版物的论文
generate_bibtex 生成BibTeX条目以供引用
get_related_articles 查找出版物的相关文章
get_all_versions 获取一篇论文的所有可用版本
download_paper 在本地下载和存储论文以供离线访问
list_papers 列出所有本地存储的纸张
read_paper 读取存储纸张的内容
advanced_search 使用语言、专利和日期过滤器进行高级搜索

提示(共6条)

提示 描述
literature_review 进行文献综述的结构化方法
find_expert 寻找特定领域的顶尖研究人员
citation_analysis 分析出版物的引用影响
deep_paper_analysis 全面的多步骤纸张分析工作流程
research_synthesis 综合多篇论文的研究
methodology_comparison 比较不同研究论文的方法

关键优势

  • 11强大的工具:搜索、引用、相关文章、版本、下载等
  • 高级搜索:按语言、专利、评论文章等筛选
  • 本地纸张存储:下载和缓存论文以供离线访问
  • 智能高速缓存:使用基于TTL的缓存减少冗余请求
  • 元数据:摘要、引用次数、h指数、合著者等
  • 速率限制:内置防止Google Scholar屏蔽的保护功能
  • 错误处理:优雅地处理速率限制和验证码
  • BibTeX支持:生成适当的学术引文
  • 高级提示:用于深度论文分析和研究综合的预构建工作流程

📦 安装

史密斯路(推荐)

npx -y @smithery/cli install @dihannahdi/google-scholar-mcp --client claude

通过npm

npm install -g @dihannahdi/google-scholar-mcp

来源

git clone https://github.com/dihannahdi/google-scholar-mcp.git
cd google-scholar-mcp
npm install
npm run build

🚀 快速开始

运行服务器

# If installed globally
google-scholar-mcp

# From source
npm start

# Development mode
npm run dev

Claude桌面配置

添加到您的 claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "google-scholar": {
      "command": "node",
      "args": ["/path/to/google-scholar-mcp/dist/index.js"],
      "env": {
        "SCHOLAR_STORAGE_PATH": "~/.google-scholar-mcp/papers",
        "SCHOLAR_RATE_LIMIT_MS": "3000",
        "SCHOLAR_CACHE_ENABLED": "true",
        "SCHOLAR_CACHE_TTL_MS": "3600000",
        "SERPAPI_KEY": "your_serpapi_key_here",
        "SCHOLAR_USE_SERPAPI_FALLBACK": "true"
      }
    }
  }
}

或者使用npx:

{
  "mcpServers": {
    "google-scholar": {
      "command": "npx",
      "args": ["-y", "@dihannahdi/google-scholar-mcp"]
    }
  }
}

环境变量

变量 描述 默认值
SCHOLAR_STORAGE_PATH 存储下载论文的路径 ~/.google-scholar-mcp/papers
SCHOLAR_RATE_LIMIT_MS 请求之间的速率限制(ms) 3000
SCHOLAR_CACHE_ENABLED 启用响应缓存 true
SCHOLAR_CACHE_TTL_MS 缓存生存时间(ms) 3600000 (1小时)
SCHOLAR_PROXY_URL 可选代理URL -
SERPAPI_KEY SerpAPI密钥用于可靠回退(免费获取密钥) -
SCHOLAR_USE_SERPAPI_FALLBACK 在被阻止时启用自动SerpAPI回退 false
SCHOLAR_ROTATE_USER_AGENT 轮换用户代理以避免被检测到 true
SCHOLAR_ENABLE_JITTER 在请求之间添加随机延迟 true
SCHOLAR_JITTER_MAX_MS 最大抖动延迟(毫秒) 2000

🔐 SerpAPI回退(推荐)

Google Scholar积极阻止自动访问。确保 100%正常运行时间,我们建议使用 SerpAPI 作为后备方案:

  1. 获取免费的API密钥 在 蛇网 (每月100次免费搜索)
  2. 设置环境变量:
    export SERPAPI_KEY="your_serpapi_key"
    export SCHOLAR_USE_SERPAPI_FALLBACK="true"
    

它是如何工作的:

  • 服务器首先尝试直接抓取(免费,但可能被阻止)
  • 如果被阻止,它会自动回退到SerpAPI(可靠、付费)
  • 无论来源如何,结果都标准化为相同的格式

SerpAPI的好处:

  • ✅ 100%正常运行时间保证
  • ✅ 没有验证码或屏蔽问题
  • ✅ 处理所有反机器人措施
  • ✅ 丰富的结构化数据
  • ✅ 作者简介、引文、相关文章

📖 用法示例

搜索出版物

Search for recent machine learning papers about transformers

Tool: search_publications
Arguments:
  query: "transformer neural network"
  yearStart: 2020
  numResults: 10
  sortBy: "relevance"

查找作者

Find researchers working on quantum computing at MIT

Tool: search_author
Arguments:
  query: "quantum computing"
  organization: "MIT"
  numResults: 5

获取作者资料

Get detailed profile for Geoffrey Hinton

Tool: get_author_profile
Arguments:
  scholarId: "JicYPdAAAAAJ"

获取引用

Find papers citing "Attention Is All You Need"

Tool: get_citations
Arguments:
  clusterId: "4054916225996727837"
  numResults: 10
  sortBy: "date"

生成BibTeX

Create BibTeX for a paper

Tool: generate_bibtex
Arguments:
  title: "Attention Is All You Need"
  authors: ["Ashish Vaswani", "Noam Shazeer", "Niki Parmar"]
  year: 2017
  venue: "Advances in Neural Information Processing Systems"

🔧 API 参考

搜索_出版物

在谷歌学术搜索中搜索学术出版物。

参数:

参数 类型 必填 默认 说明
查询 字符串 是 - 搜索查询
author string 否 - 按作者姓名筛选
yearStart number No - 筛选器的起始年份
yearEnd 编号 否 - 筛选器的结束年份
num结果 数量 否 10 结果数量(1-20)
sortBy string 否 “相关性” “相关性或日期”

退货:

  • 出版物列表,包括标题、作者、摘要、地点、年份、引用次数、网址

搜索作者

寻找学术研究人员。

参数:

参数 类型 必填 默认 说明
query string 是 - 作者姓名或关键字
组织 string 否 - 按机构筛选
num结果 数量 否 10 结果数量(1-20)

退货:

  • 作者简介列表,包括姓名、所属机构、兴趣、引用次数

get_author_profile

获取详细的作者信息。

参数:

参数 类型 必填 说明
scholarId string 是 谷歌学者作者ID

退货:

  • 完整的个人资料,包括出版物、h-index、i10 index、合著者、引文历史

get_citations

获取引用特定出版物的论文。

参数:

参数 类型 必填 默认 说明
clusterId string 是 - 谷歌学者集群ID
num结果 数量 否 10 结果数量(1-20)
sortBy string 否 “相关性” “相关性或日期”

退货:

  • 引用出版物清单及详细信息

generate_bibtex

生成BibTeX引用条目。

参数:

参数 类型 必填 说明
title string Yes 出版物标题
authors string[] Yes 作者姓名列表
年份 编号 否 出版年份
地点 字符串 否 期刊/会议名称
url string 否 发布url

退货:

  • 格式化BibTeX条目

获取相关文章

查找给定出版物的相关文章。

参数:

参数 类型 必填 默认 说明
clusterId string 是 - 谷歌学者集群ID
num结果 数量 否 10 结果数量(1-20)

退货:

  • 包含元数据的相关出版物列表

获取所有版本

获取一篇论文的所有可用版本。

参数:

参数 类型 必填 默认 说明
clusterId string 是 - 谷歌学者集群ID
num结果 数量 否 10 结果数量(1-20)

退货:

  • 所有版本列表(预印本、已发布等)

download_paper

下载并在本地存储论文。

参数:

参数 类型 必填 说明
url string Yes 论文的url(PDF、arXiv等)
filename string Yes 已保存文件的名称
元数据 对象 否 可选元数据(标题、作者、年份)

退货:

  • 存储文件的路径和确认

list_papers

列出所有本地存储的纸张。

参数:

参数 类型 必填 说明
pattern string No 可选过滤模式

退货:

  • 包含元数据的存储论文列表

read_paper

读取存储纸张的内容。

参数:

参数 类型 必填 说明
filename string Yes 存储文件的名称

退货:

  • 纸张内容(文本格式)

高级搜索

使用其他过滤器进行高级搜索。

参数:

参数 类型 必填 默认 说明
查询 字符串 是 - 搜索查询
exactPhrase string 否 - 要匹配的精确短语
without单词 字符串 否 - 要排除的单词
author string 否 - 按作者筛选
source string 否 - 按来源/日记筛选
年份开始 编号 否 - 开始年份筛选器
yearEnd 数字 否 - 年终筛选器
language string 否 “en” 语言代码
includePatents boolean 否 true 在结果中包含专利
included引用 布尔值 否 真 包括引用
num结果 编号 否 10 结果数量

退货:

  • 符合条件的出版物列表

🛠️ 发展

项目结构

google-scholar-mcp/
├── src/
│   ├── index.ts          # MCP server entry point
│   ├── config/
│   │   └── index.ts      # Environment configuration
│   ├── types/
│   │   └── index.ts      # TypeScript type definitions
│   ├── tools/
│   │   ├── definitions.ts # Tool schemas (11 tools)
│   │   ├── handlers.ts    # Tool implementation
│   │   └── index.ts
│   ├── scraper/
│   │   ├── scholar.ts    # Google Scholar scraper
│   │   └── index.ts
│   └── utils/
│       ├── helpers.ts    # URL builders, rate limiting
│       ├── cache.ts      # In-memory caching
│       ├── storage.ts    # Local paper storage
│       └── index.ts
├── dist/                  # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md

建筑

npm run build

测试

# Run MCP Inspector for debugging
npx @modelcontextprotocol/inspector node dist/index.js

⚠️ 局限性

  1. 速率限制:Google Scholar可能会限制或阻止请求。服务器包括延迟和重试,但大量使用可能会触发阻塞。

  2. 验证码:过多的请求可能会触发验证码挑战。如果发生这种情况,请等待几分钟后重试。

  3. 没有官方API:此服务器会抓取Google Scholar的web界面,如果Google更改其HTML结构,该界面可能会损坏。

  4. 结果有限:每次请求最多20个结果,以保持在合理范围内。

🤝 贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

📬 支持

对于问题和疑问:

  • 在GitHub上打开一个问题
  • 检查 MCP文件

由...制作❤️ 对于研究界