# CTFd

Подключает AI-агента к CTFd v3: он ищет задания, проверяет детали, отправляет флаги и показывает состояние инстанса.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 7
- Автор: MrJamescot
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/MrJamescot/ctfd-mcp-server
- Обновлён: 2026-09-21
- HTML: https://affpapa.org/nevibecode/mcp/ctfd

## Что делает

CTFd даёт агенту доступ к инстансу CTFd v3 через MCP. Он умеет получать список заданий с фильтрами по категории, поиску и решённости, открывать детали, проверять состояние инстанса и отправлять флаги. Для отправки требуется явное подтверждение `confirm=True`.

Сервер использует MCP-инструменты и общий клиент для запросов к CTFd. Доступны авторизация по API-токену, cookie сессии или логину и паролю; учётные данные хранятся только в памяти. Есть транспорт `stdio`, а также необязательный REST-интерфейс FastAPI.

Нужен Python 3.10+. Переменная `CTFD_BASE_URL` должна указывать на корень инстанса CTFd, без `/api/v1`, а токен или другие данные входа задаются через переменные окружения. Без Python 3.10+ сервер не запустится.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `CTFD_BASE_URL`, `CTFD_ADMIN_TOKEN`, `CTFD_SESSION_COOKIE`, `CTFD_USERNAME`, `CTFD_PASSWORD`, `CTFD_HTTP_TIMEOUT` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env CTFD_BASE_URL=<CTFD_BASE_URL> --env CTFD_ADMIN_TOKEN=<CTFD_ADMIN_TOKEN> --env CTFD_SESSION_COOKIE=<CTFD_SESSION_COOKIE> --env CTFD_USERNAME=<CTFD_USERNAME> --env CTFD_PASSWORD=<CTFD_PASSWORD> --transport stdio ctfd -- uvx ctfd-mcp-server
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from ctfd-mcp-server <команда>

### Codex

**Командой платформы**
```bash
codex mcp add ctfd --env CTFD_BASE_URL=<CTFD_BASE_URL> --env CTFD_ADMIN_TOKEN=<CTFD_ADMIN_TOKEN> --env CTFD_SESSION_COOKIE=<CTFD_SESSION_COOKIE> --env CTFD_USERNAME=<CTFD_USERNAME> --env CTFD_PASSWORD=<CTFD_PASSWORD> -- uvx ctfd-mcp-server
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from ctfd-mcp-server <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "ctfd": {
            "command": "uvx",
            "args": [
                "ctfd-mcp-server"
            ],
            "env": {
                "CTFD_BASE_URL": "<CTFD_BASE_URL>",
                "CTFD_ADMIN_TOKEN": "<CTFD_ADMIN_TOKEN>",
                "CTFD_SESSION_COOKIE": "<CTFD_SESSION_COOKIE>",
                "CTFD_USERNAME": "<CTFD_USERNAME>",
                "CTFD_PASSWORD": "<CTFD_PASSWORD>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from ctfd-mcp-server <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "ctfd": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "ctfd-mcp-server"
            ],
            "env": {
                "CTFD_BASE_URL": "<CTFD_BASE_URL>",
                "CTFD_ADMIN_TOKEN": "<CTFD_ADMIN_TOKEN>",
                "CTFD_SESSION_COOKIE": "<CTFD_SESSION_COOKIE>",
                "CTFD_USERNAME": "<CTFD_USERNAME>",
                "CTFD_PASSWORD": "<CTFD_PASSWORD>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from ctfd-mcp-server <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e CTFD_BASE_URL=<CTFD_BASE_URL> -e CTFD_ADMIN_TOKEN=<CTFD_ADMIN_TOKEN> -e CTFD_SESSION_COOKIE=<CTFD_SESSION_COOKIE> -e CTFD_USERNAME=<CTFD_USERNAME> -e CTFD_PASSWORD=<CTFD_PASSWORD> ctfd uvx ctfd-mcp-server
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from ctfd-mcp-server <команда>

## Когда брать
- получить список заданий CTFd с фильтрами
- открыть детали конкретного задания
- отправить найденный флаг с подтверждением
- проверить состояние и доступность инстанса
- посмотреть таблицу результатов

## Примеры запросов агенту
- Подключись к CTFd и покажи нерешённые задания в категории `web`.
- Открой детали задания с именем `SQL Injection` и объясни, какие данные доступны агенту.
- Проверь флаг и отправь его в CTFd только после явного подтверждения `confirm=True`.

## Похожие
- [solve-challenge](https://affpapa.org/nevibecode/skills/solve-challenge.md) — скилл · 8900 установок
- [type-juggling](https://affpapa.org/nevibecode/skills/type-juggling.md) — скилл · 3600 установок
- [ctf-writeup](https://affpapa.org/nevibecode/skills/ctf-writeup.md) — скилл · 7900 установок
- [binary-protection-bypass](https://affpapa.org/nevibecode/skills/binary-protection-bypass.md) — скилл · 3700 установок
- [reverse-skill-router](https://affpapa.org/nevibecode/skills/reverse-skill-router.md) — скилл · 1500 установок

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
