Papers

Scholarly paper search with real citations for AI assistants, over MCP.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
88%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~948Tokens (tool definitions)
~1.6 KBTypical response size
Moderate attention impact (0.74% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "papers": {
      "url": "https://papers-mcp.vercel.app/mcp"
    }
  }
}

Remote endpoints

https://papers-mcp.vercel.app/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_papers(query, year_from, year_to, field, open_access, ...)

Search peer-reviewed and preprint records by question or keywords. Filters: year_from, year_to, field, open_access, and source (openalex, semantic_scholar, pubmed, crossref, arxiv, or all). Returns only works those APIs returned, each with a source link and an identifier. An empty list means the APIs returned nothing. Do not invent papers to fill a gap.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 400,
      "description": "Question or keywords"
    },
    "year_from": {
      "type": "integer",
      "minimum": 1800,
      "maximum": 2100
    },
    "year_to": {
      "type": "integer",
      "minimum": 1800,
      "maximum": 2100
    },
    "field": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80,
      "description": "Subject area, such as Medicine or Computer Science"
    },
    "open_access": {
      "type": "boolean"
    },
    "source": {
      "type": "string",
      "enum": [
        "openalex",
        "semantic_scholar",
        "pubmed",
        "crossref",
        "arxiv",
        "all"
      ],
      "description": "Index to search. Defaults to all, which mixes sources."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Maximum papers to return. Defaults to 8."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {}
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_paper(identifier)

Fetch one paper's title, authors, year, venue, and abstract by DOI, PMID, arXiv id, or OpenAlex work id. Metadata comes from the API that resolved the identifier. If no source returns a record, say so. Do not guess the abstract.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "minLength": 2,
      "maxLength": 300,
      "description": "DOI, PMID, arXiv id, or OpenAlex work id"
    }
  },
  "required": [
    "identifier"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {}
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_related_papers(identifier, relation, limit)

List papers that cite a work (relation cited_by) or papers that work cites (relation references). Every row is an API hit. An empty list means the API returned none, not that none exist.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "minLength": 2,
      "maxLength": 300
    },
    "relation": {
      "type": "string",
      "enum": [
        "cited_by",
        "references"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "identifier",
    "relation"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {}
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢format_citation(identifier, style)

Format a real paper in APA, MLA, Chicago author-date, or BibTeX using metadata fetched for the identifier. Titles are kept as the source provided them. Author particles may need a human check because display names are split mechanically. If the paper cannot be resolved, do not hand-write a citation.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "minLength": 2,
      "maxLength": 300
    },
    "style": {
      "type": "string",
      "enum": [
        "apa",
        "mla",
        "chicago",
        "bibtex"
      ]
    }
  },
  "required": [
    "identifier",
    "style"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {}
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools