MCP server that gives Claude deep, structured access to the Codeforces competitive programming platform
Codeforces-mcp has 20 well-named tools with consistent verb_noun patterns (get_*, search_*, build_*). All tools have descriptions (avg ~120 chars, within baseline 34-392 range). Input schemas are present and typed via Zod. However, parameter descriptions are sparse, many lack detail on format, constraints, or valid ranges. Output schemas are not documented in the source. Error handling is basic (success/error wrapper) with no recovery guidance. No tool annotations (readOnlyHint, etc.). The server is domain-focused and coherent, but lacks the depth expected for production-grade agent tooling.
Build a personalized virtual contest with problems matched to user's level.
Compare multiple Codeforces users side-by-side with tag solve rate differences
Analyze performance across all rated contests with division breakdown.
Get standings for a specific contest, optionally filtered by handles
Get the most recently attempted unsolved problem with details.
Fetch a specific problem by contest ID and index (e.g., 1234A)
Find problems solved by friends that you haven't — discover quality problems from your peers.
Output schemas not documented. No tool returns a documented schema showing field types, structure, or pagination. LLMs cannot plan downstream calls or extract data reliably.
Parameter descriptions lack format/constraint details. E.g., 'limit' has no min/max bounds; 'verdict' has no enum of valid values (OK, WA, TLE, etc.); 'difficulty' in build_virtual_contest lists values in description but not as enum.
No error recovery guidance. Error responses are generic {error: string}. No indication of whether errors are retryable, user-fixable, or fatal. No suggestions for next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Get a Codeforces user's full profile including rating, rank, and solve count.
Get a structured progress report over a time period with streaks and comparisons.
Get a user's full rating change history across all contests.
Get personalized problem recommendations based on rating, weaknesses, and solve history.
Generate a structured weekly plan to reach a target rating with problem recommendations.
Get all problems a user has ever solved, deduplicated.
Get a user's submission history, optionally filtered by verdict.
Get problems the user has attempted but never solved.
List upcoming Codeforces contests within a given number of days
Get problems from a contest that the user didn't solve — great for upsolving practice.
Get a user's contest participation history with solve counts and rating changes.
Analyze submission history to find weak tags, rating ceiling/wall, trends, and consistency.
Search problems by tags, rating range, and solved status. Excludes solved problems by default if CF_HANDLE is set.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. All tools are read-only (safe), but this is not declared in the schema.
Result limits not enforced or documented. search_problems, get_submissions, and others accept 'limit' but no cap is stated. Large result sets risk context window exhaustion.