谷歌学术搜索
一个基于 FastMCP 框架的 Google Scholar 搜索服务器,使用 Playwright 浏览器自动化技术实现文献搜索功能。支持多页搜索、详细信息提取和反检测机制。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"google-scholar": {
"args": [
"d:\\MCP\\google-scholar-search-py\\server.py"
],
"autoApprove": [
"search_google_scholar",
"get_article_details"
],
"command": "python",
"disabled": false
}
}
}
服务介绍
Google Scholar Search MCP Server
一个基于 FastMCP 框架的 Google Scholar 搜索服务器,使用 Playwright 浏览器自动化技术实现文献搜索功能。
功能特性
- 🔍 智能搜索: 在 Google Scholar 上搜索学术文献
- 📄 分页支持: 支持多页搜索,一次性获取大量结果
- 🤖 浏览器自动化: 使用 Playwright 完全模拟真实用户浏览器操作
- 📊 详细信息: 提取标题、作者、年份、引用次数、摘要、PDF链接等
- 🚀 Stdio 传输: 支持标准输入输出方式调用
- 🛡️ 反检测: 配置了反自动化检测机制
安装步骤
1. 克隆或下载项目
cd d:\MCP\google-scholar-search-py
2. 创建虚拟环境(推荐)
python -m venv venv
.\venv\Scripts\Activate.ps1
3. 安装依赖
pip install -r requirements.txt
4. 安装 Playwright 浏览器
playwright install chromium
使用方法
作为独立服务器运行
python server.py
在 MCP 客户端中配置
Claude Desktop 配置
编辑 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"google-scholar": {
"command": "python",
"args": ["d:\\MCP\\google-scholar-search-py\\server.py"],
"env": {}
}
}
}
或者使用虚拟环境:
{
"mcpServers": {
"google-scholar": {
"command": "d:\\MCP\\google-scholar-search-py\\venv\\Scripts\\python.exe",
"args": ["d:\\MCP\\google-scholar-search-py\\server.py"],
"env": {}
}
}
}
Cline 配置
编辑 MCP 设置文件(通常在 VSCode 设置中):
{
"mcpServers": {
"google-scholar": {
"command": "python",
"args": ["d:\\MCP\\google-scholar-search-py\\server.py"],
"disabled": false,
"autoApprove": ["search_google_scholar", "get_article_details"]
}
}
}
可用工具
1. search_google_scholar
搜索 Google Scholar 上的学术文献。
参数:
query(str): 搜索关键词,例如 "machine learning"、"气候变化"max_pages(int, 可选): 最多获取多少页结果(1-10,默认: 1)results_per_page(int, 可选): 每页结果数(10 或 20,默认: 10)
返回:
{
"query": "machine learning",
"total_results": 20,
"pages_searched": 2,
"articles": [
{
"title": "文章标题",
"authors": "作者1, 作者2",
"year": "2023",
"venue": "会议或期刊名称",
"citations": 156,
"snippet": "文章摘要或描述...",
"link": "https://...",
"pdf_link": "https://...pdf"
}
]
}
使用示例:
请搜索关于"深度学习"的文献,获取前3页结果
2. get_article_details
根据文章标题搜索特定文献的详细信息。
参数:
article_title(str): 文章标题max_results(int, 可选): 最多返回多少个匹配结果(1-10,默认: 5)
返回:
与 search_google_scholar 相同的格式
使用示例:
请查找论文 "Attention is All You Need" 的详细信息
工作原理
- 浏览器启动: 使用 Playwright 启动 Chromium 浏览器(无头模式)
- 反检测配置:
- 移除 webdriver 标识
- 设置真实的 User-Agent
- 配置合理的浏览器窗口大小
- 页面导航: 构建 Google Scholar 搜索URL并访问
- 内容提取: 使用 CSS 选择器提取文章信息
- 翻页处理: 自动检测并访问下一页,支持多页搜索
- 结果返回: 将所有收集的数据整理并返回
常见问题
❓ 为什么只显示第一页的10条结果?
服务器功能是正常的! 如果您遇到这个问题,可能是以下原因:
-
MCP 客户端的显示限制
- 某些客户端可能截断显示长响应
- 实际数据可能是完整的,只是UI没有完全显示
-
解决方案
- ✅ 分批请求:"请搜索第1页" → "请搜索第2页" → "请搜索第3页"
- ✅ 明确要求:"请返回所有结果,按页分组显示"
- ✅ 检查客户端日志查看完整响应
-
验证服务器功能
python test_pagination.py如果显示获取了多页结果,说明服务器正常。
📖 详细排查步骤请查看: TROUBLESHOOTING.md
项目结构
google-scholar-search-py/
├── server.py # 主服务器文件
├── requirements.txt # Python 依赖
├── pyproject.toml # 项目配置
├── test_pagination.py # 翻页功能测试
├── test_tool_output.py # 工具返回测试
├── TROUBLESHOOTING.md # 故障排除指南
├── .gitignore # Git 忽略文件
├── README.md # 本文档
└── mcp_config_example.json # MCP 配置示例
注意事项
⚠️ 重要提示:
- 请求频率: Google Scholar 可能会限制请求频率,建议在页面之间添加延迟(已默认配置 2 秒)
- CAPTCHA: 如果遇到 CAPTCHA 验证,程序会自动停止并记录错误
- 结果数量: 建议一次不要获取过多页面(推荐 1-3 页)
- 网络环境: 需要能够访问 Google Scholar(可能需要代理)
- 合规使用: 请遵守 Google Scholar 的使用条款和机器人协议
故障排除
问题:无法启动浏览器
解决方案:
playwright install chromium
问题:找不到模块
解决方案:
pip install -r requirements.txt
问题:遇到 CAPTCHA
解决方案:
- 增加页面之间的延迟时间
- 减少一次搜索的页数
- 使用代理或等待一段时间后再试
问题:无法访问 Google Scholar
解决方案:
- 检查网络连接
- 如果在中国大陆,可能需要配置代理
- 可以修改代码添加代理支持
高级配置
添加代理支持
在 ScholarScraper.__aenter__ 方法中添加代理配置:
self.browser = await self.playwright.chromium.launch(
headless=True,
proxy={
"server": "http://proxy-server:port",
"username": "username",
"password": "password"
}
)
调整延迟时间
在 server.py 中修改 delay_between_pages 参数:
result = await scraper.search(
query=query,
max_pages=max_pages,
results_per_page=results_per_page,
delay_between_pages=3.0 # 增加到3秒
)
技术栈
- FastMCP: MCP 服务器框架
- Playwright: 浏览器自动化
- Pydantic: 数据验证和序列化
- Python: 3.10+
开发
运行测试
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest
代码格式化
black server.py
ruff check server.py
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!
更新日志
v0.1.0 (2025-11-08)
- 初始版本
- 实现基本搜索功能
- 支持多页搜索
- 添加反检测机制