Skip to main content
Glama

Cyberchef MCP Server

Pydantic-powered MCP server exposing most CyberChef operations as structured tools.

  • Sources for operation metadata: see extract_operations.js

  • Operations catalog JSON: utils/js/operations.json

What is this?

This project wraps the CyberChef-server HTTP API in an MCP (Model Context Protocol) server so AI agents and MCP-aware apps can:

  • Discover CyberChef operations with fuzzy search

  • Inspect the exact argument schema for any operation

  • Execute single- or multi-step CyberChef recipes against text or binary data

  • Validate and repair recipes programmatically

Prerequisites

You need a running CyberChef-server (the upstream API that performs the actual transforms):

git clone https://github.com/gchq/CyberChef-server cd CyberChef-server docker build -t cyberchef-server . docker run -d --name=cyberchef-server -p 3000:3000 cyberchef-server

By default this MCP server talks to http://localhost:3000/; you can override with --api-url.

Install (local)

# From the project root python -m venv .venv && source .venv/bin/activate # or use your preferred env manager pip install -r requirements.txt

Run (local)

python mcp_cyberchef_service.py \ --api-url http://localhost:3000/ \ --host 127.0.0.1 \ --port 3002

This will start the MCP server using the streamable-http transport on the host/port you provide.

CLI flags:

  • --api-url: Base URL of the upstream CyberChef-server (default http://localhost:3000/)

  • --host: Interface to bind for the MCP server (default 127.0.0.1)

  • --port: Port for the MCP server (default 3002)

Run with Docker

Builds a lightweight image and starts the MCP server on port 3002.

From this directory:

docker build -f Dockerfile -t cyberchef-mcp .

Then run it (pointing to your CyberChef-server):

docker run -d -p 3002:3002 \ cyberchef-mcp \ --api-url http://host.docker.internal:3000/ \ --host 0.0.0.0 \ --port 3002

MCP Tools exposed

These are the primary tools exported by the MCP server. Argument and return schemas are enforced with Pydantic models.

  • search_operations(query: string, limit?: number=10, include_args?: boolean=false) → { total, items[], truncated? } Find relevant CyberChef operations by name/description with fuzzy matching. Optionally include argument lists.

  • get_operation_args(op: string, compact?: boolean=true) → { ok, op, args[], error? } Return the exact argument schema for one operation; with compact=true, enum values are slugified.

  • bake_recipe(input_data: string, recipe: [{op:string, args?:object}]) → { ok, output?, type?, errors[], warnings[] } Execute a single recipe for one input string.

  • batch_bake_recipe(batch_input_data: string[], recipe: [...]) → { results: BakeRecipeResponse[] } Execute the same recipe for many inputs.

  • validate_recipe(recipe: [{op, args?}]) → { ok, errors[], suggestions[], normalized? } Validate step names/args and suggest fixes or missing args.

  • help_bake_recipe() → Cheat sheet with schema notes and examples for composing recipes.

  • cyberchef_probe(raw_input: string) → ProbeOut Quick heuristics to guess encodings and propose a minimal recipe.

  • perform_magic_operation(input_data: string, depth?: int=3, intensive_mode?: bool=false, extensive_language_support?: bool=false, crib_str?: string="") → dict Invoke CyberChef Magic; may be slow/approximate.

Tip: Operation names and argument keys are case-sensitive and must match CyberChef exactly. Use search_operations/get_operation_args first.

Example (agent integration)

See example/test-cyberchef.py for a full integration with Microsoft Autogen MCP workbench. It spins up this server and drives it strictly via tools. A minimal flow:

  1. search_operations("base64") to shortlist "From Base64".

  2. bake_recipe with:

    • input_data: "SGVsbG8gV29ybGQh"

    • recipe: [{"op":"From Base64","args":{}}]

Cross platform builds

Only once: docker buildx create --use --name xbuilder

Further updates:

docker buildx use xbuilder docker buildx build --platform linux/amd64 -f mcp_servers/mcp_cyberchef/Dockerfile -t cyberchef-mcp-amd64 --load . docker buildx use default

Troubleshooting

  • Connection errors when baking recipes: ensure CyberChef-server is running and --api-url points to it.

  • Unknown op / bad args: call get_operation_args(op) and confirm exact key names and allowed enum values.

  • Large search results: lower limit or narrow your query; the server truncates responses to stay under size caps.

-
security - not tested
F
license - not found
-
quality - not tested

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/christianwengert/mcp_cyberchef'

If you have feedback or need assistance with the MCP directory API, please join our Discord server