Skip to main content
Glama
candenizkocak

Research Papers MCP Server

README.md
# Research Papers MCP Server

[![smithery badge](https://smithery.ai/badge/@candenizkocak/research-papers-mcp-server)](https://smithery.ai/server/@candenizkocak/research-papers-mcp-server)

This project is a Model Context Protocol (MCP) server written in Python that acts as an intelligent interface to academic paper repositories, particularly the arXiv API. It allows Large Language Models (LLMs) like Claude to search for and retrieve academic papers.

## Features

This server exposes a suite of tools to the LLM, enabling it to:

-   **`search_papers`**: Perform a general topic search for papers from sources like arXiv.
-   **`find_papers_by_author`**: Find recent papers by a specific author from sources like arXiv.
-   **`get_latest_from_category`**: Browse the newest submissions in a given arXiv category (e.g., `cs.LG`).
-   **`get_paper_by_id`**: Get full details for a single paper by its arXiv ID.
-   **`get_papers_by_ids`**: Efficiently get details for a list of papers by their arXiv IDs.

## Requirements

-   Python 3.10+
-   [uv](https://github.com/astral-sh/uv) (for environment and package management)
-   An MCP Host like [Claude for Desktop](https://www.claude.ai/download)

## Setup and Installation

### Installing via Smithery

To install this research papers MCP server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@candenizkocak/research-papers-mcp-server):

```bash
npx -y @smithery/cli install @candenizkocak/research-papers-mcp-server --client claude
```

### Manual Installation

1.  **Clone the repository:**
    ```bash
    git clone https://github.com/candenizkocak/research-papers-mcp-server.git research-papers-mcp-server
    cd research-papers-mcp-server
    ```

2.  **Create a virtual environment and install dependencies:**
    ```bash
    uv venv
    source .venv/bin/activate  # On Windows, use .venv\Scripts\activate
    uv sync
    ```
    *(Note: `uv sync` will install dependencies from the `pyproject.toml` file).*

## Usage with Claude for Desktop

1.  Find the absolute path to your `research-papers-mcp-server` directory.

2.  Open your Claude for Desktop configuration file (`claude_desktop_config.json`):
    -   **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
    -   **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

3.  Add the server configuration, replacing the placeholder with your absolute path:

    ```json
    {
      "mcpServers": {
        "research-papers": {
          "command": "uv",
          "args": [
            "--directory",
            "/ABSOLUTE/PATH/TO/research-papers-mcp-server",
            "run",
            "arxiv_server.py"
          ]
        }
      }
    }
    ```

4.  Completely restart Claude for Desktop.

## Example Prompts

-   **General Search**: "Find papers about 'mixture of experts models'."
-   **Author Search**: "What are the most recent papers by Geoffrey Hinton?"
-   **Category Search**: "What's new in the cs.LG category on arXiv?"
-   **Single ID Lookup**: "Tell me about arXiv paper 1706.03762."
-   **Multiple ID Lookup**: "Give me details for papers 2307.09288 and 2203.02155."

## Acknowledgements

Thank you to arXiv for use of its open access interoperability.

## Compliance Notes

Developers and users of this project are responsible for familiarizing themselves with the official [arXiv API Terms of Use](https://arxiv.org/help/api/tou.html), [API Basics](https://arxiv.org/help/api/basics.html), and [API User Manual](https://arxiv.org/help/api/user-manual.html) to ensure full compliance with arXiv's policies, including any rate limits or usage restrictions.

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation4/5

Tools are mostly distinct: search, get by ID, get by author, get latest by category, and batch get by IDs. There is some overlap between search_papers and find_papers_by_author (since search can query by author), and between get_paper_by_id and get_papers_by_ids (single vs multiple), but descriptions help clarify the intended use.

Naming Consistency4/5

Names follow a verb-first snake_case pattern (search, get, find). However, there is inconsistency in how the object is specified: some include 'papers' (search_papers, get_papers_by_ids), one uses the singular 'paper' (get_paper_by_id), and one omits the object entirely (get_latest_from_category). This minor variation is still readable and predictable.

Tool Count5/5

With 5 tools, the set is well-scoped for a research paper retrieval server. Each tool addresses a distinct access pattern (search, single lookup, author lookup, category listing, batch retrieval) without unnecessary bloat.

Completeness4/5

The core retrieval needs are covered: general search, paper details, author-based lookup, category-based listing, and batch retrieval. Minor gaps exist, such as no way to list all papers in a category (only latest) or search by title specifically, but search_papers can work around these. Overall, the surface is reasonably complete for a read-only academic paper API.

Maintenance

ActivityInactive
ResponsivenessNo issues