@cyanheads/arxiv-mcp-server

v0.1.13 pre-1.0

MCP server for arXiv academic paper search, metadata retrieval, and full-text reading.

public 4 tools 2 resources protocol 2025-11-25
@cyanheads/arxiv-mcp-server
{
  "mcpServers": {
    "arxiv-mcp-server": {
      "command": "bunx",
      "args": [
        "@cyanheads/arxiv-mcp-server@latest"
      ]
    }
  }
}
{
  "mcpServers": {
    "arxiv-mcp-server": {
      "type": "http",
      "url": "https://arxiv.caseyjhand.com/mcp"
    }
  }
}
claude mcp add --transport http arxiv-mcp-server https://arxiv.caseyjhand.com/mcp
curl -X POST https://arxiv.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

4

Get full metadata for one or more arXiv papers by ID. Use when you have known IDs from citations, prior search results, or memory.

Invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "arxiv_get_metadata",
    "arguments": {
      "paper_ids": "<paper_ids>"
    }
  }
}
Input schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "paper_ids": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "description": "Single arXiv paper ID (e.g., \"2401.12345\" or \"2401.12345v2\")."
        },
        {
          "minItems": 1,
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "description": "Array of up to 10 arXiv paper IDs for batch lookup."
        }
      ],
      "description": "arXiv paper ID or array of up to 10 IDs. Format: \"2401.12345\" or \"2401.12345v2\" (with version). Also accepts legacy IDs like \"hep-th/9901001\"."
    }
  },
  "required": [
    "paper_ids"
  ],
  "additionalProperties": false
}

Fetch the full text of an arXiv paper as HTML, with automatic fallback if the primary source is unavailable.

Invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "arxiv_read_paper",
    "arguments": {
      "paper_id": "<paper_id>"
    }
  }
}
Input schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "paper_id": {
      "type": "string",
      "minLength": 1,
      "description": "arXiv paper ID (e.g., \"2401.12345\" or \"2401.12345v2\")."
    },
    "max_characters": {
      "default": 100000,
      "description": "Maximum characters of paper body content to return. Defaults to 100,000. HTML head/boilerplate is stripped before counting. When truncated, a notice and total character count are included.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "paper_id",
    "max_characters"
  ],
  "additionalProperties": false
}

List arXiv category codes and names. Useful for discovering valid category filters for arxiv_search.

Invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "arxiv_list_categories",
    "arguments": {}
  }
}
Input schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "group": {
      "description": "Filter by top-level group (e.g., \"cs\", \"math\", \"physics\"). Returns all categories if omitted.",
      "type": "string",
      "enum": [
        "cs",
        "econ",
        "eess",
        "math",
        "physics",
        "q-bio",
        "q-fin",
        "stat"
      ]
    }
  },
  "additionalProperties": false
}

Resources

2