Dredd MCP

io.github.pduggusaPublished by GitHub account pduggusav1.2.0Updated Oct 24, 2026

Pre-flight verdict on MCP servers: known-bad identity, CVEs, dependency tree, tool drift. Signed.

VerifiedStreamable HTTPWeb executableDeveloper ToolsSecurity & Monitoring

Overview

Dredd's hosted MCP server (analytics.dugganusa.com); no sign-in required; Streamable HTTP; 1 tool.

No AI overview yet: these facts come from the registry entry and the server itself.

Endpoint
analytics.dugganusa.com
Last checked

Installation

In SourceWeft

  1. Open Dredd MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.pduggusa%2Fdredd-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "dredd": {
      "type": "http",
      "url": "https://analytics.dugganusa.com/api/v1/dredd/mcp"
    }
  }
}

README

Dredd MCP — Pre-Flight Security for the MCP Ecosystem

DugganUSA turns scattered public threat reporting into feeds and pre-install checks a small team can use in minutes. It cites its sources, says what it does not know, and corrects itself in public.

Free API key: https://analytics.dugganusa.com/stix/register. One key covers the feed, the API, the MCP servers, Edge Shield and the Checks Action. Questions: https://docs.dugganusa.com/faq/

Docs: https://docs.dugganusa.com/agents/dredd/

You do you. I do me. We share contexts.

Everything is context now: data, transport, the TV in your living room. Share the context, never the core. Dredd judges what's about to cross into your agent before it runs: the server, its full dependency tree, and the CVEs published against it. Every verdict is signed, and you get an honest unknown when we couldn't see.

"Jeevesus saves. Dredd judges."

Dredd MCP is a pre-invocation security check for the Model Context Protocol ecosystem. Before your agent calls a tool on any other MCP server, Dredd renders a verdict: BLOCK, ADVISORY, or ALLOW. Every verdict is HMAC-signed and cites the IOC or behavioral signal that drove the decision.

Three PyPI ML packages were compromised in eight days during late April 2026. Twenty-plus MCP-named GitHub repositories were caught serving SmartLoader malware in the wild. The official MCP Registry was clean of those when we measured — but the typosquat surface is wide open.

Dredd is the layer that catches the next compromise before the malicious tool gets called.


What's New — Dependency-Graph Checking (Shai-Hulud class)

Dredd no longer stops at the named server. It walks the transitive dependency graph.

The Shai-Hulud worm taught the ecosystem the hard lesson: the malicious code is rarely in the package you installed — it's three levels down, in a transitive dependency that got its publish token stolen. A check that only vets the server you named is blind to exactly the attack that's been hitting npm and PyPI.

So every preflight now resolves the target server's full npm/pypi dependency graph and joins every transitive package against our continuously updated IOC corpus — including the OSV malicious-package feeds for npm and PyPI. If a known-malicious package is buried anywhere in the tree, Dredd blocks the call before the tool runs.

The verdict is signed (HMAC-SHA256) and now carries a dep_graph field telling you whether transitive supply-chain risk was actually evaluated for that target:

json
{  "verdict": "BLOCK",  "severity": "critical",  "dep_graph": { "evaluated": true, "packages_checked": 247, "malicious_transitive": 1 },  "signature": "sha256=..."}

If the server doesn't expose a resolvable manifest, dep_graph.evaluated is false and Dredd drops to the advisory tier — it tells you it couldn't see the tree rather than pretending it's clean.


What Dredd Checks

Every preflight call evaluates these signals:

  1. Compromised dependency — including transitive (Shai-Hulud class). The target server's package manifest is parsed, its full npm/pypi dependency graph is resolved, and every package — direct and transitive — is joined against our continuously updated IOC corpus (Socket, Aikido, GitGuardian, ReversingLabs, Phylum, StepSecurity, Wiz, plus OSV malicious-package feeds for npm and PyPI). If the server, or anything it pulls in transitively, pins lightning==2.6.2 or any other known-compromised version, the call is blocked. The dep_graph field on the verdict reports whether the transitive tree was evaluated.
  2. Tool surface drift. The list of tools the server exposes today versus the snapshot the user originally approved. New tools that appeared since the last review trigger an advisory. Mid-session rugpull is the threat model.
  3. Remote URL drift. The server's runtime endpoint compared against the URL it published in the registry. A server quietly calling out to a different host than the one you signed up for is a hijack signature.
  4. Permission escalation. A server requesting write or exec permissions it did not have last week.

The verdict comes back signed in under 200 ms (Cloudflare-edge cached, 5-minute TTL). The hook fails open by default — if our endpoint is ever down, Dredd does not brick your tooling.


Install — Claude Desktop

Add to your claude_desktop_config.json:

json
{  "mcpServers": {    "dredd": {      "url": "https://analytics.dugganusa.com/api/v1/dredd/mcp"    }  }}

Restart Claude Desktop. You'll see Dredd available with one tool: check_mcp_server.

Install — Cursor

Add to ~/.cursor/mcp.json:

json
{  "mcpServers": {    "dredd": {      "url": "https://analytics.dugganusa.com/api/v1/dredd/mcp"    }  }}

Test from terminal

bash
curl -X POST https://analytics.dugganusa.com/api/v1/dredd/mcp \  -H "Content-Type: application/json" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

You should see one tool: check_mcp_server.


The Tool

check_mcp_server

ArgumentTypeRequiredDescription
serverstringyesMCP server name (e.g. io.github.foo/bar) or substring
versionstringnoOptional semver of the server
toolstringnoOptional name of the specific tool being invoked

Returns a JSON verdict:

json
{  "success": true,  "server": "io.github.foo/bar",  "version": "1.2.3",  "tool": "list_files",  "verdict": "ALLOW",  "severity": "clean",  "findings_count": 0,  "findings": [],  "dep_graph": { "evaluated": true, "packages_checked": 247, "malicious_transitive": 0 },  "checked_at": "2026-05-04T20:00:00Z",  "ttl_seconds": 300,  "signature": "sha256=..."}

Verdict values:

VerdictSeverity tierWhat to do
BLOCKcritical or highRefuse the invocation. Do not call the target tool.
ADVISORYmedium or advisorySurface to the user; let them decide.
ALLOWcleanProceed.

The signature field is an HMAC-SHA256 of the canonical verdict body using a server-side secret. Hooks should verify this to defeat MITM-forged "all clear" responses (verification key distributed out of band on request).


The Public Watchtower

Real-time aggregate dashboard of every active finding across the registry — free, no auth, no email gate:

https://analytics.dugganusa.com/api/v1/dredd/watchtower.json

Returns counts by severity, recent findings, current verdict (CLEAN / WATCH / HIGH / CRITICAL).

Updated continuously as the daily fetcher + correlator pipeline runs against the registered MCP corpus.


How Dredd Works

       ┌─────────────────────────────────────────────────┐       │  Your Agent (Claude Desktop / Cursor / custom)   │       │     calls check_mcp_server(server, version, tool)│       └─────────────────┬───────────────────────────────┘                         │ JSON-RPC over HTTPS                         ▼        ┌────────────────────────────────────────────────┐        │  Dredd MCP — analytics.dugganusa.com/api/v1/dredd/mcp │        │  - look up findings for (server, version, tool)│        │  - aggregate severity, render verdict          │        │  - HMAC-sign canonical verdict                 │        └────────────────┬───────────────────────────────┘                         │                         ▼        ┌────────────────────────────────────────────────┐        │  mcp_findings index — populated by             │        │  daily fetcher + correlator joining the        │        │  resolved transitive dep graph × IOC corpus    │        │  (Socket, Aikido, GitGuardian, ReversingLabs,  │        │   + OSV malicious-package feeds: npm & PyPI)    │        └────────────────────────────────────────────────┘

The correlation cadence today is 12 hours (08:30 UTC and 20:30 UTC). When a real compromise lands in the registered-MCP corpus, cadence tightens.


Trust Posture

  • HMAC-signed responses. Hook implementations should verify the signature field on every verdict.
  • Fail-open by default. If our endpoint is down, Dredd does not brick your tooling — it returns "advisory: backend unavailable" and lets the user decide. Document override (DREDD_BYPASS=<reason>) for critical workflows.
  • Read-only. Dredd never modifies your environment. Verdict only.
  • Sits beside what you have. Dredd adds one verdict before a tool call; your client's own permission prompts and your own review stay in place.
  • No tool argument leakage. Hooks should send (server, version, tool) only — never the contents of tool arguments. Those stay on your machine.
  • Validated corpus, not just a big one. The IOC corpus behind every verdict is independently checkable on four live, no-auth endpoints: novelty (/api/v1/feed-uniqueness, overlap with ThreatFox), timeliness (/api/v1/kev-lead, a live ledger of when each exploited CVE entered our corpus next to its CISA KEV date), accuracy (/api/v1/spamhaus-validation), and liveness (/api/v1/feed-efficacy, opt-in consumer reports of when our indicators actually fire on real traffic — proof the feed is operationally live, not just large).
  • 95% epistemic ceiling. We cap our claims at 95% per DugganUSA's epistemic humility rule. Coverage gap: about 60-70% of MCP servers in the registry today don't expose a public source repository, which means Dredd cannot inspect their dependency tree. The advisory tier exists for those.

The Family

Dredd is the 13th member of the DugganUSA defender family — and the first MCP-native member:

Companion MCP server: Jeevesus, natural-language search over the DugganUSA corpus (live counts).


License

MIT — see LICENSE.

Support


Built in Minneapolis. Defender-grade. Read-only. Receipts do the work.


DugganUSA Defender Family

Same DugganUSA Feed, surfaced wherever you live. Open source, MIT licensed, receipts on every repo.

PluginSurface
dugganusa-scanner-coreCore IOC scanning engine
dugganusa-vscodeVS Code extension
dugganusa-splunkSplunk Technology Add-on
dugganusa-slackSlack bot
dugganusa-raycastRaycast extension
dugganusa-sentinelMicrosoft Sentinel TAXII connector
dugganusa-obsidianObsidian plugin
dugganusa-nvimNeovim plugin
dugganusa-elasticElastic / OpenSearch integration
dugganusa-edge-shieldCloudflare Worker
dugganusa-cliCLI scanner
dugganusa-chromeChrome extension
dugganusa-actionGitHub Action
dredd-mcp (this repo)Dredd: pre-flight MCP security

Backed by the DugganUSA Feed. Numbers are live: /api/v1/search/stats. Pricing: analytics.dugganusa.com/stix/pricing. Contact: [email protected].

Threat intelligence you can check.

Source: README.md at commit 091eff4

Tools

1

check_mcp_server

Check an MCP server

Pre-flight security verdict for an MCP server invocation. Judges BOTH server-level reputation AND the server's dependency graph (npm/pypi) against the DugganUSA threat-intel corpus (1.13M+ IOCs, Shai-Hulud + typosquat + LOLBin families). Returns BLOCK / ADVISORY / REVIEW / ALLOW with severity, evidence, dep-graph summary, and HMAC-signed response. REVIEW means we hold NO RECORD of this server -- not that it is safe. A brand-new attacker-published server also looks like this, so REVIEW calls for a look, not a pass. ALLOW is only returned when we actually resolved the server and scanned its dependency graph; known_to_us and dep_graph.scanned confirm it. Suited to a pre-flight check before a tool on another MCP server is used, especially one from outside the official MCP Registry.

Parameterstoolserverrequiredversion

Version history

2
  1. v1.2.0LatestOct 20, 2026
  2. v1.0.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts