Keel logo

Keel

Scoped recon and GET-only proof workflows with rate limits, semantic triage, and append-only engagement records.

Install Keel

Pick your client, then add it in one click or paste the config.

STDIOPython
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "keel": {
      "command": "uvx",
      "args": [
        "keel"
      ]
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Install not yet sandbox-tested— we haven't run this command through our automated sandbox yet. Not a red flag; we're working through the catalog.

Overview

Keel MCP server coordinates scoped reconnaissance, triage, and bounded security proofs through an MCP stdio interface. It schedules reachability and Nuclei waves, applies host and request limits, merges related findings into semantic cards, and tracks evidence from observation to proof or refutation. Reach for it when scanner output needs controlled execution, deduplication, exploitability assessment, or safe validation against tester-owned data. Proof playbooks are GET-only and produce replayable evidence without writes, shells, OAST, or intrusive scanner tags.

Use cases

  • Register an authorized testing engagement
  • Schedule bounded reconnaissance waves
  • Merge duplicate scanner findings
  • Assess evidence for candidate vulnerabilities
  • Run GET-only proofs against tester-owned data

Key features

  • Scoped engagement and traffic ceilings
  • One-wave-per-host scheduling
  • Semantic finding deduplication
  • Evidence-state triage
  • Allowlisted GET-only proof playbooks
  • Append-only engagement auditing

Tools13

What Keel lets your agent do. Expand a tool for its parameters.

Self-reported~161 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 1d ago

Recent health check succeeded.

4/4 checks healthy over the last 22d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 13d ago via OSV.dev · keel (PyPI)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars2Stargazers on the source repository.
Last commit2mo agoMost recent push to the default branch.
Tools exposed13Callable tools this server registers over MCP.

How Keel works

What Keel MCP server does

The Keel MCP server provides a control plane for authorized web security testing. An AI client communicates with Keel rather than invoking httpx, Nuclei, curl, or shell commands directly. Keel registers an engagement, validates scope, proposes small scan waves, queues background jobs, and exposes progress and cancellation controls.

Scanner observations are consolidated into semantic cards using vulnerability class, normalized route, method, and parameter. Related identifiers such as UUIDs, numeric IDs, and hexadecimal tokens can collapse into one finding. Cards move through evidence states including observed, hypothesis, corroborated, proven, and refuted. Informational and hardening results are excluded from the main triage view.

How it works

Start with begin_engagement, supplying an engagement ID and plain hostname scope. draft_waves prepares reachability and template micro-waves without making requests. execute_wave queues one job, while wave_status reports progress and results and cancel_wave stops queued or active scanning.

The scheduler permits one active wave per host and uses shared and per-host token buckets. Its documented defaults are 3 requests per second, a 120-second wave limit, and 120 requests per wave. Nuclei execution uses signed HTTP templates with concurrency set to one; OAST, redirects, retries, and intrusive, denial-of-service, fuzzing, and brute-force tags are excluded. HTTP 429 responses create a cooldown.

After scanning, query_cards returns prioritized findings. assess_exploitability identifies candidate impact, missing evidence, negative controls, and available playbooks. state_impact records a hunter hypothesis. engagement_health reports cooldowns, budgets, and pending waves, while engagement_audit exposes append-only application events.

Setup and configuration

Install Python 3.10 or newer, then install the keel-pentest package with pipx. The setup command downloads ProjectDiscovery httpx and Nuclei into ~/.keel/bin; doctor checks the installation. Configure an MCP client to launch the keel-pentest executable over stdio. The documented examples include Claude’s MCP command and Codex’s MCP command.

Use KEEL_CREDENTIALS_FILE to store tester credential secrets when proofs need them; tool calls should provide credential names rather than secret values. KEEL_APPROVAL_FILE is an optional team manifest for pinning scope, template IDs, and proof targets. Without it, authorization is self-attested through begin_engagement.

Tools and capabilities

The Keel MCP server exposes thirteen tools covering engagement setup, wave scheduling, status, cancellation, semantic triage, second looks, exploitability assessment, impact hypotheses, proof planning and execution, health checks, and audit records.

Safe proofs require draft_proof followed by execute_proof. Available playbooks cover cross-account reads, reflected markers, open-redirect canaries, unauthenticated access checks, and tester-owned session reachability. Proof requests are GET-only, budgeted, and restricted to allowlisted plans. Results include status codes, canary checks, truncation flags, hashes, impact text, and a replay script; response bodies and secrets are not persisted.

Limitations and notes

Use Keel only on programs and hosts you are authorized to test. Proofs need tester-owned data and, for cross-account or unauthenticated checks, a non-secret canary placed in the relevant object. The own-session playbook establishes reachability but never proves a vulnerability. A proven result depends on the playbook invariant; protected controls are treated as refuted.

The system is intentionally bounded: it does not provide writes, shells, payload spraying, OAST, redirects, or intrusive scanning. Its default scope and traffic controls remain in force even when optional approval configuration is not used.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Keel

Keel is an MCP server that connects an AI client to bounded reconnaissance and proof workflows, using httpx and Nuclei for scoped scanning. Its main tools register engagements, schedule waves, triage semantic cards, assess exploitability, and run allowlisted GET-only proofs against tester-owned data.

Install Python 3.10 or newer, then install the keel-pentest package with pipx and run its setup and doctor commands. Setup downloads httpx and Nuclei into ~/.keel/bin. Configure your MCP client to launch the keel-pentest executable over stdio.

It documents stdio MCP setup examples for Claude and Codex, so verify Cursor's configuration requirements before using it with Keel.

Keel limits traffic with exact scope checks, one active wave per host, global and per-host token buckets, persistent request reservations, and cooldowns after HTTP 429 responses. Default engagement limits are 3 requests per second and 120 seconds or 120 requests per wave.

Keel uses an allowlisted GET-only proof plan against tester-owned data and a non-secret canary where required. The available playbooks check cross-account reads, reflected markers, open redirects, unauthenticated access, or session reachability, then return evidence and a curl replay without storing response bodies.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewKeel AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/keel?style=directory)](https://allmcps.com/mcp/keel)
HTML Embed
<a href="https://allmcps.com/mcp/keel"><img src="https://allmcps.com/api/badge/keel?style=directory" alt="Keel on AllMCPs" /></a>