CTFd MCP Server
Conectarse a la instancia de CTFd, descargar tareas y enviar banderas
Documentación
CTFd MCP Server
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
| Herramienta | Descripció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ística | Compatible |
|---|---|
| Transporte | stdio |
| Node.js | >=18.0.0 |
| Plataformas | macOS, Linux, Windows |
Clientes Probados
| Cliente | Estado |
|---|---|
| Claude Desktop | ✅ Verificado |
| OpenAI Codex CLI | ✅ Verificado |
| Amp | ✅ Verificado |
| Gemini CLI | ✅ Verificado |
Variables de Entorno
| Variable | Descripción | Predeterminado |
|---|---|---|
BASE_URL | URL base de la instancia de CTFd | https://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.