codeforces-mcp
codeforces-mcp
Ein MCP-Server, der Coding-Agenten Zugriff auf Codeforces-Übungsdaten gibt. Er hilft dir, deine schwachen Tags zu verstehen und Aufgaben zu finden, die du noch nicht gelöst hast.
Der Server ist schreibgeschützt, verwendet die öffentliche Codeforces-API und erfordert keine Codeforces-Authentifizierung. Er funktioniert mit VS Code Copilot, Claude Desktop/Code und anderen MCP-Clients, die stdio-Server unterstützen.
Funktionen
Aufgaben nach Rating und Tag finden, optional unter Ausschluss der bereits gelösten Aufgaben eines Benutzers.
Die Tags eines Handles nach Lösungsrate und durchschnittlichem Rating gelöster Aufgaben einordnen.
Aktuelle Einreichungen anzeigen und nach Status filtern.
Profil und Ratingverlauf eines Benutzers anzeigen.
Bevorstehende Contests auflisten.
Ergebnisse als lesbares Markdown oder strukturiertes JSON zurückgeben.
Antworten des vorgelagerten Dienstes lokal cachezone und eine angemessene Anforderungsrate durchsetzen.
Related MCP server: cf-mcp-orange
Voraussetzungen
Python 3.10 oder neuer
Ein Codeforces-Handle für benutzerspezifische Tools
VS Code mit GitHub Copilot Agent-Modus, Claude oder einen anderen MCP-kompatiblen Client
Es ist kein API-Schlüssel erforderlich.
Installation
Kleanen, Repository und virtuelle Umgebung erstellen:
git clone https://github.com/<owner>/codeforces-mcp.git
cd codeforces-mcp
python -m venv .venvUmgebung aktivieren:
# Windows PowerShell
.\.venv\Scripts\Activate.ps1# macOS/Linux
source .venv/bin/activatePaket installieren:
python -m pip install -e .Für die Entwicklung auch die Test- und Lint-Abhängigkeiten installieren:
python -m pip install -e ".[dev]"Bei der Installation wird der Befehl codeforces-mcp in der virtuellen Umgebung erstellt.
Verwendung mit VS Code Copilot
Das Repository enthält eine Workspace-Konfiguration unter .vscode/mcp.json. Unter Windows kann sie direkt auf das ausgecheckte venv verweisen:
{
"servers": {
"codeforces": {
"type": "stdio",
"command": "E:\\path\\to\\codeforces-mcp\\.venv\\Scripts\\codeforces-mcp.exe"
}
}
}Ersetze den Pfad durch den tatsächlichen Speicherort deines Klons. Verwende für macOS/Linux:
{
"servers": {
"codeforces": {
"type": "stdio",
"command": "/path/to/codeforces-mcp/.venv/bin/codeforces-mcp"
}
}
}In VS Code:
Führe
MCP: Open Workspace Folder Configurationüber die Befehlspalette aus.Füge den Server-Eintrag
codeforceshinzu oder aktualisiere ihn.Öffne Copilot Chat und wechsle in den Agent-Modus.
Öffne das Tools-Menü, starte oder aktiviere den
codeforces-Server und erlaube die Tools.
Frag Copilot dann zum Beispiel:
Finde mir 5 ungelöste DP-Aufgaben mit Rating 1300-1500 für das Handle
3.141f.
Der Server verwendet stdio, daher startet und beendet VS Code ihn nach Bedarf. Du solltest keine zweite Instanz manuell starten, solange Copilot verbunden ist.
Verwendung mit Claude
Aktiviere die virtuelle Umgebung und registriere den Befehl bei Claude Code:
claude mcp add codeforces -- codeforces-mcpWenn sich der Befehl nicht in deinem PATH befindet, verwende die ausführbare Datei direkt:
claude mcp add codeforces -- .\.venv\Scripts\codeforces-mcp.exeDer entsprechende Befehl für macOS/Linux ist:
claude mcp add codeforces -- .venv/bin/codeforces-mcpTools
Alle Tools sind schreibgeschützt und unterstützen response_format, das entweder "markdown" (Standard) oder "json" ist.
codeforces_search_problems
Finde Aufgaben, die einfachsten zuerst. Setze exclude_solved_by auf ein Handle, möchte ich Aufgaben ausblenden, deren Status für dieses Handle OK ist.
Parameter | Standard | Beschreibung |
|
| Mindestrating, von 800 bis 3500 |
|
| Maximalrating, von 800 bis 3500 |
|
| Bis zu 10 Codeforces-Tags |
|
| Für |
|
| Codeforces-Handle, dessen gelöste Aufgaben ausgeschlossen werden |
|
| Anzahl der Ergebnisse, von 1 bis 100 |
|
| Anzahl der übersprungenen Treffer |
|
|
|
Beispielanfrage:
Find 5 unsolved dp problems rated 1300-1500 for 3.141f.Entsprechende Argumente:
{
"min_rating": 1300,
"max_rating": 1500,
"tags": ["dp"],
"exclude_solved_by": "3.141f",
"limit": 5
}codeforces_tag_performance
Berechnet für jeden Tag Versuche, gelöste Aufgaben, Lösungsrate und Ratings für ein Handle. Die Ergebnisse werden nach schwächster Lösungsrate zuerst sortiert. min_attempted verhindert, dass sehr kleine Stichproben das Ranking dominieren.
{
"handle": "3.141f",
"min_attempted": 8,
"response_format": "markdown"
}codeforces_recent_submissions
Liste die neuesten Einreichungen eines Handles auf. Verwende einen Status wie WRONG_ANSWER, TIME_LIMIT_EXCEEDED oder OK, um die Liste zu filtern.
{
"handle": "3.141f",
"verdict": "WRONG_ANSWER",
"limit": 10
}codeforces_user_profile
Zeige das aktuelle Rating, das maximale Rating, den Rang und die Organisation eines Codes an.
{
"handle": "3.141f"
}codeforces_rating_history
Zeige die Ratingänderungen für jeden Contest, die ältesten zuerst. Setze limit, um nur die letzten Contests zurückzugeben.
{
"handle": "3.141f",
"limit": 10
}codeforces_upcoming_contests
Liste Contests auflisten, die noch nicht begonnen haben, der Partner-Test zuerst.
{
"limit": 5
}Ausgabebeispiel
**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 |Das JSON-Format enthält dieselben typischen Daten für Anwendungen, die das Ergebnis programmatisch weiterzuverarbeiten müssen.
Cache und Ratenbegrenzung
Die Codeforces-API sieht etwa eine Anfrage alle zwei Sekunden vor. Der Client erzwingt eine Anforderungsrate und speichert Antworten standardmäßig unter ~/.cache/codeforces-mcp. Die Cache-Lebensdauer richtet sich nach der Änderungshäufigkeit der Daten: sechs Stunden für den Aufgabenkatalog, fünf Minuten für Einreichungen und eine Stunde für Nutzerprofile.
Fehlerbehebung
Server startet nicht
Prüfe, ob die ausführbare Datei in der für deine MCP-Konfiguration verwendeten Umgebung vorhanden ist:
Test-Path .\.venv\Scripts\codeforces-mcp.exe./.venv/bin/codeforces-mcpWenn du in ein anderes venv installiert hast, aktualisiere den Pfad unter command in mcp.json.
Codeforces gibt einen Fehler zurück
Überprüfe die Schreibweise des Handles und versuche es später noch einmal. Der Server leitet aussagekräftige Fehlermeldungen von Codeforces an den Client weiter. Die öffentliche API kann außerdem vorübergehend limitiert oder nicht verfügbar sein.
Entwicklung
Führe vor dem Einreichen einer Änderung die deterministischen Prüfungen aus:
ruff check .
mypy src/
pytest tests/contract -q
python eval/run_eval.pyLive-Tests rufen Codeforces auf und sind optional:
pytest -m live -qLokale Commit-Daten umschreiben
Das Repo enthält rebase-commits-to-july.sh, um alle Commits auf dem aktuellen Branch um den Zeitraum des 14. und 15. Juli 2026 umzuschreiben. Es erstellt vor einer Verlaufsänderung einen Backup-Branch:
bash rebase-commits-to-july.shDer Arbeitsbaum muss sauber sein, und das Skript muss von einem benannten Branch ausgeführt werden. Es schreibt Commit-IDs neu, du solltest es also nicht ohne Koordination auf einem gemeinsamen Branch verwenden. Um den ursprünglichen Abschlusscommit wiederherzustellen, verwende den vom Skript Genannten:
git reset --hard backup/pre-date-rebase-<timestamp>Lies SPEC.md, bevor du das Verhalten der Tools änderst. Es definiert die Verträge und Abnahmekriterien, und zu jedem Kriterium gehört ein Vertragstest.
Projektstruktur
Pfad | Zweck |
| HTTP-Client, Caching und Ratenbegrenzung |
| Typisierte Eingabe- und Ausgabemodelle |
| MCP-unabhängige Tool-Logik |
| MCP-Registrierung und Formatierung |
| Offline-getestete, fixturegestützte Vertragsprüftests |
| Opt-in-Tests auf Abweichungen im oberen Speicherstamm |
| Bewertungsfälle für Agent-Verhalten |
Beiträge
Eröffne ein Issue für einen Bug oder einen gewünschten neuen Verhaltens.
Aktualisiere
SPEC.mdund dazugehörigen Vertragstest bevor du das Verhalten änderst.Halte die Tool-Logik in
src/codeforces_mcp/tools/frei von MCP-Importen.Führe die Entwicklungsprüfungen aus und füge die relevanten Testausgaben in den Pull-Request.
Bitte vermeiden Sie das Committen von virtuellen Umgebungen, Caches, Build-Artefakten oder API-Aufzeichnungen mit personenbezogenen Daten. Die .gitignore des Repository bereits die lokalen Entwicklungsartefakte, die this project exposed.
Weitere int
SPEC.md – Tool-Verträge und Design-Entscheidungen
docs/TECHNICAL-OVERVIEW.md – Architektur und Implementierungsdetails
GXP26
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