CTFd MCP Server

Conecte-se à instância do CTFd, baixe tarefas e envie flags.

Documentação

Servidor MCP CTFd

npm version License: MIT

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

FerramentaDescriçã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

RecursoSuportado
Transportestdio
Node.js>=18.0.0
PlataformasmacOS, Linux, Windows

Clientes Testados

ClienteStatus
Claude Desktop✅ Verificado
OpenAI Codex CLI✅ Verificado
Amp✅ Verificado
Gemini CLI✅ Verificado

Variáveis de Ambiente

VariávelDescriçãoPadrão
BASE_URLURL base da instância CTFdhttps://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.

Licença

MIT