Google Scholar MCP server

Registry name: io.github.johnisanerd/google-scholar. Maintained by AlphaOSINT (Apify developer johnvc, GitHub johnisanerd).

What it does

Search papers, get citation formats (MLA, APA, Chicago, BibTeX), author profiles with h-index and i10-index, an author’s publications, per-article citation history and co-author networks.

Academic literature and citation data in one server with six modes. Use it for research assistants, literature reviews and citation lookups.

This server is not self-hosted. It runs on Apify’s hosted MCP endpoint (mcp.apify.com), which starts the Apify Actor johnvc/google-scholar-api for each tool call. You need an Apify account, and every call is billed to that account at the Actor’s prices below. Apify’s own pricing and terms apply to the account.

Charge Price (USD) What it covers
Setup $0.005 One-time setup fee per Actor run. Covers instance setup and API provisioning costs.
Search API query executed $0.015 Fee per query executed against the upstream search API. Charged once per page on paginated modes (search, author_articles) and once per call on single-shot modes (cite, author_profile, author_citation, author_co_authors…

Prices shown are Apify’s free-plan rates; paid Apify plans get lower per-event prices. Apify also bills a token amount per run start and per stored row ($0.00001, $0.00001). Prices change from time to time; the Actor’s page on Apify shows the current ones.

Data source and terms

Google Scholar public pages, collected by scraping. The server returns the data as published at the time of the call. You are responsible for using it in line with the source’s terms and the laws that apply to you. AlphaOSINT is not affiliated with the source.

Endpoint

Setup

Claude Code

claude mcp add --transport http google-scholar "https://mcp.apify.com/?tools=johnvc/google-scholar-api"

VS Code (.vscode/mcp.json)

{
  "servers": {
    "google-scholar": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=johnvc/google-scholar-api"
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "google-scholar": {
      "url": "https://mcp.apify.com/?tools=johnvc/google-scholar-api"
    }
  }
}

Claude Desktop (Settings → Connectors → Add custom connector, paste the URL). Older versions without remote connectors can bridge through mcp-remote in claude_desktop_config.json:

{
  "mcpServers": {
    "google-scholar": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.apify.com/?tools=johnvc/google-scholar-api"
      ]
    }
  }
}

Each client opens an Apify sign-in (OAuth) on first use. To use a token instead, send Authorization: Bearer <APIFY_TOKEN> as a header; create one under Apify Console → Settings → API & Integrations.

Tools

Tool What it does
johnvc--google-scholar-api Runs the Actor with the parameters below and returns the result rows.
get-actor-run Status of a run started by the tool, for long runs.
get-dataset-items Pages through a run’s full output by datasetId when it is larger than the inline result.
get-key-value-store-record Reads a record a run stored, such as a run report.
abort-actor-run Stops a run.

Apify’s endpoint adds the four helper tools automatically whenever an Actor tool is loaded.

Parameters of johnvc--google-scholar-api

Parameter Type Required Default Description
mode string: search, cite, author_profile, author_articles, author_citation, author_… yes "search" Which Google Scholar operation to run. Each mode uses different required fields. Defaults to ‘search’.
q string   "machine learning" Free-text query for mode=search. Supports advanced operators like author:smith or source:nature. Required for mode=search unless ‘cites’ or ‘cluster’ is provided.
cites string     For mode=search only. Article identifier used to look up papers that cite this article. Combine with ‘q’ to search within citing papers. Mutually exclusive with ‘cluster’.
cluster string     For mode=search only. Article cluster identifier used to fetch all versions of a paper. Mutually exclusive with ‘q’ and ‘cites’.
result_id string     For mode=cite only. The result_id (cluster id) of the Google Scholar paper to fetch citation formats for. Obtain from an organic_results entry of mode=search.
author_id string     For mode=author_profile, author_articles, author_citation, and author_co_authors. The Google Scholar author identifier (e.g., ‘LSsXyncAAAAJ’). Obtain from a publication_info.authors entry of mode=search or from a Google…
citation_id string     For mode=author_citation only. The citation_id of the specific article in the author’s profile (obtain from articles[].citation_id of mode=author_articles).
hl string: en, es, fr, de, it, pt …   "en" Language for the user interface and result display. Applies to all modes. Optional.
lr string     For mode=search only. Restrict results to specific languages. Use ‘lang_xx’ codes separated by ‘|’, e.g. ‘lang_en’ or ‘lang_en|lang_fr’.
as_ylo integer     For mode=search only. Earliest publication year to include (e.g., 2010).
as_yhi integer     For mode=search only. Latest publication year to include (e.g., 2024).
scisbd string: 0, 1, 2   "0" For mode=search only. Recency sort: 0 = relevance (default), 1 = abstracts only from the last year sorted by date, 2 = everything from the last year sorted by date.
as_sdt string: 0, 7, 4   "0" For mode=search only. Controls what types of results to include. Common values: ‘0’ exclude patents (default), ‘7’ include patents, ‘4’ case law (US courts).
safe string: active, off     For mode=search only. Safe search filter. Use ‘active’ to enable or ‘off’ to disable.
filter string: 0, 1   "1" For mode=search only. 1 = enable the similar/omitted-results filter (default), 0 = disable it.
as_vis string: 0, 1   "0" For mode=search only. 0 = include citations in results (default), 1 = exclude citations.
as_rr string: 0, 1   "0" For mode=search only. 1 = restrict to review articles, 0 = all article types (default).
sort string: title, pubdate     For mode=author_profile and author_articles. ‘title’ sorts alphabetically, ‘pubdate’ sorts by publication date (newest first). Omit for the default citation-count sort.
max_pages integer   1 For mode=search and author_articles only. Maximum number of result pages to fetch. Use 0 for no limit. Defaults to 1.
num integer     For mode=search (1-20) and mode=author_articles (1-100). Page size for paginated modes. Defaults to 10 for search, 20 for author_articles.

Example arguments:

{
  "helloWorld": 123
}

Output

The tool returns JSON rows with these fields.

Field Type Description
_mode string Mode
_query_index integer Page Number or Call Index
search_parameters object Search Parameters
search_parameters.mode string Mode
search_parameters.q string Query
search_parameters.author_id string Author ID
search_parameters.result_id string Result ID
search_parameters.citation_id string Citation ID
search_parameters.cites string Cites
search_parameters.cluster string Cluster
search_parameters.hl string UI Language
search_parameters.lr string Language Restriction
search_parameters.as_ylo integer Min Year
search_parameters.as_yhi integer Max Year
search_parameters.scisbd string Sort By Date
search_parameters.as_sdt string Search Filter
search_parameters.safe string Safe Search
search_parameters.filter string Filter Similar
search_parameters.as_vis string Include Citations
search_parameters.as_rr string Review Only
search_parameters.sort string Sort
search_parameters.max_pages integer Max Pages
search_parameters.num integer Per Page
search_metadata_status string API Response Status
search_timestamp string Search Timestamp
position integer Position On Page
result_id string Paper Result ID
paper_title string Paper Title
link string Paper URL
snippet string Snippet
case_id string Case ID
publication_info object Publication Info
publication_info.summary string Summary
publication_info.authors array Authors
resources array Resource Links
inline_links object Inline Links
inline_links.cited_by_total integer Cited By Total
inline_links.cited_by_link string Cited By URL
inline_links.cited_by_cites_id string Cites ID
inline_links.versions_total integer Versions Total
inline_links.versions_link string Versions URL
inline_links.versions_cluster_id string Cluster ID
inline_links.related_pages_link string Related Pages URL
inline_links.cached_page_link string Cached Page URL
style string Citation Style
text string Formatted Citation Text
export_links array Bibliography Export Links
author object Author
author.name string Name
author.affiliations string Affiliations
author.email string Email Domain
author.website string Website
author.thumbnail string Photo URL
author.interests array Interests
cited_by_summary object Citation Metrics
cited_by_summary.citations_all integer Citations (All)
cited_by_summary.citations_recent integer Citations (Recent)
cited_by_summary.h_index_all integer h-index (All)
cited_by_summary.h_index_recent integer h-index (Recent)
cited_by_summary.i10_index_all integer i10-index (All)
cited_by_summary.i10_index_recent integer i10-index (Recent)
cited_by_summary.recent_since_year integer Recent Window Start Year
cited_by_graph array Citations Per Year
public_access object Public Access
public_access.link string Mandate URL
public_access.available integer Articles Available
public_access.not_available integer Articles Not Available
co_authors_preview array Co-Authors Preview
articles_preview array Articles Preview
article_position integer Article Position
citation_id string Citation ID
authors string Authors String
publication string Publication Venue
year string Year
cited_by_value integer Cited By Count
cited_by_link string Cited By URL
publication_date string Publication Date
journal string Journal
volume string Volume
issue string Issue

16 more fields are listed in the Actor’s dataset schema on Apify.