CTFd MCP Server
Conecte-se à instância do CTFd, baixe tarefas e envie flags.
Documentação
Servidor MCP CTFd
Um servidor Model Context Protocol (MCP) leve e extensível para interagir com qualquer instância do CTFd. Este projeto permite que ferramentas de IA e automação autentiquem, recuperem desafios e enviem flags por meio de ferramentas MCP.
Visão Geral
Este projeto atua como uma ponte entre o CTFd e sistemas orientados por IA, fornecendo uma interface unificada. Ele suporta múltiplos modos de autenticação, controle dinâmico da URL base e integração direta com ferramentas MCP.
O servidor é validado usando a instância demo oficial em https://demo.ctfd.io.
Recursos
- Configuração dinâmica de BASE_URL
- Autenticação por token e cookie
- Login com nome de usuário/senha
- Listar desafios com filtragem opcional
- Enviar flags programaticamente
- Compatível com ferramentas de IA baseadas em MCP (Claude, Codex, Amp, Gemini)
- Código TypeScript limpo e extensível
Início Rápido
Opção 1: npx (sem instalação)
npx ctfd-mcp-server
Opção 2: Instalação global
pnpm install -g ctfd-mcp-server
ctfd-mcp-server
Opção 3: A partir do código-fonte
git clone https://github.com/tomek7667/ctfd-mcp-server.git
cd ctfd-mcp-server
pnpm install
pnpm run build
pnpm start
Ferramentas
| Ferramenta | Descrição |
|---|---|
set_base_url(url) | Define a URL base para a instância do CTFd |
set_token(token) | Define o token de autenticação |
set_cookie(cookie) | Define o cookie de sessão |
login(username, password) | Login com credenciais |
challenges(category?) | Lista desafios, opcionalmente filtrados por categoria |
challenge(identifier) | Obtém detalhes do desafio por nome ou ID |
submit_flag(challenge_name?, challenge_id?, flag) | Envia uma flag |
scoreboard() | Obtém o placar do CTFd |
progress() | Obtém o progresso do usuário atual |
health() | Verifica a saúde da conexão |
Configuração do Cliente
Claude Desktop
O Claude Desktop suporta servidores MCP por meio de um arquivo de configuração JSON.
Localização do arquivo de configuração:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Usando npx (recomendado):
{
"mcpServers": {
"ctfd": {
"command": "npx",
"args": ["-y", "ctfd-mcp-server"],
"env": {
"BASE_URL": "https://demo.ctfd.io",
"CTFD_TOKEN": "<your ctfd api token>"
}
}
}
}
Usando instalação global:
{
"mcpServers": {
"ctfd": {
"command": "ctfd-mcp-server",
"env": {
"BASE_URL": "https://demo.ctfd.io",
"CTFD_TOKEN": "<your ctfd api token>"
}
}
}
}
Reinicie o Claude Desktop após editar a configuração.
OpenAI Codex CLI
O Codex CLI armazena a configuração MCP em ~/.codex/config.toml.
Usando a CLI:
codex mcp add ctfd -- npx -y ctfd-mcp-server
Ou edite ~/.codex/config.toml diretamente:
[mcp_servers.ctfd]
command = "npx"
args = ["-y", "ctfd-mcp-server"]
[mcp_servers.ctfd.env]
BASE_URL = "https://demo.ctfd.io"
CTFD_TOKEN = "<your ctfd api token>"
Use /mcp no TUI do Codex para verificar se o servidor está conectado.
Amp
O Amp suporta servidores MCP por meio da configuração amp.mcpServers no VS Code settings.json.
Localização do arquivo de configuração (VS Code):
- macOS:
~/Library/Application Support/Code/User/settings.json - Windows:
%APPDATA%\Code\User\settings.json - Linux:
~/.config/Code/User/settings.json
Usando npx (recomendado):
{
"amp.mcpServers": {
"ctfd": {
"command": "npx",
"args": ["-y", "ctfd-mcp-server"],
"env": {
"BASE_URL": "https://demo.ctfd.io",
"CTFD_TOKEN": "<your ctfd api token>"
}
}
}
}
Via CLI:
amp mcp add ctfd npx -y ctfd-mcp-server
Gemini CLI
O Gemini CLI armazena a configuração MCP em ~/.gemini/settings.json.
Usando npx (recomendado):
{
"mcpServers": {
"ctfd": {
"command": "npx",
"args": ["-y", "ctfd-mcp-server"],
"env": {
"BASE_URL": "https://demo.ctfd.io",
"CTFD_TOKEN": "<your ctfd api token>"
}
}
}
}
Via CLI:
gemini mcp add ctfd npx -- -y ctfd-mcp-server
Use /mcp no Gemini CLI para verificar o status do servidor.
Docker
docker build -t ctfd-mcp-server .
docker run -i ctfd-mcp-server
Para clientes que suportam servidores MCP baseados em Docker:
{
"mcpServers": {
"ctfd": {
"command": "docker",
"args": ["run", "-i", "--rm", "ctfd-mcp-server"]
}
}
}
Compatibilidade
| Recurso | Suportado |
|---|---|
| Transporte | stdio |
| Node.js | >=18.0.0 |
| Plataformas | macOS, Linux, Windows |
Clientes Testados
| Cliente | Status |
|---|---|
| Claude Desktop | ✅ Verificado |
| OpenAI Codex CLI | ✅ Verificado |
| Amp | ✅ Verificado |
| Gemini CLI | ✅ Verificado |
Variáveis de Ambiente
| Variável | Descrição | Padrão |
|---|---|---|
BASE_URL | URL base da instância CTFd | https://demo.ctfd.io |
Desenvolvimento
# Clone and install
git clone https://github.com/tomek7667/ctfd-mcp-server.git
cd ctfd-mcp-server
pnpm install
# Build
pnpm run build
# Run
pnpm start
# Watch mode (auto-rebuild)
pnpm run watch
Suporte
Para suporte, envie um e-mail para jamescotid@gmail.com ou abra uma issue no repositório do GitHub. Contribuições da comunidade e melhorias são sempre bem-vindas.