Skip to content
Conduit

mcp server

openreview-mcp

paul-crafts/openreview-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "paul-crafts-openreview-mcp": {
      "command": "uvx",
      "args": [
        "openreview-mcp"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 21, 2026

OpenReview MCP Server 🚀

Python Version MCP License: MIT Ruff

A powerful Model Context Protocol server for OpenReview, tailored for Area Chairs (ACs), Reviewers, and Authors. This server allows LLMs to interact with OpenReview venues, manage submissions, track review progress, and communicate with participants.

✨ Features

🏛️ Area Chair Tools

  • Bidding: View papers and submit interest before assignments are made.
  • List Assigned Submissions: Get details of all papers you are chairing.
  • Review Status Reports: Real-time tracking of review progress.
  • Initial Checks: Inspect status, form schemas, and fill/submit desk-rejection initial checks for assigned papers individually or in batch (get_initial_check_status, submit_initial_check, batch_submit_initial_checks).
  • Role-Specific Updates: Tools for ACs, Reviewers, and Authors to fetch recent forum activity (get_ac_updates, etc.).
  • Inbox Summary: A high-density, token-efficient summary of all recent activity across assigned papers (get_inbox_summary).
  • Time-Based Filtering: Use since='1d' or since='2h' to fetch only the latest updates for automated monitoring.
  • Targeted Reminders: Send emails to reviewers with missing assignments.
  • Get Reviewer Emails: Retrieve preferred emails (unmasked via message logs when possible).
  • Safety First: Built-in dry_run and preview modes for all messaging tools.

📝 Reviewer Tools

  • Bidding: Express interest in papers you'd like to review.
  • Assignment Tracking: List all papers assigned to you for review.
  • Discussion Updates: Stay on top of the latest comments and rebuttals in your forums.
  • Deadline Monitoring: Never miss a venue milestone.

✍️ Author Tools

  • Submission Management: List and track your own papers.
  • Feedback Retrieval: Access visible reviews and public comments.

🔍 General Utilities

  • Venue Discovery: Filter active venues or search your entire conference history.
  • Submission Search: Keyword search across titles and abstracts.
  • Server Time Check: Synchronize local clocks and automated agents with OpenReview server time.

📥 Paper & Attachment Downloads

  • Download Submission Attachments: Download author rebuttals, supplementary materials, or any attached files for a single paper via note ID or forum URL (download_submission_attachments).
  • Batch Download Attachments: Download attachments (e.g., all author rebuttals) across all assigned papers for Reviewers or ACs (download_batch_attachments).
  • Batch Download PDFs: Download full paper PDFs for assigned papers (download_batch_pdfs).

🛠️ Installation

# Clone the repository
git clone https://github.com/yourusername/openreview-mcp.git
cd openreview-mcp

# Install in editable mode
pip install -e .

⚙️ Configuration

Set the following environment variables in your MCP client (e.g., Claude Desktop):

  • OPENREVIEW_USERNAME: Your OpenReview email address.
  • OPENREVIEW_PASSWORD: Your OpenReview password.
  • OPENREVIEW_BASEURL: (Optional) Defaults to https://api2.openreview.net.

Claude Desktop Configuration

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "openreview": {
      "command": "python3",
      "args": ["-m", "openreview_mcp.main"],
      "env": {
        "OPENREVIEW_USERNAME": "your_email@example.com",
        "OPENREVIEW_PASSWORD": "your_secure_password"
      }
    }
  }
}

Running as SSE Server (Network Access)

If you want to run the server over the network (e.g., for remote access or debugging), use the sse transport:

# Start on default port 8000
python3 -m openreview_mcp.main sse

# Start on a specific port
python3 -m openreview_mcp.main sse 8080

The server will be available at http://127.0.0.1:8080/sse.

📧 Messaging & Reminders

Communication in OpenReview (especially v2) can be complex due to per-submission invitations and anonymized signatures. This server simplifies this:

  • Automatic Reminders: Use send_reminders(venue_id="..."). It will:
    1. Identify reviewers with missing reviews.
    2. Auto-discover the correct per-submission invitation (e.g., Submission5/-/Message).
    3. Auto-discover your paper-specific anonymized signature (e.g., Area_Chair_xxxx).
    4. Auto-discover the required parentGroup for that submission.
  • Bulk Messaging: Use send_bulk_message for more general communication. It fallbacks to the venue's meta-invitation if no specific one is provided.
  • Dry Runs: Both tools default to dry_run=True. Always check the preview output to verify recipients and signatures before sending live.

📖 Best Practices

  • Security: Always use dry_run=True (default) when using send_bulk_message.
  • Anonymity: The server automatically discovers your anonymized signature in send_reminders. If calling send_bulk_message manually for a specific paper, ensure you use your paper-specific signature group.
  • Unmasking: Use get_reviewer_emails with a venue_id to attempt to unmask emails using historical message logs if the profile is restricted.
  • Automation: Use get_server_time to calibrate timestamps when running automated monitoring (e.g., cron jobs) to avoid missing updates due to clock drift.

🧪 Quality Assurance

We use pytest for testing and ruff for linting and formatting.

# Run tests (requires credentials)
pytest -s tests/test_server.py

# Lint and format
ruff check .
ruff format .

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Built with ❤️ for the research community.

"Buy Me A Coffee"

↑↓ navigate openesc close