hackyeaster-solver
Click on "Deploy 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., "@hackyeaster-solverFind all the current HackyEaster 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.
HackyEaster Solver
MCP server for Claude-driven HackyEaster CTF solving. Uses Scrapling for page fetching and exposes CTF utility tools so Claude can reason through challenges, submit answers via Playwright, and iterate.
Setup
Quick install (no clone needed)
Add to your ~/.mcp.json:
{
"mcpServers": {
"hackyeaster": {
"command": "uvx",
"args": ["--from", "git+https://github.com/cloudwarriors-ai/hackyeaster-solver", "hackyeaster-mcp"]
}
}
}Restart Claude Code. The he_* tools will appear in the MCP servers panel.
Local development
If you want to modify the server or keep persistent state in a known location:
git clone https://github.com/cloudwarriors-ai/hackyeaster-solver.git
cd hackyeaster-solver
uv syncThen in ~/.mcp.json, point at your local clone:
{
"mcpServers": {
"hackyeaster": {
"command": "bash",
"args": ["-c", "uv run --directory /path/to/hackyeaster-solver python -m hackyeaster_mcp.server"]
}
}
}Related MCP server: Claude Memory
Tools
Scraping
Tool | Description |
| Scrape hackyeaster.com and return available challenges |
| Fetch and parse a specific challenge page |
| Fetch any URL and return raw HTML |
CTF Utilities
Tool | Description |
| Decode: base64, hex, url, binary, morse, decimal, octal, base32 |
| Transform: caesar, rot13, swap_pairs, reverse, rail_fence, vigenere, xor, atbash |
| Download image for visual analysis + QR/barcode detection |
| Compute hashes: md5, sha1, sha256, sha512 |
State
Tool | Description |
| Record a solve attempt |
| View all attempts and solved challenges |
| Check if text matches flag format |
How It Works
Claude is the solver. The MCP server provides the tools; Claude provides the reasoning.
he_discover_challenges— scrape the site for challengeshe_fetch_challenge— read challenge content, hints, embedded dataClaude reasons about the puzzle, calls
he_decode/he_transform/he_analyze_imageas neededPlaywright MCP (separate, already available in Claude Code) handles form interaction and answer submission
he_log_attempttracks what was tried and what worked
Requirements
Python 3.11+
Claude Code with MCP support
Playwright MCP server (for answer submission when challenges go live)
Architecture
Claude (solver brain)
|
+-- hackyeaster MCP -- Scrapling fetch + CTF utils + state
|
+-- playwright MCP --- form interaction, submit answers, screenshotsAvailable Tools
12 toolshe_analyze_imageA
Download an image URL and return it as base64 for visual analysis. Also attempts QR code / barcode detection if pyzbar is available.
Inputs: url (required).
he_decodeB
Decode data using a specified encoding: base64, hex, url, binary, morse, decimal, octal, base32.
Inputs: data (required), encoding (required).
he_discover_challengesB
Scrape hackyeaster.com and return a list of available challenges with titles, URLs, descriptions, and embedded data.
Inputs: dynamic.
he_download_fileA
Download a challenge's attached file via the authenticated HackyEaster API. Fetches /app/rest/user/challenge/{id}/file and saves to the data/ directory. Returns the saved path, filename, content-type, and size in bytes.
Inputs: challenge_id (required).
he_fetch_challengeA
Fetch a specific challenge page and return parsed content: title, description, hints, code blocks, images, links.
Inputs: url (required), dynamic.
he_fetch_rawC
Fetch any URL and return the raw HTML. Useful for following links or checking resources.
Inputs: url (required), dynamic.
he_get_progressA
Return all solve attempts grouped by challenge, with summary of total attempts and solved count.
Inputs: no named parameters.
he_hashB
Compute a hash of the given data. Algorithms: md5, sha1, sha256, sha512.
Inputs: data (required), algorithm.
he_log_attemptB
Record a solve attempt for a challenge. Tracks answer, correctness, and notes.
Inputs: answer (required), correct (required), challenge_id (required), notes.
he_submit_flagA
Submit a flag for a challenge via the authenticated HackyEaster API. POSTs to /app/rest/user/challenge/{id}/checkflag. Returns the API response (accepted/rejected/already-solved).
Inputs: flag (required), challenge_id (required).
he_transformB
Apply a cipher/transform: caesar (with shift param), rot13, swap_pairs, reverse, rail_fence (with rails param), vigenere (with key param), xor (with key param), atbash, caesar_bruteforce.
Inputs: data (required), method (required), key, rails, +2 more.
he_validate_flagA
Check if a string matches the HackyEaster flag format (he20XX{...}).
Inputs: text (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 12 tools
Each tool has a distinct purpose: image analysis, hashing, logging, progress tracking, flag handling, file download, challenge discovery, page fetching, raw HTML fetching, decoding, and transformation. No overlapping functionality.
All tools use the 'he_' prefix and snake_case. Most follow verb_noun pattern (e.g., analyze_image, validate_flag) with a few single-verb names (hash, decode, transform) that are clear in context.
12 tools cover all necessary operations for the HackyEaster puzzle solver domain: discovery, fetching, analysis, decryption/transformation, flag submission, and progress tracking. Neither too sparse nor too many.
The toolset covers core workflows well, including image analysis with QR/barcode detection, hashing, decoding, cipher transformations, and flag lifecycle. Minor gaps like encoding or OCR are not essential for the domain.
Related MCP Connectors
Hosted YouTube MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Hosted Web Crawler MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Hosted Screenshots MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Hosted X Ads MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server to dynamically load Claude Code skills into AI agents5141 npm15MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides Claude Code with persistent memory across sessions, including session checkpoints, image persistence, and bidirectional sync with claude.ai projects.1MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server that enables Claude to generate images using the OpenAI API.12 npmMIT
- AlicenseNot gradedqualityDmaintenanceA private MCP server that lets Claude generate images using Google Gemini/Imagen, exposing a generate_image tool.130 npmMIT