google-scholar-search-mcp
MCP Server to allow AI Assistant search Google Scholar
Documentation
google-scholar-search-mcp
An MCP (Model Context Protocol) server for searching Google Scholar, built for AI assistants and automation workflows that need papers, authors, citations, and BibTeX entries.
Table of Contents
1. Features
2. Installation
4. Usage
5. Examples
8. Contributing
Features
- Paper Search: Query Google Scholar by keyword with filtering, sorting, and pagination
- Author Lookup: Find researcher profiles with publication lists and h-index metrics
- Citation Tracking: Retrieve papers that cite a given work
- Paper Details: Get full metadata, citations-per-year graphs, and public access info
- BibTeX Export: Generate citation entries in BibTeX format
- Bulk Search: Batch search multiple queries with automatic rate limiting
- Rate Limiting: Built-in delays between requests to avoid being blocked
- Proxy Support: Optional proxy configuration (free, single, or ScraperAPI)
Installation
Requirements
- `Python 3.11` or later
- Dependencies: `mcp[cli]>=1.4.0`, `scholarly>=1.7.11`, `pydantic>=2.0` (see pyproject.toml)
- project uses `uv` for dependency management
Install it from PyPI
pip install google-scholar-search-mcpBuild from Source
git clone https://github.com/LWaetzig/google-scholar-search-mcp.git
cd google-scholar-search-mcp
pip install -e .Note: This server uses the scholarly library to access Google Scholar. Respect Google's Terms of Service and use rate limiting appropriately to avoid being blocked.
Configuration
Configure the MCP server via environment variables:
| Variable | Default | Description |
|---|---|---|
| `GS_MIN_DELAY` | `5.0` | Minimum seconds between requests |
| `GS_MAX_DELAY` | `15.0` | Maximum seconds between requests |
| `GS_MAX_RETRIES` | `3` | Number of retries on failure |
| `GS_PROXY_TYPE` | `none` | Proxy mode: `none`, `free`, `single`, `scraperapi` |
| `GS_PROXY_HTTP` | — | HTTP proxy URL (for `single` mode) |
| `GS_PROXY_HTTPS` | — | HTTPS proxy URL (for `single` mode) |
| `GS_SCRAPERAPI_KEY` | — | ScraperAPI key (for `scraperapi` mode) |
| `GS_TIMEOUT` | `30` | Request timeout in seconds |
Proxy Configuration Examples
No Proxy (Default)
export GS_PROXY_TYPE=noneFree Proxy
export GS_PROXY_TYPE=freeSingle Proxy
export GS_PROXY_TYPE=single
export GS_PROXY_HTTP=http://proxy.example.com:8080
export GS_PROXY_HTTPS=https://proxy.example.com:8080ScraperAPI
export GS_PROXY_TYPE=scraperapi
export GS_SCRAPERAPI_KEY=your_key_hereUsage
Detailed documentation about single tools can be found here
Integration with Claude Desktop
Add the server to your Claude Desktop configuration:
| Platform | Path |
|---|---|
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
Add the `google_scholar_mcp` entry under `mcpServers`, replacing the path with the absolute path to your clone:
{
"mcpServers": {
"google-scholar": {
"command": "python",
"args": ["-m", "google_scholar_mcp.server"],
"env": {
"GS_MIN_DELAY": "5.0",
"GS_MAX_DELAY": "15.0",
"GS_PROXY_TYPE": "none"
}
}
}
}After updating the config, restart Claude Desktop. The Google Scholar tools will appear in the MCP Tools panel.
Integration with Other MCP Clients
Any MCP client (e.g., Cline, Continue, or custom tools) can use this server. Configure the connection to:
Command: python -m google_scholar_mcp.server
Transport: stdioRate Limiting
The server automatically enforces rate limiting between requests to avoid overloading Google Scholar's servers:
- Min Delay (default 5s): Minimum wait between consecutive requests
- Max Delay (default 15s): Maximum wait (randomized to avoid patterns)
- Max Retries (default 3): Retry failed requests up to this many times
These settings help prevent being blocked by Google Scholar. Adjust via environment variables if needed:
export GS_MIN_DELAY=3.0
export GS_MAX_DELAY=10.0
export GS_MAX_RETRIES=5⚠️ IP Blocking Warning
If you exceed Google Scholar's rate limits despite the rate limiter:
- Your IP may be temporarily blocked (usually 24-48 hours)
- All requests will fail with connection errors or 429 responses
- Blocked IPs cannot make requests even with valid proxies on the same IP range
- Repeated violations may trigger permanent blocks or require CAPTCHA solving
Recommended Practices:
1. Never decrease delays below 5 seconds — the defaults are tuned for reliability
2. Use the bulk_search tool instead of rapid sequential searches — it includes built-in delays
3. Add extra buffer during bulk operations — consider setting `GS_MIN_DELAY=10.0` for large jobs
4. Use a proxy service (free proxy or ScraperAPI) to distribute requests across multiple IPs
5. Monitor for 429 errors — if you see them, increase delays immediately and wait before retrying
6. Spread requests over time — don't run 100 queries in 5 minutes, even with delays
Recovery from IP Blocks
If your IP gets blocked:
- Wait 24-48 hours for the temporary block to expire
- Use a proxy — enable `GS_PROXY_TYPE=free` or `scraperapi` to route through different IPs
- Change your network — use a different WiFi/ISP temporarily if possible
- Contact support — for persistent blocks, escalate to Google Scholar support
Choosing Appropriate Delays
| Scenario | GS_MIN_DELAY | GS_MAX_DELAY | Notes |
|---|---|---|---|
| Single searches | 5.0 | 15.0 | Default; safe for occasional queries |
| Bulk operations | 10.0 | 20.0 | Use for batch jobs; prevents rapid-fire requests |
| Heavy load | 15.0 | 30.0 | Use with proxy for large-scale research |
| Aggressive ⚠️ | <5.0 | <10.0 | Not recommended; high risk of IP blocking |
Troubleshooting
"Error: 429 Too Many Requests"
You've hit Google Scholar's rate limit. Solutions:
1. Increase delays: Set higher `GS_MIN_DELAY` and `GS_MAX_DELAY`
2. Use a proxy: Set `GS_PROXY_TYPE=free` or use ScraperAPI
3. Wait and retry: Google Scholar may be temporarily blocking; try again later
"No results found"
- Check your query syntax (Google Scholar supports advanced search operators)
- Ensure the author/paper name is spelled correctly
- Try a simpler query with fewer keywords
"Connection timeout"
- Increase `GS_TIMEOUT` if your network is slow
- Check your internet connection
- Verify proxy settings if using a proxy
Contributing
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/your-feature`)
3. Commit your changes with clear messages
4. Push to your fork
5. Open a pull request
Support
For issues, questions, or feature requests, please open an issue on GitHub.
License
Frequently asked questions
What is google-scholar-search-mcp?
google-scholar-search-mcp is MCP Server to allow AI Assistant search Google Scholar
How do I install google-scholar-search-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is google-scholar-search-mcp open source?
Yes — it is hosted on GitHub at https://github.com/LWaetzig/google-scholar-search-mcp and has 2 stars.
Related MCP tools
Open source implementation and extension of Google Research’s PaperBanana for automated academic figures, diagrams, and research visuals, expanded to new domains like slide generation.
Open-source coding agent memory. Records issues, attempts, fixes and decisions, then warns your agent before it repeats an approach that already failed. Native MCP server for Claude Code, Cursor, Antigravity and Codex. 100% local, no cloud, no telemetry. MIT.
Fast and Accurate Code Search for Agents. Uses 99% fewer tokens than grep+read
Control Gmail, Google Calendar, Docs, Sheets, Slides, Chat, Forms, Tasks, Search & Drive with AI - Comprehensive Google Workspace MCP Server & CLI Tool
Cut AI token costs 95%+ on code exploration. The leading MCP server for precise, symbol-level GitHub code retrieval via tree-sitter AST. Works with Claude Code, Cursor & any MCP client. 313B+ tokens saved.
⚡ 需求分析效率提升 200%!全球首个为 AI 编程时代设计的团队协作 MCP 服务器,自动分析需求自动编写前后端代码,下载切图
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP