Metadata-Version: 2.4
Name: openreview-mcp
Version: 0.1.0
Summary: MCP server for OpenReview — search submissions, fetch reviews, meta-reviews, rebuttals, and decisions from NeurIPS, ICLR, ACL ARR, COLM, TMLR, and more.
Project-URL: Homepage, https://github.com/OpenCodice-Research/openreview-mcp
Project-URL: Repository, https://github.com/OpenCodice-Research/openreview-mcp
Project-URL: Issues, https://github.com/OpenCodice-Research/openreview-mcp/issues
Author-email: OpenCódice Research <hello@opencodice.org>
License: MIT
License-File: LICENSE
Keywords: academic,acl,iclr,mcp,neurips,openreview,peer-review,research
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.11
Requires-Dist: diskcache>=5.6.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: mcp[cli]>=1.2.0
Requires-Dist: openreview-py>=1.38.0
Requires-Dist: pydantic>=2.6.0
Provides-Extra: analysis
Requires-Dist: numpy>=1.26.0; extra == 'analysis'
Requires-Dist: scikit-learn>=1.4.0; extra == 'analysis'
Provides-Extra: dev
Requires-Dist: mypy>=1.9.0; extra == 'dev'
Requires-Dist: numpy>=1.26.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Requires-Dist: scikit-learn>=1.4.0; extra == 'dev'
Requires-Dist: vcrpy>=6.0.0; extra == 'dev'
Description-Content-Type: text/markdown

# openreview-mcp

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.19758460.svg)](https://doi.org/10.5281/zenodo.19758460)

**MCP server for [OpenReview](https://openreview.net)** — search submissions, fetch reviews, meta-reviews, rebuttals, and decisions from NeurIPS, ICLR, ACL ARR, COLM, TMLR, and any other venue hosted on OpenReview.

Built by [OpenCódice Research](https://github.com/OpenCodice-Research). The design rationale, analysis pipeline, and ICLR 2024 case study are documented in the OpenCódice Technical Report **OC-TR-2026-007** ([Zenodo](https://zenodo.org/records/19758460), DOI [`10.5281/zenodo.19758460`](https://doi.org/10.5281/zenodo.19758460)).

## Why

The academic MCP ecosystem covers arXiv (`academia-mcp`), Semantic Scholar, and HuggingFace, but the richest source of peer-review signal — **OpenReview** — is missing. This server exposes reviews, scores, area-chair decisions, and author rebuttals as MCP tools, enabling:

- **Reviewer-style critique agents** grounded in real reviewer language
- **Bibliography verification** for workshop and ARR venues
- **Weakness pattern analysis** across a venue/year ("what does NeurIPS 2025 tend to reject for?")
- **Meta-review study** for understanding area-chair decision patterns

## Tools

| Tool | Purpose |
|---|---|
| `openreview_list_venues` | List OpenReview venues, filterable by year or series |
| `openreview_venue_stats` | Acceptance rate and score distribution for a venue |
| `openreview_search_submissions` | Search papers by venue/query/author/keywords |
| `openreview_get_submission` | Full metadata + abstract + PDF URL for a submission |
| `openreview_search_by_author` | All submissions by an author profile |
| `openreview_get_reviews` | All reviews (scores, confidence, strengths, weaknesses) |
| `openreview_get_meta_review` | Area-chair meta-review and recommendation |
| `openreview_get_rebuttal` | Author responses to reviewers |
| `openreview_get_decision` | Accept/reject decision and comment |
| `openreview_get_profile` | Author profile, affiliation, publications |
| `openreview_aggregate_weaknesses` | Cluster recurrent reviewer complaints across a venue's rejections (requires `[analysis]` extra) |

## Install

```bash
pip install openreview-mcp
# or, with the weakness-clustering tool enabled:
pip install "openreview-mcp[analysis]"
```

## Signature tool: `openreview_aggregate_weaknesses`

Ask the server to cluster reviewer weakness themes across a venue's rejections:

```text
> Cluster 50 rejected ICLR 2024 submissions by weakness theme (k=10).
```

Returns clusters with top TF-IDF terms, three representative exemplar snippets per
cluster, and the contributing submission ids. The consuming LLM (Claude) labels
each cluster from the evidence, so no fixed taxonomy is baked into the server.

See the [ICLR 2024 case study](examples/iclr2024_case_study.md) for a full
reproducible analysis of 100 rejected submissions, and the launch post
[*openreview-mcp: peer review as a queryable resource for LLMs*](blog/2026-04-24-openreview-mcp.md)
for the design rationale and a narrative tour of the same data.

## Configuration

The server works out of the box for public venues. For access to venues requiring login:

```bash
export OPENREVIEW_USERNAME="you@example.com"
export OPENREVIEW_PASSWORD="..."
```

## Use with Claude Code

```bash
claude mcp add openreview -- openreview-mcp
```

## Use with Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "openreview": {
      "command": "openreview-mcp"
    }
  }
}
```

See [`examples/claude_desktop_config.json`](examples/claude_desktop_config.json) for a full example.

## Run as HTTP server

```bash
openreview-mcp --http --port 8000
```

## Development

```bash
make install    # uv sync with dev extras
make test       # pytest (uses VCR cassettes, no network)
make lint       # ruff + mypy
make serve      # run HTTP server locally on :8000
```

## License

MIT — see [LICENSE](LICENSE).
