mcpField
C
Codeforces

Codeforces

远程服务
pipeworx.io科研与教育05 天前更新

关于 Codeforces

Codeforces 是面向竞赛编程用户及相关数据查询场景的 MCP 服务,通过 Codeforces 公开只读 API 提供用户、比赛、题集、提交和博客数据。无需 API 密钥,并支持在服务端分页查看比赛排名。

主要功能

  1. 01查询用户资料与评分历史
  2. 02查看用户近期提交
  3. 03列出比赛并查询排名
  4. 04检索题集与近期统计
  5. 05读取近期动态和博客文章

适用场景

  1. 01查看用户的评分变化与提交记录
  2. 02查找比赛排名和题目列表
  3. 03按标签浏览题集及提交统计

MCP 相关

向 MCP 客户端提供 Codeforces 用户、比赛、题集、提交、动态和博客查询工具。可通过 Pipeworx 远程连接,或作为仅提供本项目工具的本地 stdio MCP 服务运行。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/codeforces/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。