Skip to main content
Glama
bbutlerau

paper-search-mcp

by bbutlerau

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoBind address for streamable-http transport. Default: 127.0.0.1.127.0.0.1
MCP_PORTNoPort for streamable-http transport. Default: 8000.8000
MCP_TRANSPORTNoTransport mode: 'stdio' (default) or 'streamable-http'.stdio
MCP_PUBLIC_URLNoExternally-visible base URL. When set, enables OAuth 2.1. Leave unset for local stdio use.
MCP_ALLOWED_HOSTSNoComma-separated Host headers to accept (DNS-rebinding protection). Required when behind a reverse proxy.
MCP_AUTH_STATE_PATHNoWhere to persist OAuth clients/tokens. Default: oauth-state.json beside server.py.oauth-state.json
SEMANTIC_SCHOLAR_API_KEYNoA personal Semantic Scholar API key. Without one, S2 calls fall back to the shared unauthenticated rate limit, which is slower and more prone to 429 errors. All other functionality works unaffected.
PAPER_SEARCH_CONTACT_EMAILNoSent as a mailto: contact to get polite pool (faster, more reliable) treatment from CrossRef and OpenAlex. Required by get_open_access_pdf (Unpaywall rejects requests with no email).

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_crossrefA

Search CrossRef for scholarly works (articles, books, proceedings, etc.).

Args: query: Free-text search query (e.g. title/author/topic keywords). rows: Max number of results to return (1-100). filter: Optional CrossRef filter string, e.g. "from-pub-date:2020-01-01,type:journal-article". sort: Optional sort field: relevance, published, is-referenced-by-count, etc.

get_crossref_workA

Fetch full CrossRef metadata for a single work by its DOI.

Args: doi: The DOI of the work, e.g. "10.1037/0003-066x.59.1.29".

search_ericA

Search the ERIC database (education research literature) via api.ies.ed.gov.

Args: query: Free-text search query, ERIC's Solr-style syntax is supported (e.g. 'title:"reading comprehension" AND author:Smith'). rows: Max number of results to return (1-100). start: Offset for pagination.

get_eric_recordA

Fetch full ERIC metadata for a single record by its ERIC ID (e.g. "EJ1234567").

Args: eric_id: The ERIC document identifier, e.g. "EJ1234567" or "ED123456".

search_semantic_scholarA

Search Semantic Scholar for papers across all disciplines.

Args: query: Free-text search query (title/topic/author keywords). rows: Max number of results to return (1-100).

get_semantic_scholar_paperA

Fetch full Semantic Scholar metadata for a single paper.

Args: paper_id: A Semantic Scholar paper ID, or a prefixed external ID such as "DOI:10.1037/0003-066x.59.1.29", "ARXIV:2106.15928", "PMID:12345678", or "CorpusID:215416146".

search_openalexA

Search OpenAlex for scholarly works across all disciplines.

Args: query: Free-text search query (title/topic/author keywords). rows: Max number of results to return (1-100). filter: Optional OpenAlex filter string, e.g. "from_publication_date:2020-01-01,type:article". sort: Optional sort string, e.g. "cited_by_count:desc" or "publication_date:desc".

get_openalex_workA

Fetch full OpenAlex metadata for a single work.

Args: work_id: An OpenAlex work ID (e.g. "W2741809807"), a bare DOI (e.g. "10.1037/0003-066x.59.1.29"), or a "doi:10.xxxx" string.

get_open_access_pdfA

Find a legal open-access PDF for a DOI via Unpaywall.

Use this after CrossRef/OpenAlex/ERIC turns up a paper you want to read in full. Returns the best OA copy plus any alternatives, or is_open_access false when no free version is known.

Args: doi: The DOI of the work, e.g. "10.1371/journal.pone.0000308".

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct combination of provider and action (search vs. get), with provider names clearly separating them. The only non-pair tool, get_open_access_pdf, has a unique purpose not covered by the others.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern: search_<provider> and get_<provider>_<record> for all four services. The single outlier, get_open_access_pdf, still uses the 'get_' verb style, maintaining overall predictability.

Tool Count5/5

Nine tools is well-scoped for a paper-search server, covering four major scholarly databases plus an OA PDF finder. Every tool provides a distinct, necessary capability without redundancy.

Completeness5/5

The domain is read-only scholarly search/retrieval, and the set covers the full lifecycle: search any provider, fetch detailed records, and obtain accessible full text. No obvious gaps or dead ends for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues