Metadata-Version: 2.4
Name: research-papers-mcp
Version: 1.0.0
Summary: MCP server for research paper discovery, citation analysis, and trend detection across arXiv, PubMed, and Semantic Scholar
Project-URL: Homepage, https://bsozudogru.com
Project-URL: Repository, https://github.com/barissozudogru/deep-research-digest
Project-URL: Issues, https://github.com/barissozudogru/deep-research-digest/issues
Project-URL: Live Demo, https://huggingface.co/spaces/barissozudogru/research-papers-mcp
Author-email: Baris Sozudogru <barissozudogru@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: academic-search,arxiv,bibtex,citations,federated-search,mcp,mcp-server,pubmed,research-papers,semantic-scholar
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: fastmcp<4,>=2.0.0
Requires-Dist: feedparser<7,>=6.0
Requires-Dist: requests<3,>=2.31
Requires-Dist: sqlalchemy<3,>=2.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Description-Content-Type: text/markdown

<div align="center">

# research-papers-mcp

**Research paper intelligence for LLMs**

Search, analyze, and track 200M+ papers from arXiv, PubMed, and Semantic Scholar -- right from Claude, Cursor, or any MCP client.

[![PyPI](https://img.shields.io/pypi/v/research-papers-mcp?style=flat-square&color=blue)](https://pypi.org/project/research-papers-mcp/)
[![Python](https://img.shields.io/pypi/pyversions/research-papers-mcp?style=flat-square)](https://pypi.org/project/research-papers-mcp/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)
[![Tests](https://img.shields.io/github/actions/workflow/status/barissozudogru/deep-research-digest/tests.yml?style=flat-square&label=tests)](https://github.com/barissozudogru/deep-research-digest/actions)

**Live demo:** <https://huggingface.co/spaces/barissozudogru/research-papers-mcp>

</div>

---

- **Federated Search** -- Query arXiv, PubMed, and Semantic Scholar in a single call
- **Self-Growing Corpus** -- Local SQLite cache grows with every search, enabling richer analysis over time
- **Zero Config** -- No database servers, no API keys required, no background workers
- **10 Research Tools** -- From paper discovery to real citation graphs to BibTeX export

## Quick Start

```bash
pip install research-papers-mcp
```

Add to your MCP client config (Claude Desktop, Claude Code, Cursor, etc.):

```json
{
  "mcpServers": {
    "research-papers": {
      "command": "research-papers-mcp",
      "args": []
    }
  }
}
```

That's it. Start asking your AI about research papers.

> [!TIP]
> No API keys are required to get started. All three sources work without authentication.
> A Semantic Scholar API key is optional and only needed for higher rate limits.

## See It in Action

> **You**: Find recent papers on transformer efficiency and model compression
>
> **Claude** *(using `search_papers`)*: Found 34 papers across arXiv and Semantic Scholar.
> 12 new papers cached. Here are the top results by impact score...
>
> **You**: What's trending in this area?
>
> **Claude** *(using `get_trending_topics`)*: Based on your cached corpus of 847 papers:
> - **knowledge distillation** -- emerging (+94%)
> - **model pruning** -- stable
> - **quantization** -- emerging (+67%)
>
> **You**: Find papers similar to the knowledge distillation one
>
> **Claude** *(using `find_similar_papers`)*: Found 8 similar papers via SPECTER2 embeddings:
> 1. "DistilBERT, a distilled version of BERT"
> 2. "TinyBERT: Distilling BERT for NLU"
> ...
>
> **You**: Who cites the original knowledge distillation paper?
>
> **Claude** *(using `get_paper_citations`)*: Found 1,247 citations (89 influential).
> Top citing papers include...
>
> **You**: Export those as BibTeX
>
> **Claude** *(using `export_bibtex`)*: Here are 12 BibTeX entries ready for your LaTeX document.

## Tools

### Discovery

| Tool | Description |
|:-----|:------------|
| `search_papers` | Federated search across arXiv, PubMed, and Semantic Scholar |
| `search_cached_papers` | Fast local search with date, source, and citation filters |
| `get_paper_details` | Full metadata for any cached paper |

### Analysis

| Tool | Description |
|:-----|:------------|
| `get_paper_citations` | Real citation and reference data from Semantic Scholar |
| `find_similar_papers` | SPECTER2 semantic similarity with TF-IDF fallback |
| `get_author_profile` | Publication frequency, top topics, and collaborators |

### Intelligence

| Tool | Description |
|:-----|:------------|
| `get_trending_topics` | Detect emerging and declining research topics over time |
| `generate_literature_review` | Structured review with subtopics and consensus analysis |
| `export_bibtex` | Export papers as BibTeX for LaTeX documents |
| `get_cache_stats` | Cache size, source breakdown, and date range |

### Resources

| URI | Description |
|:----|:------------|
| `papers://stats` | Database statistics (total papers, by source, date range) |
| `papers://fields` | Research fields in the corpus with paper counts |

## How It Works

```
                    search_papers
                         |
          +--------------+--------------+
          |              |              |
       arXiv          PubMed    Semantic Scholar
          |              |              |
          +--------------+--------------+
                         |
                    SQLite Cache
                  (grows over time)
                         |
          +--------------+--------------+
          |              |              |
      Trends       Similarity      Citations
      Detection    (SPECTER2)     (S2 API)
```

1. **Search** -- `search_papers` fetches from external APIs and caches results locally
2. **Analyze** -- Citation data from Semantic Scholar API, similarity via SPECTER2 embeddings (with TF-IDF fallback), trend detection on cached corpus
3. **Grow** -- The cache accumulates with every search, enabling richer trend detection and analysis

No PostgreSQL, Redis, or background workers. Everything runs in a single process with zero-config SQLite.

<details>
<summary><strong>Transport options</strong></summary>

```bash
# stdio (default -- for MCP clients like Claude Desktop)
research-papers-mcp

# SSE (for web-based MCP clients)
research-papers-mcp --transport sse --port 8080

# Streamable HTTP (for team/remote deployment)
research-papers-mcp --transport streamable-http --port 8080
```

</details>

## Configuration

| Variable | Description | Required |
|:---------|:------------|:--------:|
| `SEMANTIC_SCHOLAR_API_KEY` | Higher rate limits for Semantic Scholar API | No |
| `RESEARCH_MCP_CACHE_DIR` | Custom cache directory (default: `~/.research-papers-mcp/`) | No |

## Development

```bash
git clone https://github.com/barissozudogru/deep-research-digest.git
cd deep-research-digest
pip install -e ".[dev]"
pytest
```

See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

## License

[MIT](LICENSE)
