CTFd MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CTFd MCP Serverlist the available challenges"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CTFd MCP Server
A lightweight and extensible Model Context Protocol (MCP) server for interacting with any CTFd instance. This project enables AI tools and automation to authenticate, retrieve challenges, and submit flags through a stable API layer.
Overview
This project acts as a bridge between CTFd and AI-driven systems by providing a unified interface. It supports multiple authentication modes, dynamic base URL control, and FastAPI endpoints for debugging and integration.
The server is validated using the official demo instance at https://demo.ctfd.io.
Features
Dynamic BASE_URL configuration
Token and cookie authentication
Username/password login
List challenges with optional filtering
Submit flags programmatically
Compatible with MCP-based AI tools
Clean and extensible Python codebase
Installation
Install the MCP server using Python:
git clone https://github.com/YourUser/ctfd-mcp-server.git
cd ctfd-mcp-server
pip install -r requirements.txtCreate your environment configuration:
cp .env.example .env
Edit .env as needed:
BASE_URL=https://demo.ctfd.id
CTFD_TOKEN=
CTFD_COOKIE=Running the MCP Server
Start the server with Python:
python mcp_server.pyThe default FastAPI server runs at:
http://127.0.0.1:8000Example MCP Configuration
If you are using a client such as Claude Desktop or a compatible MCP host, configure it as follows:
{
"mcpServers": {
"ctfd-mcp": {
"command": "python",
"args": ["mcp_server.py"],
"env": {
"BASE_URL": "https://demo.ctfd.io"
}
}
}
}
Usage/Examples
Set Token
{
"method": "set_token",
"params": { "token": "your_token_here" }
}Get Challanges
{
"method": "challenges",
"params": {}
}Sumbit Flag
{
"method": "submit_flag",
"params": {
"challenge_id": 3,
"flag": "flag{example_payload}"
}
}
API Endpoints (FastAPI)
Method | Path | Description |
POST | /set_token | Set authentication token |
POST | /set_cookie | Set session cookie |
POST | /login | Login with credentials |
GET | /api/v1/challenges | Retrieve challenges |
POST | /api/v1/flags | Submit a flag |
Support
For support, email jamescotid@gmail.com or open an issue through the GitHub repository. Community contributions and improvements are always welcome.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MrJamescot/ctfd-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server