The most comprehensive Google Scholar MCP server for AI assistants
Installation β’ Quick Start β’ Tools β’ API Reference β’ Contributing
A powerful Model Context Protocol (MCP) server that connects AI assistants like Claude to Google Scholar. Search academic publications, find researchers, analyze citations, download papers, and perform advanced research workflows.
| Tool | Description |
|---|---|
search_publications |
Search for academic papers by topic, author, or date range |
search_author |
Find researchers by name, field, or institution |
get_author_profile |
Get detailed author info including h-index, publications, and coauthors |
get_citations |
Find papers that cite a specific publication |
generate_bibtex |
Generate BibTeX entries for citations |
get_related_articles |
Find related articles for a publication |
get_all_versions |
Get all available versions of a paper |
download_paper |
Download and store papers locally for offline access |
list_papers |
List all locally stored papers |
read_paper |
Read content of a stored paper |
advanced_search |
Advanced search with language, patent, and date filters |
| Prompt | Description |
|---|---|
literature_review |
Structured approach to conducting literature reviews |
find_expert |
Find leading researchers in a specific field |
citation_analysis |
Analyze the citation impact of a publication |
deep_paper_analysis |
Comprehensive multi-step paper analysis workflow |
research_synthesis |
Synthesize research across multiple papers |
methodology_comparison |
Compare methodologies across research papers |
- 11 Powerful Tools: Search, citations, related articles, versions, downloads & more
- Advanced Search: Filter by language, patents, review articles, and more
- Local Paper Storage: Download and cache papers for offline access
- Intelligent Caching: Reduce redundant requests with TTL-based caching
- Rich Metadata: Abstracts, citation counts, h-index, coauthors, and more
- Rate Limiting: Built-in protection against Google Scholar blocking
- Error Handling: Graceful handling of rate limits and CAPTCHAs
- BibTeX Support: Generate proper academic citations
- Advanced Prompts: Pre-built workflows for deep paper analysis and research synthesis
npx -y @smithery/cli install @dihannahdi/google-scholar-mcp --client claudenpm install -g @dihannahdi/google-scholar-mcpgit 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 devAdd to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %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"
}
}
}
}Or using npx:
{
"mcpServers": {
"google-scholar": {
"command": "npx",
"args": ["-y", "@dihannahdi/google-scholar-mcp"]
}
}
}| Variable | Description | Default |
|---|---|---|
SCHOLAR_STORAGE_PATH |
Path to store downloaded papers | ~/.google-scholar-mcp/papers |
SCHOLAR_RATE_LIMIT_MS |
Rate limit between requests (ms) | 3000 |
SCHOLAR_CACHE_ENABLED |
Enable response caching | true |
SCHOLAR_CACHE_TTL_MS |
Cache time-to-live (ms) | 3600000 (1 hour) |
SCHOLAR_PROXY_URL |
Optional proxy URL | - |
SERPAPI_KEY |
SerpAPI key for reliable fallback (get free key) | - |
SCHOLAR_USE_SERPAPI_FALLBACK |
Enable automatic SerpAPI fallback when blocked | false |
SCHOLAR_ROTATE_USER_AGENT |
Rotate user agents to avoid detection | true |
SCHOLAR_ENABLE_JITTER |
Add random delays between requests | true |
SCHOLAR_JITTER_MAX_MS |
Maximum jitter delay in milliseconds | 2000 |
Google Scholar aggressively blocks automated access. To ensure 100% uptime, we recommend using SerpAPI as a fallback:
- Get a free API key at serpapi.com (100 free searches/month)
- Set environment variables:
export SERPAPI_KEY="your_serpapi_key" export SCHOLAR_USE_SERPAPI_FALLBACK="true"
How it works:
- The server first attempts direct scraping (free, but may be blocked)
- If blocked, it automatically falls back to SerpAPI (reliable, paid)
- Results are normalized to the same format regardless of source
Benefits of SerpAPI:
- β 100% uptime guarantee
- β No CAPTCHA or blocking issues
- β Handles all anti-bot measures
- β Rich structured data
- β Author profiles, citations, related articles
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"
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"
Search Google Scholar for academic publications.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| query | string | Yes | - | Search query |
| author | string | No | - | Filter by author name |
| yearStart | number | No | - | Start year for filter |
| yearEnd | number | No | - | End year for filter |
| numResults | number | No | 10 | Number of results (1-20) |
| sortBy | string | No | "relevance" | "relevance" or "date" |
Returns:
- List of publications with title, authors, abstract, venue, year, citation count, URLs
Search for academic researchers.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| query | string | Yes | - | Author name or keywords |
| organization | string | No | - | Filter by institution |
| numResults | number | No | 10 | Number of results (1-20) |
Returns:
- List of author profiles with name, affiliation, interests, citation count
Get detailed author information.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| scholarId | string | Yes | Google Scholar author ID |
Returns:
- Complete profile with publications, h-index, i10-index, coauthors, citation history
Get papers that cite a specific publication.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| clusterId | string | Yes | - | Google Scholar cluster ID |
| numResults | number | No | 10 | Number of results (1-20) |
| sortBy | string | No | "relevance" | "relevance" or "date" |
Returns:
- List of citing publications with details
Generate a BibTeX citation entry.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Publication title |
| authors | string[] | Yes | List of author names |
| year | number | No | Publication year |
| venue | string | No | Journal/conference name |
| url | string | No | Publication URL |
Returns:
- Formatted BibTeX entry
Find related articles for a given publication.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| clusterId | string | Yes | - | Google Scholar cluster ID |
| numResults | number | No | 10 | Number of results (1-20) |
Returns:
- List of related publications with metadata
Get all available versions of a paper.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| clusterId | string | Yes | - | Google Scholar cluster ID |
| numResults | number | No | 10 | Number of results (1-20) |
Returns:
- List of all versions (preprint, published, etc.)
Download and store a paper locally.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL to the paper (PDF, arXiv, etc.) |
| filename | string | Yes | Name for the saved file |
| metadata | object | No | Optional metadata (title, authors, year) |
Returns:
- Path to stored file and confirmation
List all locally stored papers.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| pattern | string | No | Optional filter pattern |
Returns:
- List of stored papers with metadata
Read the content of a stored paper.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| filename | string | Yes | Name of the stored file |
Returns:
- Paper content (text format)
Advanced search with additional filters.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| query | string | Yes | - | Search query |
| exactPhrase | string | No | - | Exact phrase to match |
| withoutWords | string | No | - | Words to exclude |
| author | string | No | - | Filter by author |
| source | string | No | - | Filter by source/journal |
| yearStart | number | No | - | Start year filter |
| yearEnd | number | No | - | End year filter |
| language | string | No | "en" | Language code |
| includePatents | boolean | No | true | Include patents in results |
| includeCitations | boolean | No | true | Include citations |
| numResults | number | No | 10 | Number of results |
Returns:
- List of publications matching criteria
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-
Rate Limiting: Google Scholar may rate-limit or block requests. The server includes delays and retries, but heavy usage may trigger blocks.
-
CAPTCHA: Excessive requests may trigger CAPTCHA challenges. If this happens, wait a few minutes before retrying.
-
No Official API: This server scrapes Google Scholar's web interface, which may break if Google changes their HTML structure.
-
Results Limited: Maximum 20 results per request to stay within reasonable limits.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Model Context Protocol for the MCP SDK
- Scholarly for inspiration
- The academic community for making research accessible
For issues and questions:
- Open an issue on GitHub
- Check the MCP documentation
Made with β€οΈ for the research community