CTFd MCP Server

Conectarse a la instancia de CTFd, descargar tareas y enviar banderas

Documentación

CTFd MCP Server

npm version License: MIT

Un servidor ligero y extensible del Model Context Protocol (MCP) para interactuar con cualquier instancia de CTFd. Este proyecto permite que herramientas de IA y automatización se autentiquen, recuperen desafíos y envíen banderas a través de herramientas MCP.

Resumen

Este proyecto actúa como un puente entre CTFd y sistemas impulsados por IA al proporcionar una interfaz unificada. Soporta múltiples modos de autenticación, control dinámico de la URL base e integración directa con herramientas MCP.

El servidor se valida utilizando la instancia de demostración oficial en https://demo.ctfd.io.

Características

  • Configuración dinámica de BASE_URL
  • Autenticación por token y cookie
  • Inicio de sesión con nombre de usuario/contraseña
  • Listar desafíos con filtrado opcional
  • Enviar banderas programáticamente
  • Compatible con herramientas de IA basadas en MCP (Claude, Codex, Amp, Gemini)
  • Código TypeScript limpio y extensible

Inicio rápido

Opción 1: npx (sin instalación)

npx ctfd-mcp-server

Opción 2: Instalación global

pnpm install -g ctfd-mcp-server
ctfd-mcp-server

Opción 3: Desde el código fuente

git clone https://github.com/tomek7667/ctfd-mcp-server.git
cd ctfd-mcp-server
pnpm install
pnpm run build
pnpm start

Herramientas

HerramientaDescripción
set_base_url(url)Establece la URL base para la instancia de CTFd
set_token(token)Establece el token de autenticación
set_cookie(cookie)Establece la cookie de sesión
login(username, password)Inicia sesión con credenciales
challenges(category?)Lista desafíos, opcionalmente filtrados por categoría
challenge(identifier)Obtiene detalles del desafío por nombre o ID
submit_flag(challenge_name?, challenge_id?, flag)Envía una bandera
scoreboard()Obtiene la tabla de clasificación de CTFd
progress()Obtiene el progreso del usuario actual
health()Comprueba el estado de la conexión

Configuración del Cliente

Claude Desktop

Claude Desktop admite servidores MCP mediante un archivo de configuración JSON.

Ubicación del archivo de configuración:

  • 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 instalación global:

{
	"mcpServers": {
		"ctfd": {
			"command": "ctfd-mcp-server",
			"env": {
				"BASE_URL": "https://demo.ctfd.io",
				"CTFD_TOKEN": "<your ctfd api token>"
			}
		}
	}
}

Reinicia Claude Desktop después de editar la configuración.


OpenAI Codex CLI

Codex CLI almacena la configuración de MCP en ~/.codex/config.toml.

Usando la CLI:

codex mcp add ctfd -- npx -y ctfd-mcp-server

O edita ~/.codex/config.toml directamente:

[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>"

Usa /mcp en la TUI de Codex para verificar que el servidor está conectado.


Amp

Amp admite servidores MCP mediante la configuración amp.mcpServers en VS Code settings.json.

Ubicación del archivo de configuración (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>"
			}
		}
	}
}

Mediante CLI:

amp mcp add ctfd npx -y ctfd-mcp-server

Gemini CLI

Gemini CLI almacena la configuración de MCP en ~/.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>"
			}
		}
	}
}

Mediante CLI:

gemini mcp add ctfd npx -- -y ctfd-mcp-server

Usa /mcp en Gemini CLI para verificar el estado del servidor.


Docker

docker build -t ctfd-mcp-server .
docker run -i ctfd-mcp-server

Para clientes que admiten servidores MCP basados en Docker:

{
	"mcpServers": {
		"ctfd": {
			"command": "docker",
			"args": ["run", "-i", "--rm", "ctfd-mcp-server"]
		}
	}
}

Compatibilidad

CaracterísticaCompatible
Transportestdio
Node.js>=18.0.0
PlataformasmacOS, Linux, Windows

Clientes Probados

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

Variables de Entorno

VariableDescripciónPredeterminado
BASE_URLURL base de la instancia de CTFdhttps://demo.ctfd.io

Desarrollo

# 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

Soporte

Para soporte, envía un correo a jamescotid@gmail.com o abre un problema a través del repositorio de GitHub. Las contribuciones y mejoras de la comunidad son siempre bienvenidas.

Licencia

MIT