Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Google Scholar search results, citation counts and citation export formats, as structured JSON.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
HASDATA_API_KEY, x-api-keyValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"google-scholar": {
"command": "npx",
"args": [
"-y",
"@hasdata/google-scholar-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http google-scholar 'https://mcp.hasdata.com/mcp?apis=google_scholar' --header 'x-api-key: your-value'claude mcp add google-scholar --env HASDATA_API_KEY=your-value -- npx -y @hasdata/google-scholar-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"google-scholar": {
"url": "https://mcp.hasdata.com/mcp?apis=google_scholar",
"headers": {
"x-api-key": "your-value"
}
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"google-scholar": {
"command": "npx",
"args": [
"-y",
"@hasdata/google-scholar-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"google-scholar": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=google_scholar",
"headers": {
"x-api-key": "your-value"
}
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"google-scholar": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hasdata/google-scholar-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
x-api-key secret required HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain hasdata.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: HASDATA_API_KEY, x-api-key
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (1.0.2) reached the registry 43 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A hosted Google Scholar MCP server that gives Claude, Cursor, Windsurf and any other MCP client two read-only Google Scholar tools. Search the literature with Scholar's own operators, year ranges and cited-by lookups, then pull a paper's citation in five styles with its BibTeX and EndNote export links, both as structured JSON, with nothing to host.
It reads public Google Scholar pages that a signed-out visitor can see.
1,000 free credits every month, no card required, which is 100 Scholar calls at the 10-credit rate.
https://mcp.hasdata.com/mcp?apis=google_scholar
An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers about 100 calls a month at the 10-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/google-scholar-mcp on npm and hasdata-google-scholar-mcp on PyPI, shown below.
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
| Field | Value |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=google_scholar |
| Transport | HTTP, streamable |
| Auth header | x-api-key: HASDATA_API_KEY |
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
Claude Code
claude mcp add --transport http google-scholar "https://mcp.hasdata.com/mcp?apis=google_scholar" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/mcp?apis=google_scholar and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/google-scholar-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:
{
"mcpServers": { "google-scholar": { "command": "npx", "args": ["-y", "@hasdata/google-scholar-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }
For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
{
"mcpServers": { "google-scholar": { "command": "uvx", "args": ["hasdata-google-scholar-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }
Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
{
"mcpServers": { "google-scholar": { "url": "https://mcp.hasdata.com/mcp?apis=google_scholar", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
Windsurf
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
{
"mcpServers": { "google-scholar": { "serverUrl": "https://mcp.hasdata.com/mcp?apis=google_scholar", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
VS Code
.vscode/mcp.json in the workspace:
{
"servers": { "google-scholar": { "type": "http", "url": "https://mcp.hasdata.com/mcp?apis=google_scholar", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
Each of these lands on one tool, or on two in sequence when the second needs an id the first returns.
A prompt naming a paper takes two calls, one search to reach its resultId and one citation lookup. A prompt about who cites a paper also takes two, because the second call reuses citedBy.citesId from the first.
| Tool | What it returns |
|---|---|
hasdata_google_scholar_case_law_getScholarCaseLawOpinion | One court opinion with its court, reporter citation, docket numbers, argued and decided dates, and every case it cites with its own caseId. 10 credits a call |
hasdata_google_scholar_cite_getScholarCitationFormats | Formatted citation snippets (MLA, APA, Chicago, Harvard, Vancouver) and reference-manager export links (BibTeX, EndNote, RefMan, RefWorks). 10 credits a call |
hasdata_google_scholar_scholar_getScholarSearchResults | Each organic result with title, link, snippet, publication info (authors with profile links), cited-by count and link, related-articles link, and all-versions count and…. 10 credits a call |
Three tools, 10 credits per successful call.
hasdata_google_scholar_scholar_getScholarSearchResults
A page of Scholar results.
| Parameter | Type | Required | Notes |
|---|---|---|---|
q | string | yes | The query. Scholar operators such as author: and source: work here |
asYlo / asYhi | number | Published from and up to these years | |
start | number | Result offset, where 0 is the first result | |
num | number | Results per page | |
scisbd | number | 1 sorts abstracts by date, 2 sorts everything by date. Omit for relevance | |
cites | string | Find articles citing this one, using a citedBy.citesId | |
cluster | string | Find every indexed version of an article, using a versions.clusterId | |
asSdt | string | Search type, 0,5 for articles, 4 for case law, 0 or 7 for patents | |
asRr | number | 1 returns review articles only | |
asVis | number | 1 excludes citations, 0 includes them | |
hl | string | Interface language, one of 159 | |
lr | array | Restrict to these content languages | |
safe | string | active or off | |
filter | number | 1 keeps Google's similar and omitted result filters, 0 drops them |
Returns searchInformation with totalResults, queryDisplayed and the time Scholar reported, an organicResults array, and pagination.
Each result carries position, resultId, title, link, snippet, a publicationInfo object, a resources array, citedBy, versions, relatedPagesLink and citeHasdataLink.
publicationInfo.authors is the part worth knowing about. Alongside the raw summary line it lists the authors Scholar has profiles for, each with a name, a profile link and an authorId, which is how you follow one author rather than parsing a byline.
citedBy and versions are the two ids that make this tool compose with itself. citedBy.citesId goes back into cites to walk a citation graph, and versions.clusterId goes into cluster to see every indexed copy of the same paper.
{
"position": 1, "resultId": "A7L9JolPKkoJ", "title": "A historical survey of advances in transformer architectures", "link": "https://www.mdpi.com/2076-3417/14/10/4316", "snippet": "… of the Vision Transformer (ViT) opening a new realm of architectures which build … transformer architecture, it becomes pertinent to examine in detail the architecture of the transformer …", "publicationInfo": { "summary": "AR Sajun, I Zualkernan, D Sankalpa - Applied Sciences, 2024 - mdpi.com", "authors": [ { "name": "AR Sajun", "authorId": "k6zWX4EAAAAJ", "link": "https://scholar.google.com/citations?user=k6zWX4EAAAAJ&hl=en" } ] }, "resources": [{ "fileFormat": "Html", "title": "mdpi.com", "link": "https://www.mdpi.com/2076-3417/14/10/4316" }], "citedBy": { "total": 97, "citesId": "5344171358311789059" }, "versions": { "total": 7, "clusterId": "5344171358311789059" } }
hasdata_google_scholar_cite_getScholarCitationFormats
The citation block for one paper.
| Parameter | Type | Required | Notes |
|---|---|---|---|
q | string | yes | A resultId from a search result, not a search query |
hl | string | Interface language |
Returns citations, the formatted string in MLA, APA, Chicago, Harvard and Vancouver, and links, the export URLs for BibTeX, EndNote, RefMan and RefWorks.
{
"citations": [ { "title": "APA", "snippet": "Sajun, A. R., Zualkernan, I., & Sankalpa, D. (2024). A historical survey of advances in transformer architectures. Applied Sciences, 14(10), 4316." } ], "links": [ { "name": "BibTeX", "link": "https://scholar.googleusercontent.com/scholar.bib?q=info:A7L9JolPKkoJ:scholar.google.com/&output=citation..." } ] }
hasdata_google_scholar_case_law_getScholarCaseLawOpinion
One court opinion, with the cases it cites.
| Parameter | Type | Required | Notes |
|---|---|---|---|
caseId | string | yes | A caseId from a case-law search result, not a search query |
hl | string | Interface language |
The id comes from the search tool rather than from a URL. Set asSdt to a case-law court scope, for example 4, and every organic result then carries caseId beside caseHasdataLink.
Returns caseResults with title, name, courtName, cert, and the firstPage and lastPage of the printed opinion. dates holds the argued and decided dates as separate entries, `s
Only the beginning is shown; read the rest in the repo