{
  "markdown": "# MCPWatch\n\n[![npm](https://img.shields.io/npm/v/mcpwatch-mcp)](https://www.npmjs.com/package/mcpwatch-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![lazymac2x/mcpwatch MCP server](https://glama.ai/mcp/servers/lazymac2x/mcpwatch/badges/score.svg)](https://glama.ai/mcp/servers/lazymac2x/mcpwatch)\n\n> **Have I Been Pwned for MCP servers.** Open-source security scanner that audits MCP servers against the OWASP MCP Top 10 and produces an A–F letter grade.\n\n## Overview\n\nMCPWatch is a security tool for the MCP ecosystem that:\n\n- Runs **10 automated checks** derived from the OWASP MCP Top 10 on any MCP server\n- Produces an **A–F letter grade** with per-check findings\n- Exposes an **MCP server interface** so AI agents can audit MCPs on demand\n- Provides a **CLI** for pre-install scanning in CI/CD pipelines\n- Powers a **public leaderboard** at [mcpwatch.pages.dev](https://mcpwatch.pages.dev) with live SVG grade badges\n\n## Installation\n\n### Use with Claude Code / Cursor / Windsurf (MCP server)\n\nAdd to your MCP configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcpwatch\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcpwatch-mcp\"]\n    }\n  }\n}\n```\n\n### CLI (scan before install)\n\n```bash\nnpx mcpwatch-scanner /path/to/mcp-server\n```\n\n### GitHub Action (CI/CD gate)\n\n```yaml\n- uses: lazymac2x/mcpwatch-action@v1\n  with:\n    path: .\n    fail-below: B\n```\n\n## MCP Tools\n\nWhen running as an MCP server, MCPWatch exposes the following tools to your AI agent:\n\n| Tool | Description |\n|------|-------------|\n| `scan_mcp_server` | Scan a local MCP server by path — returns grade + per-check findings |\n| `get_public_score` | Fetch the live grade for any public MCP server by owner/repo slug |\n| `list_leaderboard` | Return the top/bottom N servers from the public leaderboard |\n| `explain_check` | Get a detailed explanation of any OWASP MCP Top 10 check by ID |\n\n### Example: scan before adding an MCP\n\nAsk Claude: *\"Use mcpwatch to scan the filesystem-mcp server at ~/mcps/filesystem-mcp before I add it to my config.\"*\n\n## The 10 Checks (OWASP MCP Top 10)\n\n| ID | Check | Severity |\n|----|-------|---------:|\n| MCP-01 | Command injection in tool handlers | Critical |\n| MCP-02 | Path traversal in file tools | Critical |\n| MCP-03 | Unauthenticated mutations | Critical |\n| MCP-04 | Prompt injection via tool descriptions | High |\n| MCP-05 | SSRF in URL-fetching tools | High |\n| MCP-06 | Hardcoded secret leakage | High |\n| MCP-07 | Over-permissive filesystem scope | Medium |\n| MCP-08 | Missing rate limits | Medium |\n| MCP-09 | Outdated dependencies with known CVEs | Medium |\n| MCP-10 | Missing input schema validation | Low |\n\n## Grading\n\n| Grade | Score |\n|-------|-------|\n| A | 90–100 — no Critical/High findings |\n| B | 75–89 — no Critical findings |\n| C | 60–74 — has Critical findings, minor impact |\n| D | 40–59 — multiple Critical findings |\n| F | 0–39 — severe/exploitable vulnerabilities |\n\n## Public Leaderboard & Badges\n\nEvery public MCP server on Smithery, npm, and the official registry is scanned daily.\n\n**Live badge** — drop into any README:\n\n```markdown\n[![MCPWatch score](https://api.lazy-mac.com/mcpwatch/badge/YOUR_OWNER/YOUR_REPO.svg)](https://mcpwatch.pages.dev/servers/YOUR_OWNER/YOUR_REPO)\n```\n\n**JSON API:**\n```\nGET https://api.lazy-mac.com/mcpwatch/scan/{owner}/{repo}\n```\n\n## Architecture\n\n```\nmcpwatch/\n├── packages/\n│   ├── scanner/   # Core check engine (TypeScript, runs in Worker + CLI + Node)\n│   └── cli/       # mcpwatch-scanner — npx runnable\n├── workers/\n│   └── crawler/   # CF Worker — scheduled crawl + scan (daily)\n├── apps/\n│   └── web/       # CF Pages — mcpwatch.pages.dev — public leaderboard\n└── .github/\n    └── workflows/ # mcpwatch-action CI gate\n```\n\n## Requirements\n\n- Node.js 18+\n- The MCP server under test must be locally accessible (for `scan_mcp_server` / CLI)\n- No API key required for public leaderboard lookups\n\n## License\n\nMIT — use it, fork it, contribute checks.\n\n## Contributing\n\nPull requests for new checks, false-positive fixes, or leaderboard improvements are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## Pro Report $49 (in development)\n\nCross-repo trend analysis + Slack/Discord webhook alerts on grade drops + private MCP scanning. Email waitlist:\n\n- **Get notified**: https://coindany.gumroad.com (subscribe to free tier — Pro Report announce when ready)\n\n## Related — Lumen API + MCP Catalog\n\nIf you ship MCP servers, you might want these (one-time license, lifetime updates, MIT source):\n\n- [AI Citation Coverage MCP — Pro $19](https://coindany.gumroad.com/l/ai-citation-coverage-mcp-pro) — claim-level RAG citation scoring\n- [Prompt Anti-Pattern Detector — Pro $19](https://coindany.gumroad.com/l/prompt-anti-pattern) — 24+ prompt anti-patterns\n- [LLM Response Determinism Checker — Pro $29](https://coindany.gumroad.com/l/llm-response-determ) — same prompt N times, drift score\n- [Prompt-Leak Detector API $25](https://coindany.gumroad.com/l/prompt-leak-detector) — 30+ leak signatures\n\nFull catalog: https://api.lazy-mac.com\nProfile: https://github.com/lazymac2x\ndev.to: https://dev.to/lazymac2x\n",
  "bytes": 5146,
  "sha": "7cbd6354e0e88a28cd2322b36bed177a1a9f5c25189b52f443c6f030aaabb5cc",
  "repo_slug": "lazymac2x/mcpwatch",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_lazymac2x_mcpwatch_a3cc9911/readme"
}