关于 Codeforces
Codeforces 是面向竞赛编程用户及相关数据查询场景的 MCP 服务,通过 Codeforces 公开只读 API 提供用户、比赛、题集、提交和博客数据。无需 API 密钥,并支持在服务端分页查看比赛排名。
主要功能
- 01查询用户资料与评分历史
- 02查看用户近期提交
- 03列出比赛并查询排名
- 04检索题集与近期统计
- 05读取近期动态和博客文章
适用场景
- 01查看用户的评分变化与提交记录
- 02查找比赛排名和题目列表
- 03按标签浏览题集及提交统计
MCP 相关
向 MCP 客户端提供 Codeforces 用户、比赛、题集、提交、动态和博客查询工具。可通过 Pipeworx 远程连接,或作为仅提供本项目工具的本地 stdio MCP 服务运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/codeforces/mcpclaude mcp add --transport http pipeworx-io-codeforces https://gateway.pipeworx.io/codeforces/mcp{"mcpServers":{"pipeworx-io-codeforces":{"type":"http","url":"https://gateway.pipeworx.io/codeforces/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-codeforces":{"type":"http","url":"https://gateway.pipeworx.io/codeforces/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-codeforces":{"type":"http","url":"https://gateway.pipeworx.io/codeforces/mcp"}}}{"mcpServers":{"pipeworx-io-codeforces":{"serverUrl":"https://gateway.pipeworx.io/codeforces/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@pipeworx/codeforces
Codeforces 公开读取 API MCP — 面向竞赛编程用户、比赛、题目和提交。无需密钥。
属于 Pipeworx — 一个将 AI Agent 连接到 1875+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也未由其发布。
工具
user(handles[])— 按用户名查询用户资料(最多 10k)user_rating(handle)— 用户的完整 рейтин?历史user_status(handle, count?)— 用户近期的提交记录contest_list(gym?)— 所有比赛(常规赛或 gym)contest_standings(contest_id, handles?, from?, count?)— 一场比赛的最终积分榜和题目列表problemset(tags?, problemset_name?)— 题集和近期提交统计recent_actions(max_count?)— 全局近期操作动态blog_entry_view(blog_id)— 按 ID 查看完整博客条目
积分榜分页在此处处理,而非上游
Codeforces 会拒绝公开积分榜请求中的 from、count 和 handles,并返回
HTTP 400,错误信息为 "Non-gym contest standings for non-admin users are available only
via anonymous GET requests with no extra parameters"。它只接受不带其他参数的
?contestId=<id> 请求,并返回完整积分榜(比赛 1000 为 2.7 MB,比赛 2000 为
14 MB)。
因此,contest_standings 会流式处理该响应,并在此处进行切片:from/count
用于分页,handles 用于筛选,含义与之前相同。除你请求的窗口外,不会将数据保留在内存中。需要了解以下两点:
- 如果没有
handles筛选条件,读取会在窗口填满后立即停止,因此响应会包含has_more: true,而不是total_rows— 此时参与者数量确实未知。请求一个超出 积分榜末尾的窗口,或传入handles,即可获取total_rows。 - Gym 比赛完全不可用。Codeforces 仅向经过身份验证的 Codeforces 账号提供 gym 积分榜,而此工具包无需密钥,因此会返回
{found: false, reason: "gym_contest_requires_codeforces_account"},而不是报错。
数据源
https://codeforces.com/api/
快速开始
将其添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"codeforces": {
"url": "https://gateway.pipeworx.io/codeforces/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/codeforces/mcp 上的 tools/list 会返回上表中的工具,
以及 Pipeworx 共享的元工具 — ask_pipeworx、
discover_tools、search_within、remember/recall,以及网关级的其他
工具。因此,你看到的工具数量会多于此表:目前,单工具包端点除了工具包自身的工具外,还会列出大约 30 个共享工具。连接的 initialize 响应会说明其准确范围,是当天情况的权威依据。
这是有意为之,并非意外的多路复用。这些元工具使限范围连接能够通过
ask_pipeworx 跨整个目录路由,从而回答此工具包未涵盖的问题,而无需你添加第二个 MCP 服务。目前无法挂载不带这些元工具的工具包端点;如果额外的架构定义占用的上下文比路由功能带来的价值更多,不妨只连接完整网关,而不是连接多个工具包端点。
或者,连接完整的 Pipeworx 网关,直接列出每个工具包的工具,而不仅仅是此工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
两个 URL 都连接到同一个网关和相同的 1875+ 个数据源。唯一的区别是哪些工具包的工具会被直接列出;从任一端点都可以通过 ask_pipeworx 访问所有工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/codeforces_user \
-H 'Content-Type: application/json' \
-d '{"handles":["tourist"]}'
首次调用无需账号。查看任意工具:GET https://gateway.pipeworx.io/v1/tools/codeforces_user。查找工具包:使用 {"query":"..."} 执行 POST https://gateway.pipeworx.io/v1/tools/search_packs。
独立运行(无需网关账户)
此软件包也可作为本地 stdio MCP 服务运行,无需 Pipeworx 账户,也无需经过网关往返:
{
"mcpServers": {
"codeforces": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-codeforces"]
}
}
}
也可以直接运行,确认它能正常启动:
npx -y @pipeworx/mcp-codeforces
它通过 stdin/stdout 使用 MCP 通信,并针对仅限此软件包的工具响应 initialize/tools/list/tools/call——不包含上方网关连接所添加的任何共享元工具。相同的源代码,相同的工具,无需 ask_pipeworx 路由。
使用 ask_pipeworx
你也可以用通俗的英语提问,而不是直接调用工具——这既适用于上方的软件包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about Codeforces data" })
网关会选择合适的工具并自动填写参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。