MCP Connector

Scan Repositories for Vulnerabilities

AI-powered security scanner MCP server for Python dependency vulnerabilities, secrets, and Dockerfile analysis.

Works with githubopenaianthropic

91
Spark score
out of 100
Updated 5 months ago
Version 1.0.0
Models
universal

Add to Favorites

Why it matters

Automate the detection of security vulnerabilities in Python projects and GitHub repositories. This asset leverages multiple vulnerability databases and AI for enhanced risk assessment, ensuring your code is secure.

Outcomes

What it gets done

01

Scan Python packages and dependency files for known vulnerabilities.

02

Analyze GitHub repositories for security flaws and exposed secrets.

03

Assess the risk of operations and validate MCP server security configurations.

04

Provide AI-powered analysis for comprehensive security checks.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-vulnicheck | bash

Capabilities

Tools your agent gets

check_package_vulnerabilities

Check a specific Python package for vulnerabilities across multiple databases

scan_dependencies

Scan dependency files like requirements.txt and pyproject.toml for vulnerabilities

scan_installed_packages

Scan currently installed Python packages for security vulnerabilities

get_cve_details

Get detailed information about a specific CVE identifier

scan_for_secrets

Detect hidden secrets and credentials in code

scan_dockerfile

Analyze Dockerfiles for vulnerable Python dependencies

scan_github_repo

Comprehensive security scanning of GitHub repositories

assess_operation_safety

AI-powered risk assessment for operations

+2 tools

Overview

vulnicheck MCP Server

An AI-powered security scanner MCP server for Python projects and GitHub repositories, running as a Docker-based HTTP server with tools for dependency vulnerability scanning, secrets detection, Dockerfile analysis, and AI-generated risk assessments with remediation recommendations. Use when you need an AI-driven security scan of a Python project or GitHub repo through Claude Code; OAuth-gated external-client access over HTTP transport currently doesn't work due to a FastMCP limitation.

What it does

VulniCheck is an AI-powered security scanner MCP server providing comprehensive security analysis for Python projects and GitHub repositories. It runs as a Docker-based HTTP MCP server with standard HTTP streaming, no SSE required, scanning dependencies for known vulnerabilities, detecting exposed secrets and credentials, analyzing Dockerfiles for vulnerable packages, validating MCP configurations, and generating AI-powered risk assessments with actionable remediation recommendations.

When to use - and when NOT to

Use this when you want an AI-driven security check on a Python project or GitHub repository - dependency vulnerability scanning, secrets detection, Dockerfile analysis, or a comprehensive AI-powered risk assessment - directly from a conversation with Claude Code.

Not needed for non-Python projects, or when you need OAuth-gated access with external clients like ChatGPT over HTTP transport - a known FastMCP limitation currently breaks OAuth in that configuration.

Capabilities

Ten tools: check_package_vulnerabilities checks a specific Python package, scan_dependencies scans requirements.txt/pyproject.toml/etc., scan_installed_packages scans the current environment, get_cve_details looks up a specific CVE, scan_for_secrets finds exposed API keys/passwords/credentials, scan_dockerfile finds vulnerable Python dependencies in Dockerfiles, scan_github_repo runs a comprehensive scan of a public or private repo up to 1GB, assess_operation_safety provides AI-powered risk assessment, validate_mcp_security checks MCP server security configuration, and comprehensive_security_check runs an interactive AI-powered assessment. Queries 5+ vulnerability databases - OSV.dev, NVD, GitHub Advisory, CIRCL, Safety DB - uses commit-level caching to avoid redundant scans, and enforces a 2GB total disk limit with automatic cleanup.

How to install

Pull and run the Docker image, then register it with Claude Code:

docker pull andrasfe/vulnicheck:latest
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e OPENAI_API_KEY=your-openai-api-key \
  andrasfe/vulnicheck:latest
claude mcp add --transport http vulnicheck http://localhost:3000/mcp

Works zero-config out of the box; optional environment variables, OPENAI_API_KEY or ANTHROPIC_API_KEY for AI-powered assessment, GITHUB_TOKEN for higher GitHub API rate limits, and NVD_API_KEY for higher NVD rate limits, enhance it further. Optional Google OAuth 2.0 authentication is supported, disabled by default, via FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID/_CLIENT_SECRET/FASTMCP_SERVER_BASE_URL environment variables, but a known FastMCP 2.12.4 limitation means OAuth's authorization endpoints return 404 over HTTP transport with external clients like ChatGPT or Claude Desktop - the recommended workaround is running without authentication when accessed via ngrok or another public URL.

Who it's for

Developers and security teams who want AI-powered vulnerability, secrets, and Dockerfile scanning for Python projects and GitHub repos directly through Claude Code, without standing up separate scanning infrastructure.

Source README

VulniCheck - AI-Powered Security Scanner

VulniCheck provides comprehensive security analysis for Python projects and GitHub repositories using AI-powered vulnerability detection. It runs as a Docker-based HTTP MCP server with standard HTTP streaming (no SSE required), providing secure containerized deployment with comprehensive vulnerability scanning capabilities.

Quick Start

1. Pull and Run the Docker Container

# Pull the latest image from Docker Hub
docker pull andrasfe/vulnicheck:latest

# Run with OpenAI API key (for enhanced AI-powered risk assessment)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e OPENAI_API_KEY=your-openai-api-key \
  andrasfe/vulnicheck:latest

# Or run without API key (basic vulnerability scanning)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

2. Add to Claude Code

claude mcp add --transport http vulnicheck http://localhost:3000/mcp

That's it! VulniCheck is now available in Claude Code.

Usage

Once installed, simply ask Claude:

"Run a comprehensive security check on my project"

"Scan https://github.com/owner/repo for vulnerabilities"

"Check my dependencies for security issues"

"Scan my Dockerfile for vulnerable packages"

VulniCheck will:

  • ✅ Scan dependencies for known vulnerabilities (requirements.txt, pyproject.toml, setup.py)
  • ✅ Detect exposed secrets and credentials
  • ✅ Analyze Dockerfiles for security issues
  • ✅ Validate MCP configurations
  • ✅ Generate AI-powered risk assessments
  • ✅ Provide actionable remediation recommendations

Key Features

  • Docker Deployment: Secure containerized deployment with HTTP streaming (no SSE/Server-Sent Events required)
  • Optional Authentication: Supports Google OAuth 2.0 for secure access control (disabled by default)
  • Production Ready: Scalable HTTP server architecture
  • Comprehensive Coverage: Queries 5+ vulnerability databases (OSV.dev, NVD, GitHub Advisory, CIRCL, Safety DB)
  • GitHub Integration: Scan any public/private GitHub repository directly (up to 1GB)
  • AI-Powered Analysis: Uses OpenAI/Anthropic APIs for intelligent security assessment
  • Secrets Detection: Finds exposed API keys, passwords, and credentials
  • Docker Security: Analyzes Dockerfiles for vulnerable dependencies
  • Smart Caching: Avoids redundant scans with commit-level caching
  • Space Management: Automatic cleanup prevents disk exhaustion (2GB total limit)
  • Zero Config: Works out of the box, enhanced with optional API keys

Available Tools

Tool Description
check_package_vulnerabilities Check a specific Python package for vulnerabilities
scan_dependencies Scan dependency files (requirements.txt, pyproject.toml, etc.)
scan_installed_packages Scan currently installed Python packages
get_cve_details Get detailed information about a specific CVE
scan_for_secrets Detect exposed secrets and credentials in code
scan_dockerfile Analyze Dockerfiles for vulnerable Python dependencies
scan_github_repo Comprehensive security scan of GitHub repositories
assess_operation_safety AI-powered risk assessment for operations
validate_mcp_security Validate MCP server security configurations
comprehensive_security_check Interactive AI-powered security assessment

Optional API Keys

Enhance VulniCheck with API keys for better rate limits and AI features:

docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e OPENAI_API_KEY=your-key \           # AI-powered risk assessment
  -e ANTHROPIC_API_KEY=your-key \        # Alternative AI provider
  -e GITHUB_TOKEN=your-token \           # Higher GitHub API rate limits
  -e NVD_API_KEY=your-key \              # Higher NVD rate limits
  andrasfe/vulnicheck:latest

Authentication (Optional)

VulniCheck supports optional Google OAuth 2.0 authentication for secure access control. By default, authentication is disabled.

Enabling Google OAuth

  1. Get Google OAuth Credentials:

    • Go to Google Cloud Console
    • Create a project and enable Google+ API
    • Create OAuth 2.0 credentials (Web application)
    • Add authorized redirect URI: http://localhost:3000/oauth/callback (or your domain)
  2. Configure Environment Variables:

    export FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
    export FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET="GOCSPX-your-secret-here"
    export FASTMCP_SERVER_BASE_URL="http://localhost:3000"
    
  3. Run with Authentication:

    docker run -d --name vulnicheck-mcp -p 3000:3000 \
      --restart=unless-stopped \
      -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id \
      -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-secret \
      -e FASTMCP_SERVER_BASE_URL=http://localhost:3000 \
      -v vulnicheck_tokens:/home/vulnicheck/.vulnicheck/tokens \
      andrasfe/vulnicheck:latest \
      python -m vulnicheck.server --auth-mode google
    
  4. Using docker-compose:
    See docker-compose.auth-example.yml for a complete configuration example.

Note: OAuth tokens are persisted in /home/vulnicheck/.vulnicheck/tokens. Use a Docker volume to persist tokens across container restarts.

⚠️ Known OAuth Limitations

FastMCP OAuth + HTTP Transport Incompatibility

Due to a limitation in FastMCP 2.12.4, OAuth authentication does not work properly with HTTP transport (streamable-http). The authorization endpoints (/oauth/authorize, /oauth/callback) are not correctly mounted, resulting in 404 errors.

When OAuth Works:

  • ✅ Local connections (when supported in future FastMCP versions)
  • ✅ OAuth discovery endpoint works (/.well-known/oauth-protected-resource)

When OAuth Does NOT Work:

  • ❌ HTTP transport with external clients (ChatGPT, Claude Desktop, etc.)
  • ❌ Authorization endpoints return 404
  • ❌ Token exchange fails

Workaround for External Clients (ChatGPT, etc.):

Run VulniCheck without authentication when accessing through ngrok or other public URLs:

# Start without OAuth (recommended for external clients)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

# Then configure ngrok
ngrok http 3000

In your MCP client (ChatGPT, etc.):

  • URL: https://your-ngrok-url.ngrok-free.dev/mcp
  • Authentication: None

Security Considerations:

  • ✅ Traffic is encrypted via HTTPS (ngrok)
  • ⚠️ No authentication - anyone with URL can access
  • 💡 ngrok free URLs change on restart (security through obscurity)
  • 🔒 For production, use ngrok paid tier with password protection or IP whitelisting

Future Resolution:
This limitation will be resolved when:

  1. FastMCP fixes OAuth + HTTP transport support, OR
  2. Alternative authentication mechanisms are implemented

Using with ngrok

Quick Start (No OAuth):

# 1. Start VulniCheck
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

# 2. Start ngrok
ngrok http 3000

# 3. Use the ngrok URL in your MCP client
# URL: https://your-generated-url.ngrok-free.dev/mcp
# Authentication: None

Optional OAuth Script (Experimental - OAuth Not Functional):

A convenience script restart-vulnicheck-ngrok.sh is provided for testing OAuth, but OAuth does not currently work due to FastMCP limitations:

# Copy the example environment file
cp .env.example .env

# Edit .env and add your credentials
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-your-secret-here
NGROK_URL=https://your-ngrok-url.ngrok-free.dev

# Run the script (OAuth will not work)
./restart-vulnicheck-ngrok.sh

Note: The script is provided for future use when FastMCP OAuth + HTTP transport is fixed. Currently, always run without OAuth for external clients.

Building from Source

# Clone the repository
git clone https://github.com/andrasfe/vulnicheck.git
cd vulnicheck

# Build Docker image
docker build -t vulnicheck .

# Run locally built image (no auth)
docker run -d --name vulnicheck-mcp -p 3000:3000 --restart=unless-stopped vulnicheck

# Run with Google OAuth
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id \
  -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-secret \
  -e FASTMCP_SERVER_BASE_URL=http://localhost:3000 \
  -v vulnicheck_tokens:/home/vulnicheck/.vulnicheck/tokens \
  vulnicheck \
  python -m vulnicheck.server --auth-mode google

Docker Hub

The official Docker image is available at:

Requirements

  • Docker
  • Claude Code or any MCP client with HTTP transport support (standard HTTP, no SSE required)
  • Optional: API keys for enhanced features

Supported File Types

  • Dependencies: requirements.txt, pyproject.toml, setup.py, lock files
  • Containers: Dockerfile, docker-compose.yml
  • Secrets: All text-based source files
  • GitHub: Any public or private repository URL

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.