Skip to main content

mcphound

Independent security scanner and reputation layer for MCP servers and agent skills.

Status: v0.1 published (PyPI) — static CLI scanning, a local registry poller/scorer, a read-only reputation API, and a Next.js site are built; none of the site/API is deployed publicly yet, and the GitHub Action / policy enforcement is still ahead. See ROADMAP.md.

mcphound discovers the MCP servers configured in your AI coding clients (Claude Code/Desktop, Cursor, Windsurf, Gemini CLI, OpenCode) and checks them for supply-chain risks: hardcoded secrets, download-and-execute launch commands, over-broad permissions, pinned-version drift, and (in later versions) tool-description poisoning, typosquats, and runtime rug-pulls. Findings map to the OWASP Top 10 for LLM and Agentic applications and can be exported as SARIF into GitHub code scanning.

Why another scanner?

Local scanning is covered by mcp-scan / Snyk Agent Scan. mcphound's job is the layers around it:

  1. A public reputation database — continuously scanned public registry, per-server risk pages and change history.
  2. Org-level enforcementmcp-policy.yaml + GitHub Action that blocks risky MCP/skill changes in PRs.
  3. Compliance reporting — findings mapped to OWASP, EU AI Act, and (later) Australian ISM / Essential Eight / DISP controls.

Quickstart

# published on PyPI as "mcphound"
uvx mcphound inspect   # inspect what you have (never executes a server)
uvx mcphound scan      # scan auto-discovered configs

# or install once:
# pip install mcphound / uv tool install mcphound

# CI: fail on high/critical findings, emit SARIF
mcphound scan .mcp.json --fail-on high --sarif -o mcphound.sarif

# CI dry-run: report findings without failing the build — drop --fail-on
# and the exit code stays 0 regardless of severity, so you can preview
# what a policy would catch before you start enforcing it
mcphound scan .mcp.json --json -o mcphound-preview.json

# opt-in: also run network-dependent checks (npm registry provenance) — slower,
# not fully deterministic offline, so it's off unless you ask for it
mcphound scan --deep

# dogfood: scan only this project's own configs (.mcp.json, opencode.json[c] in
# the current directory), skipping user-level client configs — for CI/pre-commit
mcphound scan --self --fail-on high

Full rule catalog with OWASP mappings: docs/rules.md.

Reporting a false positive

mcphound feedback MCP-STATIC-004 --note "why you think this is wrong"

Prints a pre-filled GitHub issue URL — no network call, no auth. Redact secrets from any config snippet before pasting it into the issue. See GOVERNANCE.md for the full policy.

Registry poller (local, opt-in)

Ingests the official MCP Registry into a local Postgres database for future reputation-scoring work. Not needed to use mcphound scan/inspect/feedback — see docs/registry-poller.md for setup.

Read-only API (local, opt-in)

A free, rate-limited JSON API + embeddable badge over the scored registry data — GET /v1/servers/{slug}, GET /v1/check?name=, GET /v1/badge/{slug}.svg. See docs/api.md for the full reference and how to run it locally.

Development

uv sync --extra dev
uv run pytest -q          # tests
uv run ruff check .       # lint
make scan-self            # scan this repo's own agent configs (dogfood)
make docs                 # regenerate docs/rules.md from the rule YAML files

Safety

mcphound static scanning never executes MCP servers. Dynamic analysis (post-v1) runs only inside the disposable, network-isolated sandbox in sandbox/. Every malicious test fixture carries the marker MCPHOUND-FIXTURE-CANARY and must never be referenced from agent configurations.

Authoring a detection rule

Every rule ships with four artifacts: YAML rule, malicious fixture, benign fixture, pytest. See .claude/skills/rule-authoring/SKILL.md (or the two worked examples under src/mcphound/rules/ and tests/).

License

Apache-2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcphound-0.1.4.tar.gz (36.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcphound-0.1.4-py3-none-any.whl (49.6 kB view details)

Uploaded Python 3

File details

Details for the file mcphound-0.1.4.tar.gz.

File metadata

  • Download URL: mcphound-0.1.4.tar.gz
  • Upload date:
  • Size: 36.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcphound-0.1.4.tar.gz
Algorithm Hash digest
SHA256 16c3ae7008be689fe72660b76fe8ed07b272d49af7f1ac7cb54e1c54d104ad41
MD5 5601cd6957918d78cb98b6813f092e21
BLAKE2b-256 bba11da654217772c7f0f9eb5d4000fe7d544d91d5ac99345746a69f6a711662

See more details on using hashes here.

File details

Details for the file mcphound-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: mcphound-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 49.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcphound-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 78f195521facbfad264a916c4c7f9be3de44da09d4383abf4a10ccf7df58552f
MD5 950f75a3b696bd35b2f4a9f1a43e1086
BLAKE2b-256 b3c03fc0196a945bef53dfc1b2c5746711d1a8a1ccd51c1f5e83130e833c8899

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.5

2 files

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page