Back to MCP directory
publicPublicdnsLocal runtime

ctf-time-mcp

一个提供CTFtime.org数据访问的MCP服务器,可获取CTF比赛信息、团队排名、赛事详情和比赛结果

article

README

🚀 CTFtime MCP Server

CTFtime MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器,它提供了一种程序化的方式来访问 CTFtime.org 的数据。通过标准化接口,你可以获取 CTF 竞赛、团队排名、赛事详情以及竞赛结果等信息。

MCP Compatible Python 3.13+ License: MIT MCP Badge

🚀 快速开始

CTFtime MCP Server 提供了便捷的方式来获取 CTFtime.org 的数据。你可以按照以下步骤进行安装和使用。

✨ 主要特性

工具

| 工具 | 描述 | |------|-------------| | get_upcoming_ctfs | 可配置时间范围,检索即将到来的 CTF 赛事 | | get_past_ctfs | 检索历史 CTF 赛事 | | get_event_details | 获取特定赛事的详细信息 | | get_top_teams | 查询全球 CTF 团队排名 | | get_top_teams_by_country | 按国家代码查询地区团队排名 | | get_team_info | 检索团队详细信息和统计数据 | | get_event_results | 获取竞赛结果和分数 | | search_events | 按名称、描述或组织者搜索赛事 | | get_ctf_calendar | 查看 CTF 赛事的月度日历 |

提示

| 提示 | 描述 | |--------|-------------| | analyze_ctf_event | 为特定 CTF 赛事生成分析报告 | | find_beginner_ctfs | 找出适合初学者的竞赛 | | team_performance_analysis | 分析团队表现指标 | | weekly_ctf_briefing | 生成每周竞赛总结 | | country_ctf_scene | 分析地区 CTF 社区情况 |

资源

| 资源 URI | 描述 | |--------------|-------------| | ctftime://info | 服务器和平台文档 | | ctftime://formats | CTF 竞赛格式参考 | | ctftime://categories | 挑战类别文档 |

📦 安装指南

前提条件

  • Python 3.13 或更高版本
  • uv(推荐)或 pip

使用 uv(推荐)

git clone https://github.com/0x-Professor/CTF-time-mcp.git
cd ctf-times-mcp
uv sync

使用 pip

git clone https://github.com/yourusername/ctf-times-mcp.git
cd ctf-times-mcp
pip install -e .

💻 使用示例

运行服务器

# 使用 uv
uv run server.py

# 直接使用 Python
python server.py

开发模式

# 使用 MCP Inspector 进行测试
uv run mcp dev server.py

客户端配置

要将 CTFtime MCP 服务器添加到 Claude Desktop,请运行以下命令:

uv run mcp install server.py --name "CTFtime"

Claude Desktop

将以下内容添加到你的 claude_desktop_config.json 文件中:

{
  "mcpServers": {
    "ctftime": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ctf-times-mcp", "server.py"]
    }
  }
}

VS Code with Continue

将以下内容添加到你的 Continue 配置中:

{
  "mcpServers": [
    {
      "name": "ctftime",
      "command": "uv",
      "args": ["run", "server.py"],
      "cwd": "/path/to/ctf-times-mcp"
    }
  ]
}

示例查询

连接到兼容 MCP 的客户端后,你可以尝试以下查询:

  • "列出未来两周内即将举行的 CTF 竞赛"
  • "获取 CTF 赛事 ID 为 2345 的详细信息"
  • "显示全球排名前 20 的 CTF 团队"
  • "查找来自德国的 CTF 团队"
  • "搜索与 DEF CON 相关的 CTF 赛事"
  • "显示 2026 年 3 月的 CTF 日历"

📚 详细文档

API 参考

本服务器与 CTFtime.org API 进行交互。

使用的端点

| 端点 | 用途 | |----------|---------| | /api/v1/events/ | 带日期过滤的赛事列表 | | /api/v1/events/{id}/ | 单个赛事的详细信息 | | /api/v1/top/ | 全球团队排名 | | /api/v1/top/{year}/ | 特定年份的排名 | | /api/v1/top-by-country/{code}/ | 特定国家的排名 | | /api/v1/teams/{id}/ | 团队信息 | | /api/v1/results/ | 竞赛结果 |

速率限制

CTFtime.org API 用于数据分析和应用开发。请实施适当的请求节流,以尊重服务器资源。

竞赛格式

| 格式 | 描述 | 技能水平 | |--------|-------------|-------------| | Jeopardy | 基于类别的挑战(Web、Crypto、Pwn、Rev、Forensics) | 所有级别 | | Attack-Defense | 实时攻防操作 | 高级 | | Mixed | Jeopardy 和 Attack-Defense 的组合 | 中级及以上 | | Hack Quest | 叙事驱动的渐进式挑战 | 学习阶段 |

挑战类别

| 类别 | 重点领域 | |----------|------------| | Web | Web 应用程序安全漏洞 | | Crypto | 密码分析与利用 | | Pwn | 二进制利用和内存破坏 | | Reverse | 静态和动态二进制分析 | | Forensics | 数字工件调查 | | OSINT | 开源情报收集 | | Misc | 编程、琐事、非常规挑战 |

🔧 技术细节

项目结构

ctf-times-mcp/
├── server.py          # MCP 服务器实现
├── pyproject.toml     # 项目配置和依赖项
└── README.md          # 文档

开发

测试

# 使用 MCP Inspector 运行
uv run mcp dev server.py

# 执行测试
uv run pytest

代码风格

本项目遵循 PEP 8 规范,并在整个项目中使用类型注解。

📄 许可证

本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE

致谢

免责声明

这是一个独立项目,与 CTFtime.org 没有关联或得到其认可。请查看并遵守 CTFtime.org 的服务条款和 API 使用指南。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client