GitHub - kapilduraphe/mcp-watch: A comprehensive security scanner for Model Context Protocol (MCP) servers that detects vulnerabilities and security issues in your MCP server implementations. (original) (raw)

MCP Watch ๐Ÿ”

A comprehensive security scanner for Model Context Protocol (MCP) servers that detects vulnerabilities and security issues in your MCP implementations.

Features

Installation

Global Installation

Local Installation

From Source

git clone https://github.com/yourusername/mcp-watch.git cd mcp-watch npm install npm run build

Usage

Command Line

Scan a GitHub repository

mcp-watch scan https://github.com/user/mcp-server

Scan with JSON output

mcp-watch scan https://github.com/user/mcp-server --format json

Filter by severity

mcp-watch scan https://github.com/user/mcp-server --severity high

Filter by category

mcp-watch scan https://github.com/user/mcp-server --category credential-leak

Note: If you don't want to download npm then just substitute mcp-watch with node dist/main.js.

Example: node dist/main.js scan https://github.com/user/repo

Options

Categories

Example Output

๐Ÿ” Scanning repository: https://github.com/user/mcp-server
๐Ÿ“Š Based on vulnerablemcp.info, HiddenLayer, Invariant Labs, and Trail of Bits research

๐Ÿ”‘ Scanning for credential vulnerabilities...
๐Ÿงช Scanning for tool poisoning vulnerabilities...
๐ŸŽฏ Scanning for parameter injection vulnerabilities...
๐Ÿ’‰ Scanning for prompt injection vulnerabilities...

๐Ÿ“Š MCP SECURITY SCAN RESULTS
===============================

๐Ÿ“ˆ Summary by Severity:
  ๐Ÿšจ CRITICAL: 2
  โš ๏ธ HIGH: 1
  โšก MEDIUM: 3

๐Ÿ” Detailed Results:
--------------------

1. ๐Ÿšจ Hardcoded credentials detected
   ๐Ÿ“‹ ID: HARDCODED_CREDENTIALS
   ๐ŸŽฏ Severity: CRITICAL
   ๐Ÿ“‚ Category: credential-leak
   ๐Ÿ“ Location: src/config.ts:15
   ๐Ÿ” Evidence: const apiKey = "sk-***REDACTED***"

Development

Project Structure

mcp-watch/
โ”œโ”€โ”€ main.ts                          # CLI entry point
โ”œโ”€โ”€ types/
โ”‚   โ””โ”€โ”€ Vulnerability.ts             # Type definitions
โ”œโ”€โ”€ scanner/
โ”‚   โ”œโ”€โ”€ MCPScanner.ts               # Main scanner orchestrator
โ”‚   โ”œโ”€โ”€ BaseScanner.ts              # Base scanner utilities
โ”‚   โ””โ”€โ”€ scanners/                   # Individual vulnerability scanners
โ”‚       โ”œโ”€โ”€ CredentialScanner.ts
โ”‚       โ”œโ”€โ”€ ParameterInjectionScanner.ts
โ”‚       โ””โ”€โ”€ ...
โ””โ”€โ”€ utils/
    โ””โ”€โ”€ reportFormatter.ts          # Report formatting

Development Scripts

Build the project

npm run build

Run in development mode

npm run dev scan https://github.com/user/repo

Quick scan during development

npm run scan https://github.com/user/repo

Clean build artifacts

npm run clean

Adding New Scanners

  1. Create a new scanner in scanner/scanners/
  2. Extend AbstractScanner
  3. Implement the scan() method
  4. Add to MCPScanner.ts

Example:

import { AbstractScanner } from "../BaseScanner"; import { Vulnerability } from "../../types/Vulnerability";

export class MyScanner extends AbstractScanner { async scan(projectPath: string): Promise<Vulnerability[]> { console.log("๐Ÿ” Scanning for my vulnerability type...");

const vulnerabilities: Vulnerability[] = [];
// Your scanning logic here

return vulnerabilities;

} }

Security Research

This tool is based on security research from leading organizations in AI and cybersecurity, identifying novel attack vectors specific to MCP environments including:

Research Sources

Exit Codes

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Run type checking with npm run type-check
  4. Test your changes manually
  5. Submit a pull request

License

MIT License - see LICENSE file for details.

Support


โš ๏ธ Security Notice: This tool identifies potential security issues but should not be the only security measure. Always perform manual security reviews and follow security best practices.