paper-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| S2_API_KEY | No | Semantic Scholar API key for higher rate limits |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| paper_get_metadataA | Return comprehensive metadata for an academic paper searched by title. Queries Semantic Scholar first (richest metadata), then falls back to arXiv. Returns JSON with: title, authors, abstract, year, venue, doi, arxiv_id, semantic_scholar_id, citation_count, reference_count, fields_of_study, publication_types, publication_date, is_open_access, open_access_pdf, tldr. Args: params (PaperInput): { paper_title: str } Returns: str: JSON-encoded metadata dict or { "error": "..." }. |
| paper_get_pdfA | Find the best open-access PDF URL for a paper by title. Source priority: Semantic Scholar OA → arXiv PDF → Unpaywall → gomcp browser. Returns JSON with: pdf_url, source, title, year. May include browser_excerpt if gomcp fallback was used. Args: params (PaperInput): { paper_title: str } Returns: str: JSON-encoded result or { "error": "..." }. |
| paper_get_fulltextA | Retrieve the full text of a paper by title (up to 50,000 characters). Fetch order: arXiv HTML5 renderer → gomcp browser → abstract-only fallback. Returns JSON with: title, abstract, tldr, fulltext (str|null), fulltext_length (int), source. Args: params (PaperInput): { paper_title: str } Returns: str: JSON-encoded result or { "error": "..." }. |
| paper_get_citationsA | Return up to 100 papers that cite the given paper (forward citations). Returns JSON with: paper_title, total_citations, returned, citations (list of {title, authors, year, venue, doi, arxiv_id, citation_count}). Args: params (PaperInput): { paper_title: str } Returns: str: JSON-encoded citations or { "error": "..." }. |
| paper_get_referencesA | Return the bibliography of a paper — the papers it cites (backward citations). Returns JSON with: paper_title, total_references, returned, references (list of {title, authors, year, venue, doi, arxiv_id}). Args: params (PaperInput): { paper_title: str } Returns: str: JSON-encoded references or { "error": "..." }. |
| doi_get_metadataA | Resolve a DOI to comprehensive paper metadata from multiple authoritative sources. This is the reverse of paper_get_metadata: given a DOI you already know, retrieve everything about the paper without needing its title. Data is merged from three complementary sources (all queried in parallel):
Returns a merged JSON object with: doi, title, abstract, authors, year, publication_date, venue, publisher, volume, issue, page, type, subjects, issn, funders, license, citation_count, reference_count, is_referenced_by_count, fields_of_study, tldr, publication_types, is_open_access, oa_status, open_access_pdf, oa_locations (list of all known PDF URLs with host_type / version / license), arxiv_id, semantic_scholar_id, sources (list of which APIs responded successfully) Args: params (DoiInput): { doi: str } Accepts bare DOI or full URL, e.g.: "10.1145/3442188.3445922" "https://doi.org/10.1145/3442188.3445922" Returns: str: JSON-encoded metadata dict or { "error": "..." }. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: metadata by DOI, metadata by title, forward citations, full text, PDF URL, and backward citations. The slight overlap between doi_get_metadata and paper_get_metadata is clarified by their different inputs (DOI vs title).
Tool names are somewhat inconsistent: most use 'paper_get_' prefix, but one uses 'doi_get_' instead. While all are readable, the mix of prefixes and the inversion in 'doi_get_metadata' compared to 'paper_get_metadata' breaks the otherwise verb_noun pattern.
With 6 tools, the server is well-scoped for its purpose. Each tool provides a distinct function without unnecessary bloat, and the count is within the ideal 3-15 range.
The tool set covers key operations for a paper metadata server: metadata retrieval (by title and DOI), full text, PDF URL, citations, and references. Minor gaps like search by author or keyword are absent, but the core workflow is supported.