codeforces-mcp
Provides access to Codeforces practice data, enabling tools to search problems by rating and tag, exclude solved problems for a handle, analyze tag performance, review recent submissions and verdicts, view user profiles and rating history, and list upcoming contests.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@codeforces-mcpFind 5 unsolved DP problems rated 1300-1500 for handle 3.141f"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
codeforces-mcp
An MCP server that gives coding agents access to Codeforces practice data. It helps you understand your weak tags and find problems you have not already solved.
The server is read-only, uses the public Codeforces API, and requires no Codeforces authentication. It works with VS Code Copilot, Claude Desktop/Code, and other MCP clients that support stdio servers.
Features
Find problems by rating and tag, optionally excluding a user's solved problems.
Rank a handle's tags by solve rate and average solved rating.
Review recent submissions and filter by verdict.
Inspect a user's profile and rating history.
List upcoming contests.
Return results as readable Markdown or structured JSON.
Cache upstream responses locally and enforce a polite request rate.
Related MCP server: cf-mcp-orange
Requirements
Python 3.10 or newer
A Codeforces handle for user-specific tools
VS Code with GitHub Copilot Agent mode, Claude, or another MCP-compatible client
No API key is required.
Installation
Clone the repository and create a virtual environment:
git clone https://github.com/<owner>/codeforces-mcp.git
cd codeforces-mcp
python -m venv .venvActivate the environment:
# Windows PowerShell
.\.venv\Scripts\Activate.ps1# macOS/Linux
source .venv/bin/activateInstall the package:
python -m pip install -e .For development, install the test and lint dependencies too:
python -m pip install -e ".[dev]"The installation creates the codeforces-mcp command in the virtual environment.
Use With VS Code Copilot
The repository includes a workspace configuration at .vscode/mcp.json. On Windows,
it can point directly to the checked-out venv:
{
"servers": {
"codeforces": {
"type": "stdio",
"command": "E:\\path\\to\\codeforces-mcp\\.venv\\Scripts\\codeforces-mcp.exe"
}
}
}Replace the path with the actual location of your clone. For macOS/Linux, use:
{
"servers": {
"codeforces": {
"type": "stdio",
"command": "/path/to/codeforces-mcp/.venv/bin/codeforces-mcp"
}
}
}In VS Code:
Run
MCP: Open Workspace Folder Configurationfrom the Command Palette.Add or update the
codeforcesserver entry.Open Copilot Chat and switch to Agent mode.
Open the tools menu, start or enable the
codeforcesserver, and allow the tools.
Then ask Copilot something like:
Find me 5 unsolved DP problems rated 1300-1500 for handle
3.141f.
The server uses stdio, so VS Code starts and stops it as needed. Do not start a second copy manually while Copilot is connected.
Use With Claude
After activating the venv, register the command with Claude Code:
claude mcp add codeforces -- codeforces-mcpIf the command is not on your PATH, use the executable directly.
claude mcp add codeforces -- .\.venv\Scripts\codeforces-mcp.exeThe equivalent macOS/Linux command is:
claude mcp add codeforces -- .venv/bin/codeforces-mcpTools
All tools are read-only and support response_format, which is either "markdown"
(the default) or "json".
codeforces_search_problems
Find problems, easiest first. Set exclude_solved_by to hide problems whose verdict
for that handle is OK.
Parameter | Default | Description |
| none | Minimum rating, from 800 to 3500 |
| none | Maximum rating, from 800 to 3500 |
|
| Up to 10 Codeforces tags |
|
| Use |
| none | Codeforces handle whose solved problems are excluded |
|
| Number of results, from 1 to 100 |
|
| Number of matching results to skip |
|
|
|
Example request:
Find 5 unsolved dp problems rated 1300-1500 for 3.141f.Equivalent arguments:
{
"min_rating": 1300,
"max_rating": 1500,
"tags": ["dp"],
"exclude_solved_by": "3.141f",
"limit": 5
}codeforces_tag_performance
Compute per-tag attempts, solves, solve rate, and ratings for a handle. Results are
ordered from weakest solve rate first. min_attempted prevents very small samples
from dominating the ranking.
{
"handle": "3.141f",
"min_attempted": 8,
"response_format": "markdown"
}codeforces_recent_submissions
List a handle's newest submissions. Use verdict such as WRONG_ANSWER,
TIME_LIMIT_EXCEEDED, or OK to filter the list.
{
"handle": "3.141f",
"verdict": "WRONG_ANSWER",
"limit": 10
}codeforces_user_profile
Show a handle's current rating, maximum rating, rank, and organization.
{
"handle": "3.141f"
}codeforces_rating_history
Show contest-by-contest rating changes, oldest first. Set limit to return only the
most recent contests.
{
"handle": "3.141f",
"limit": 10
}codeforces_upcoming_contests
List contests that have not started yet, soonest first.
{
"limit": 5
}Output Example
**5 of 208 matching problems** (offset 0, more available)
| Rating | Problem | Tags | Link |
| --- | --- | --- | --- |
| 1300 | 189A - Cut Ribbon | brute force, dp | https://codeforces.com/problemset/problem/189/A |
| 1300 | 234C - Weather | dp, implementation | https://codeforces.com/problemset/problem/234/C |
| 1300 | 416B - Art Union | brute force, dp, implementation | https://codeforces.com/problemset/problem/416/B |The JSON format contains the same typed data for applications that need to process the result programmatically.
Cache and Rate Limits
The Codeforces API documents approximately one request every two seconds. The client
enforces a rate limit and stores responses in ~/.cache/codeforces-mcp by default.
Cache lifetimes reflect how often data changes: six hours for the problem set, five
minutes for submissions, and one hour for user profiles.
Troubleshooting
Server does not start
Check that the executable exists in the environment used by your MCP configuration:
Test-Path .\.venv\Scripts\codeforces-mcp.exe./.venv/bin/codeforces-mcpIf you installed into a different venv, update the command path in mcp.json.
Codeforces returns an error
Check the handle spelling and try again later. The server passes actionable Codeforces error comments through to the client. The public API can also be temporarily rate limited or unavailable.
Development
Run the deterministic checks before submitting a change:
ruff check .
mypy src/
pytest tests/contract -q
python eval/run_eval.pyLive tests call Codeforces and are opt-in:
pytest -m live -qRewrite Local Commit Dates
The repository includes rebase-commits-to-july.sh for rewriting all commits
on the current branch across 14 and 15 July 2026. It creates a backup branch before
changing history:
bash rebase-commits-to-july.shThe working tree must be clean, and the script must be run from a named branch. It rewrites commit IDs, so do not use it on a shared branch without coordination. To restore the original tip, use the backup branch printed by the script:
git reset --hard backup/pre-date-rebase-<timestamp>Read SPEC.md before changing tool behavior. It defines the contracts and acceptance criteria, and each criterion has a corresponding contract test.
Project Layout
Path | Purpose |
| HTTP client, caching, rate limiting |
| Typed input and output models |
| MCP-independent tool logic |
| MCP registration and formatting |
| Offline fixture-backed contract tests |
| Opt-in upstream drift tests |
| Agent behavior evaluation cases |
Contributing
Open an issue for a bug or proposed behavior change.
Update
SPEC.mdand its contract test before changing behavior.Keep tool logic in
src/codeforces_mcp/tools/free of MCP imports.Run the development checks and include relevant test output in the pull request.
Please avoid committing virtual environments, caches, build output, or API recordings
containing personal data. The repository .gitignore already excludes the local
development artifacts created by this project.
Related Documentation
SPEC.md - tool contracts and design decisions
docs/TECHNICAL-OVERVIEW.md - architecture and implementation details
Maintenance
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
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to participate in CodeChef contests by fetching problems, generating and testing solutions in a secure sandbox, and submitting answers.
- AlicenseAqualityBmaintenanceA complete, all-in-one MCP server for Codeforces, enabling AI assistants to access user profiles, compare users, search problems, get practice recommendations, and more.8MIT
- AlicenseNot gradedqualityAmaintenanceEnables searching and retrieving metadata for Codeforces problems by title, id, rating, or tag, and provides service health status.MIT
- AlicenseNot gradedqualityBmaintenanceA 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
Related MCP Connectors
Search Codeforces problems and inspect public problem metadata through the official Codeforces API.
Search AtCoder problems and fetch public problem statements through MCP.
Codeforces competitive programming users, contests, problems
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Faysal-star/codeforces-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server