Skip to main content
Glama

An MCP server that exposes the Repovive competitive-programming platform to any MCP client (Claude Desktop, Claude Code, IDE extensions, …). Built with FastMCP v3 and httpx.

It provides 93 tools, 10 resources (1 templated), and 8 prompts covering problems, contests, ratings, courses, blog posts, direct messages, notifications, mock-interview info, Vive points, account/profile management, real code submission, contest standings, production problem/contest authoring in Repovive's build editor, and a built-in local judge.

Every tool has been tested end-to-end — read/write tools against the live Repovive API, submission verified with a real Accepted verdict, and the authoring/judge tools by generating full contests and running every reference solution to Accepted.


Contents


Related MCP server: MCP Chef

How it works

  1. Connect your MCP client (Claude Desktop, Claude Code, an IDE) to the server over stdio or HTTP.

  2. Read & author — browse problems and contests, or generate and draft new ones in Repovive's build editor.

  3. Judge locally — verify a solution against its tests with the built-in judge before anything leaves your machine.

  4. Submit / publish — submit for a real verdict, or (with approval) publish a draft to a contest.

What you can do

  • Browse & read problems — list a contest's problems with full statements, constraints, I/O formats, time/memory limits, tags, and sample test cases.

  • Explore contests — list upcoming/ongoing/past contests, view details, check and manage your registrations, get invite links.

  • Submit & track — submit a solution for a real verdict, read your submission history, and pull a contest's ranking, results and announcements.

  • Ratings — page and filter the global leaderboard by country / name / tier.

  • Courses & blog — list courses and posts; manage course editors/metadata (with the right permissions).

  • Community — read/send direct messages, manage conversations and blocks, read and mark notifications.

  • Interviews & Vive — read mock-interview pricing/capacity/sessions; view Vive earn methods and create a Vive checkout link.

  • Account — who am I, profile, update country, search users, sign out.

  • Author for production — create problem drafts in Repovive's editor and fill in statement, tests, model solution, editorial and validator; generate and verify whole rounds; judge solutions locally — see Authoring.

System architecture

Submitting code

repovive_submit_solution submits to POST /api/code/submit and polls until the verdict is final — a real submission recorded on your account. Verify locally first with repovive_judge_solution; Repovive rate-limits submissions to roughly 10 per minute.

repovive_submit_solution(contest_id="<24-hex>", problem_slug="remainder-count",
                         source=..., language="pypy")
#  -> {"submissionId": "...", "status": "Accepted", "passed": 18, "total": 18}

Language ids for submission follow the Judge0 set (python 71, pypy 220, cpp 54, java 62, …), which differs from the problem editor's own ids — the tool maps names for you. repovive_list_my_submissions lists your submission history.

Submission and verdict flow

Notes. The curated problem sets (Classics / FAANG / Quant / Math) are premium content served only through the website, so their problem lists are not available via the API — repovive_list_problem_sets returns their metadata and website URLs; for API-readable problems use contests (repovive_list_contest_problems). A problem like/dislike vote endpoint exists but keys on browser-URL identifiers that can't be resolved reliably from the public API, so it is intentionally not exposed.


Quick start

cd repovive-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e .                       # fastmcp>=3 and httpx

export REPOVIVE_EMAIL="you@example.com"
export REPOVIVE_PASSWORD="your-password"
python -m repovive_mcp                  # stdio transport (or: repovive-mcp)

Then point your MCP client at it (see below) and try repovive_whoami or repovive_list_contests. Prefer containers? docker compose up --build serves the same server over HTTP on :8000 (endpoint /mcp).

Install

Requires Python ≥ 3.10.

cd repovive-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e .          # installs fastmcp>=3 and httpx
# dev extras (pytest): pip install -e ".[dev]"

Run it directly (stdio transport):

export REPOVIVE_EMAIL="you@example.com"
export REPOVIVE_PASSWORD="your-password"
python -m repovive_mcp          # or: repovive-mcp

Configure your MCP client

Add a server entry. Example (Claude Desktop claude_desktop_config.json / Claude Code mcp config):

{
  "mcpServers": {
    "repovive": {
      "command": "python",
      "args": ["-m", "repovive_mcp"],
      "env": {
        "REPOVIVE_EMAIL": "you@example.com",
        "REPOVIVE_PASSWORD": "your-password"
      }
    }
  }
}

If you installed into a virtualenv, point command at that interpreter (e.g. /path/to/.venv/bin/python) or use the repovive-mcp console script.


Tool reference

All tools are prefixed repovive_. Read tools accept response_format (markdown default, or json) where a summary view is useful. The list below is grouped by area; the always-current, auto-generated reference is docs/TOOLS.md.

Tool map

Account & profile (7)

Tool

Description

repovive_whoami

Current account (id, role, premium, Vive, streaks).

repovive_get_my_profile

Profile document (job role, org, socials, location).

repovive_update_my_location

Update profile country (idempotent).

repovive_search_users

Find users by name (for DMs).

repovive_list_my_documents

Your uploaded documents.

repovive_build_version

Deployed build/release info (no auth).

repovive_logout

Invalidate session (auto re-auth next call).

Problems (4)

Tool

Description

repovive_list_problem_sets

Curated sets (Classics/FAANG/Quant/Math) + URLs.

repovive_list_contest_problems

All problems in a contest (summaries or full).

repovive_get_problem

One problem: statement, constraints, limits, samples.

repovive_get_problem_workspace_url

Browser URL to solve/submit a problem.

Contests & ratings (12)

Tool

Description

repovive_list_contests

List contests, filter by upcoming/ongoing/past.

repovive_get_contest

One contest by number or id.

repovive_get_contest_registrations

Your registrations & permissions.

repovive_register_for_contest

Register (normal or virtual).

repovive_get_contest_invite_link

Shareable invite link.

repovive_check_invite_eligibility

Invite eligibility.

repovive_get_contest_permissions

List collaborators (admin).

repovive_set_contest_permission

Grant a role (admin).

repovive_remove_contest_permission

Revoke a role (admin).

repovive_update_contest

Edit contest settings (admin).

repovive_delete_contest

Delete a contest (admin, destructive).

repovive_get_leaderboard

Global ratings leaderboard (paged/filtered).

Standings & results (4)

Tool

Description

repovive_get_contest_ranking

Final standings for a contest.

repovive_get_contest_results

Your per-problem results in a contest.

repovive_get_contest_announcements

Contest announcements/clarifications.

repovive_get_problem_submissions

Submissions for one contest problem.

Submissions (3)

Tool

Description

repovive_submit_solution

Submit a solution and await the verdict (real submission).

repovive_list_my_submissions

Your submission history.

repovive_get_submission

Read a submission's status/verdict by id.

Content — courses & blog (8)

Tool

Description

repovive_list_posts

Blog posts (paged).

repovive_get_post_categories

Blog categories.

repovive_list_courses

Courses with your enrollment.

repovive_get_course_editors

List course editors.

repovive_add_course_editor

Add an editor.

repovive_remove_course_editor

Remove an editor (destructive).

repovive_update_course_title

Update title/description/tags.

repovive_set_course_visibility

Public/private (admin).

Community — notifications & DMs (14)

Tool

Description

repovive_list_notifications

In-app notifications.

repovive_get_unread_notifications_count

Unread count.

repovive_mark_notifications_read

Mark notifications read.

repovive_list_conversations

DM conversations.

repovive_get_conversation_messages

Messages in a conversation.

repovive_send_direct_message

Send a message.

repovive_start_conversation

Start a conversation.

repovive_mark_conversation_read

Mark a conversation read.

repovive_delete_conversation

Delete a conversation (destructive).

repovive_delete_direct_message

Delete a message (destructive).

repovive_get_unread_dm_count

Total unread DMs.

repovive_list_blocked_users

Blocked users.

repovive_block_user

Block a user.

repovive_unblock_user

Unblock a user (destructive).

Interviews & Vive (5)

Tool

Description

repovive_get_interview_prices

Mock-interview prices.

repovive_check_interview_capacity

Interview capacity.

repovive_list_interview_sessions

Your interview sessions.

repovive_get_vive_earn_methods

Ways to earn Vive.

repovive_create_vive_checkout

Create a Vive purchase link (no charge).

Authoring & judge — local (11)

Tool

Description

repovive_list_problem_templates

Built-in problem generators.

repovive_generate_problem

Generate a complete, self-consistent problem.

repovive_new_problem_template

Empty problem skeleton + field reference.

repovive_validate_problem

Validate a problem against the schema.

repovive_judge_solution

Run a solution against tests (local judge).

repovive_available_judge_languages

Languages the host can run.

repovive_build_contest

Generate + validate + judge a whole contest.

repovive_list_house_templates

Generators that match Repovive's published style.

repovive_generate_house_problem

Generate a house-style problem.

repovive_check_house_style

Check a problem against house conventions.

repovive_build_house_round

Assemble & verify a full house-style round.

Problem editor — build sessions (25)

Tool

Description

repovive_build_list_sessions / repovive_build_create_session

List / create problem drafts.

repovive_build_update_problem_info

Title, slug, difficulty, points, limits, tags.

repovive_build_update_statement

Statement, I/O format, constraints.

repovive_build_add_testcases / list_testcases / clear_testcases / delete_testcase

Manage draft test cases.

repovive_build_set_solutions / get_solutions

Model & alternative solutions (language→judgeId).

repovive_build_set_learn_pages

Editorial / learn pages.

repovive_build_set_validator / set_custom_checker

Input validator, custom checker.

repovive_build_set_generator / set_gen_data / delete_generator / update_sources

Generators, gen-data, sources.

repovive_build_prepare_judge_target / run_status / cancel_run

Generate & verify tests.

repovive_build_push_problem

Push a whole generated problem into a draft.

repovive_build_author_complete_problem

Metadata+statement+tests+solution+editorial+validator in one call.

repovive_build_delete_session

Delete a problem draft (destructive).

repovive_build_list_admin_contests / repovive_build_add_to_contest

Publish step (explicit).

Drafts are not visible on the platform until reviewed; publishing is the separate repovive_build_add_to_contest call. Details in docs/AUTHORING.md.

Authoring & local judge

The server can generate complete problems, build full contests, and evaluate them with a local judge — offline, with no writes to the live platform. Every generated problem's expected outputs are computed by running its reference solution, so it is correct by construction; repovive_build_contest(..., verify=True) judges every reference solution and only reports success when all are Accepted.

repovive_build_house_round(title="Repovive Starter Round 8")
  -> {round, verification: {all_passed: true, ...}}   # 7 problems, house-style, all AC

When you're ready to put a draft into Repovive's editor, the build-session tools write everything and leave publishing to you:

Build-session authoring flow

Verified example artifacts live in examples/ (12 problems, 4 contests). Full details in docs/AUTHORING.md. A ready-to-use agent skill is in skills/repovive-contest-dev/.

Repovive house style

The generators and the skill follow Repovive's measured conventions — read from all 98 published problems and 23 contests, and exposed as the repovive://house-style resource:

  • Problems are multi-test (every problem starts with t), use a braced-array input format, a markdown-bullet constraints list, exactly one sample holding several sub-cases, and one explanation paragraph per sub-case. Memory limit 256 MB; time limits 1–2 s.

  • Rounds are 7 problems (A–G) on the 500…3500 points ladder with the difficulty curve easy, easy, medium, medium, medium, hard, hard, 120 minutes, tags drawn from a fixed 12-word vocabulary.

repovive_check_house_style validates a problem against these rules, and repovive_build_house_round assembles a whole conforming round and verifies every problem.

Resources & prompts

Resources (read via URI) — 10, one templated: repovive://me, repovive://profile, repovive://contests, repovive://contests/{contest_id}/problems (templated), repovive://problem-sets, repovive://leaderboard, repovive://posts, repovive://courses, repovive://notifications, repovive://house-style.

Prompts (parameterised workflows) — 8: solve_problem, prepare_for_contest, study_plan, analyze_leaderboard, inbox_triage, build_repovive_round, problemset_contest, author_and_verify_problem.

Example agent session

A typical "solve a real problem" loop chains a handful of tools:

1. repovive_list_contests(status="ongoing")            # find a contest id
2. repovive_list_contest_problems(contest_id=…)        # pick a problem slug
3. repovive_get_problem(contest_id=…, problem_slug=…)  # statement + samples
4. …write a solution…
5. repovive_judge_solution(problem=…, source=…)        # local check → Accepted
6. repovive_submit_solution(contest_id=…, problem_slug=…, source=…, language="pypy")
   # -> {"status": "Accepted", "passed": 18, "total": 18}
7. repovive_get_contest_ranking(contest_id=…)          # see where you land

Solve & problemset flow


How auth works

  • With REPOVIVE_EMAIL + REPOVIVE_PASSWORD, the server logs in on first use, keeping both the JWT bearer token and the auth_token session cookie (some routes need the cookie). It re-authenticates automatically on a 401 and caches the token (REPOVIVE_TOKEN_CACHE) to avoid login rate limits.

  • With REPOVIVE_TOKEN only, it uses the bearer token (cookie-gated routes may not work).

  • The server sends a descriptive User-Agent and standard Origin header, exactly like any first-party API client.

Authentication flow

Deployment

Runs over stdio (local) or HTTP (REPOVIVE_MCP_TRANSPORT=http, endpoint /mcp). Docker, Docker Compose, Kubernetes (kustomize), Helm, OpenTofu/Terraform, Ansible, and Vagrant paths are all provided under deploy/ and the root Docker/Vagrant files.

docker compose up --build            # HTTP on :8000
# or: helm install rv deploy/helm/repovive-mcp --set credentials.email=... --set credentials.password=...
# or: kubectl apply -k deploy/kubernetes   (after creating the secret)

Deployment topology

Full guide: docs/DEPLOYMENT.md. Handy targets in the Makefile (make help) and a Taskfile.yml for go-task (task --list).

Project layout

repovive-mcp/
├── repovive_mcp/          the server package
│   ├── app.py             shared FastMCP instance + RepoviveClient
│   ├── client.py          async httpx client (login, re-auth, token cache)
│   ├── tools_*.py         tool groups (account, contests, submit, build, …)
│   ├── resources.py       MCP resources        prompts.py   MCP prompts
│   ├── authoring.py housestyle.py templates_house.py production.py   local authoring
│   ├── localjudge.py      Judge0-style subprocess judge
│   └── server.py          registers everything; stdio or HTTP
├── scripts/gen_tools_doc.py   regenerates docs/TOOLS.md from the decorators
├── diagrams/generate.py       renders docs/diagrams/*.png via `diagrams`
├── docs/                  architecture, tools, authoring, deployment, api map, security
├── deploy/                docker, kubernetes, helm, opentofu, ansible
├── examples/              verified problems & contests
├── skills/                repovive-contest-dev agent skill
└── tests/                 smoke, offline authoring, and live e2e tests

Documentation

Development & tests

pip install -e ".[dev]"
# Live tests require real credentials and are skipped without them:
REPOVIVE_EMAIL=... REPOVIVE_PASSWORD=... pytest -q
make test-offline        # or: task test:offline  (no credentials needed)
make docs                # regenerate docs/TOOLS.md from the @mcp.tool decorators

tests/test_smoke.py boots the server in-memory (fastmcp.Client(mcp)), lists tools/resources/prompts, and exercises representative read tools plus error handling. docs/TOOLS.md is generated by scripts/gen_tools_doc.py (CI can enforce freshness with --check).

Security notes

  • Credentials come only from environment variables — never hard-code them.

  • Treat the JWT/cookie as secrets; they grant access to your account. The token cache lives outside the repo (REPOVIVE_TOKEN_CACHE, default /tmp).

  • Write tools (submission, DMs, registration, deletes, course/contest admin) perform real actions; their annotations (destructiveHint, etc.) let clients gate them appropriately.

  • Authoring writes drafts; publishing a draft to a live contest is a separate, explicit call. See docs/SECURITY.md.


A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A complete, all-in-one MCP server for Codeforces, enabling AI assistants to access user profiles, compare users, search problems, get practice recommendations, and more.
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A production-ready MCP server for GitHub and competitive programming (Codeforces) that enables AI assistants to fetch user profiles, repository stats, contest history, and personalized problem recommendations.
    MIT

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Git-backed platform for skills, tools, and context for AI agents

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dwin-gharibi/repovive-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server