Scan MCP Servers for Security Vulnerabilities
MCP security scanner detects vulnerabilities like credential leaks, prompt injection, and tool poisoning in MCP implementations. Secure your AI systems.
Why it matters
Secure your Model Context Protocol (MCP) implementations by scanning for and identifying critical security vulnerabilities. This tool helps detect a wide range of threats, from credential leaks to prompt injection attacks, ensuring the integrity of your AI systems.
Outcomes
What it gets done
Detect hardcoded credentials and insecure storage.
Identify prompt injection and parameter manipulation risks.
Scan for tool poisoning and conversation exfiltration.
Verify MCP protocol compliance and input validation.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-mcpwatch | bash Capabilities
Tools your agent gets
Scans a remote MCP server repository for security vulnerabilities and issues.
Scans a local MCP project directory for security vulnerabilities and issues.
Overview
MCPWatch MCP Server
What it does
MCPWatch is a security scanner for Model Context Protocol (MCP) servers. It detects a variety of vulnerabilities including hardcoded credentials, tool poisoning, parameter injection, prompt injection, tool mutation, conversation exfiltration, and protocol violations. It also scans for input validation issues, server spoofing, toxic data flows, and permission problems.
How it connects
Use MCPWatch to proactively identify and mitigate security risks in your MCP server implementations. It is ideal for developers and security teams seeking to secure AI systems against specific MCP-related attack vectors during development or within automated pipelines.
Source README
MCP Watch ๐
A comprehensive security scanner for Model Context Protocol (MCP) servers that detects vulnerabilities and security issues in your MCP implementations.
Features
- ๐ Credential Detection - Finds hardcoded API keys, tokens, and insecure credential storage
- ๐งช Tool Poisoning - Detects hidden malicious instructions in tool descriptions
- ๐ฏ Parameter Injection - Identifies magic parameters that extract sensitive AI context
- ๐ Prompt Injection - Scans for prompt manipulation and injection attacks
- ๐ Tool Mutation - Detects dynamic tool changes and rug-pull risks
- ๐ฌ Conversation Exfiltration - Finds triggers that steal conversation history
- ๐จ ANSI Injection - Detects steganographic attacks using escape sequences
- ๐ Protocol Violations - Identifies MCP protocol security violations
- ๐ก๏ธ Input Validation - Finds command injection, SSRF, and path traversal issues
- ๐ญ Server Spoofing - Detects servers impersonating popular services
- ๐ Toxic Flows - Identifies dangerous data flow patterns
- ๐ Permission Issues - Finds excessive permissions and access control problems
Quick Start ๐
Option 1: NPM Package (Recommended)
# Install globally
npm install -g mcp-watch
# Scan any GitHub MCP repository
mcp-watch scan https://github.com/user/mcp-server
# Scan your local MCP project
mcp-watch scan-local /path/to/your/mcp-project
Option 2: From GitHub Source
# Clone and use immediately
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build
# Scan GitHub repos
npm run scan:github https://github.com/user/mcp-server
# Scan local projects
npm run scan:local /path/to/your/mcp-project
Option 3: Docker (No Installation)
# Scan without installing anything
docker run --rm mcp-watch scan https://github.com/user/mcp-server
docker run --rm -v $(pwd):/workspace mcp-watch scan-local /workspace
Installation
Global Installation
npm install -g mcp-watch
Local Installation
npm install mcp-watch
From Source
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build
Docker Installation ๐ณ
Quick Start with Docker
# Build and run locally
docker build -t mcp-watch .
docker run --rm mcp-watch scan https://github.com/user/mcp-server
# Build from source
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
docker build -t mcp-watch .
Docker Compose (Recommended for Production)
# Build and run with Docker Compose
docker compose build
docker compose up mcp-watch
# Or run a one-off scan
docker compose run --rm mcp-watch scan https://github.com/user/repo
Docker Features
- ๐ Security: Non-root user, minimal attack surface
- ๐ฆ Optimized: Multi-stage builds, Alpine Linux base
- ๐ Production: Ready for deployment and CI/CD
- ๐งน Simplified: Single optimized Dockerfile for all use cases
Usage
Command Line
Scan GitHub Repositories
# 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
Scan Local Projects
# Scan current directory
mcp-watch scan-local .
# Scan specific directory (absolute path)
mcp-watch scan-local /path/to/your/mcp-project
# Scan specific directory (relative path)
mcp-watch scan-local ../my-mcp-server
# Local scan with JSON output
mcp-watch scan-local . --format json
# Local scan with severity filter
mcp-watch scan-local . --severity high
Installation Method Usage
From NPM Package
# Global installation (recommended)
npm install -g mcp-watch
mcp-watch scan https://github.com/user/mcp-server
mcp-watch scan-local /path/to/project
From GitHub Source
# Clone and build
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build
# Use built version
node dist/main.js scan https://github.com/user/mcp-server
node dist/main.js scan-local /path/to/project
# Or use npm scripts
npm run scan https://github.com/user/mcp-server
npm run scan-local /path/to/project
Docker Usage ๐ณ
# Production container
docker run --rm mcp-watch scan https://github.com/user/mcp-server
docker run --rm mcp-watch scan https://github.com/user/mcp-server --format json --severity high
# Docker Compose
docker compose run --rm mcp-watch scan https://github.com/user/repo
docker compose run --rm mcp-watch scan https://github.com/user/repo --format json
# Interactive container
docker run -it --rm mcp-watch sh
Options
--format <type>- Output format:console(default) orjson--severity <level>- Minimum severity:low,medium,high,critical--category <cat>- Filter by vulnerability category
Categories
credential-leak- Hardcoded credentials and insecure storagetool-poisoning- Malicious tool descriptionsdata-exfiltration- Data theft and parameter injectionprompt-injection- Prompt manipulation attackstool-mutation- Dynamic tool changessteganographic-attack- Hidden content in escape sequencesprotocol-violation- MCP protocol security issuesinput-validation- Command injection, SSRF, path traversalserver-spoofing- Server impersonationtoxic-flow- Dangerous data flowsaccess-control- Permission and access issues
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
โโโ Docker/ # Containerization
โโโ Dockerfile # Production image
โโโ docker-compose.yml # Multi-service orchestration (Docker Compose v2)
โโโ .dockerignore # Build optimization
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
# Type checking
npm run type-check
Development Workflow ๐
Local Development (Recommended)
# Install dependencies
npm install
# Run development server
npm run dev
# Run scans during development
npm run scan https://github.com/user/repo
# Type checking
npm run type-check
Docker Development ๐ณ
# Build Docker image
docker compose build
# Test the image
docker run --rm mcp-watch scan https://github.com/user/repo
# Test Docker Compose
docker compose run --rm mcp-watch scan --help
Adding New Scanners
- Create a new scanner in
scanner/scanners/ - Extend
AbstractScanner - Implement the
scan()method - 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:
- Parameter injection attacks that extract sensitive AI context
- Tool poisoning with hidden malicious instructions
- Conversation exfiltration using trigger phrases
- Steganographic attacks via ANSI escape sequences
- Toxic agent flows across repository boundaries
Research Sources
VulnerableMCP Database (vulnerablemcp.info)
- Comprehensive database of MCP vulnerabilities
- Real-world attack patterns and examples
- Regular updates on new attack vectors
HiddenLayer Research (Exploiting MCP Tool Parameters)
- Parameter injection attacks that extract sensitive data
- Tool call history and conversation exfiltration
- System prompt extraction vulnerabilities
- Chain of thought manipulation
- Model name disclosure risks
Invariant Labs Research (GitHub MCP Vulnerability)
- Tool poisoning detection
- Toxic agent flows
- Cross-repository security issues
- Rug-pull updates in tool functionality
- Server spoofing prevention
Trail of Bits Research (MCP Security Research)
- Conversation exfiltration methods
- ANSI injection attacks
- Protocol-level vulnerabilities
- Insecure credential storage patterns
- Cross-server shadowing attacks
PromptHub Analysis (5 MCP Security Vulnerabilities)
- Command injection patterns (43% of public MCP servers affected)
- SSRF vulnerability statistics (30% allow arbitrary URL fetching)
- Path traversal attack vectors (22% leak files outside intended directories)
- Retrieval-Agent Deception (RADE) attacks
- Tool poisoning prevention strategies
Exit Codes
0- No critical or high severity vulnerabilities found1- Critical or high severity vulnerabilities detected1- Scan error occurred
GitHub Actions ๐
This repository uses automated workflows for CI/CD, security scanning, and dependency management:
- CI: Automated testing and Docker verification on every push/PR
- Security Scan: Daily security audits and vulnerability checks
- Dependency Update: Weekly dependency maintenance and security fixes
- Release: Automated release asset creation
- Docker Test: Docker-specific testing and validation
Dependabot ๐ค
Automated dependency management with:
- npm: Weekly updates with auto-merge for minor/patch versions
- GitHub Actions: Automated action updates
- Docker: Base image updates
See GITHUB_ACTIONS.md for detailed workflow documentation.
Docker Development Workflow ๐ณ
# Clone and setup
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
# Build Docker image
docker compose build
# Test the image
docker run --rm mcp-watch --help
# Run a scan
docker compose run --rm mcp-watch scan https://github.com/user/repo
Trust
How it checks out
Discussion
Questions & comments ยท 0
Sign In Sign in to leave a comment.