Vulnicheck

io.github.andrasfePublished by GitHub account andrasfev0.1.0Updated Oct 25, 2026

HTTP MCP Server for comprehensive Python vulnerability scanning and security analysis.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

A Docker-based HTTP MCP server that lets an assistant scan Python projects and GitHub repositories for vulnerable dependencies, exposed secrets and Dockerfile,

What you can do
Check Python packages, dependency files and installed packages for known vulnerabilities, and look up CVE details across several vulnerability databases. Scan source files for exposed secrets and credentials, and analyze Dockerfiles and compose files for vulnerable packages. Scan public or private GitHub repositories and validate MCP server security configurations. Produce AI-powered risk assessments and remediation recommendations, including an interactive comprehensive security check.
When to use it
Useful when auditing a Python project, container setup or GitHub repository for security issues, or when you want an assistant to explain a CVE and suggest fixes. Also suited to checking MCP server configurations before deployment.
Requirements
Docker to run the container image, exposed on a local port (default 3000), plus an MCP client with HTTP transport support. Optional keys for enhanced features: OPENAI_API_KEY or ANTHROPIC_API_KEY for AI risk assessment, GITHUB_TOKEN and NVD_API_KEY for higher rate limits. Network access to vulnerability databases and GitHub.
Before you install
Optional secrets are passed as environment variables (OPENAI_API_KEY, ANTHROPIC_API_KEY, GITHUB_TOKEN, NVD_API_KEY); AI features send scan context to OpenAI or Anthropic. Authentication is disabled by default, and the README states OAuth does not currently work with HTTP transport, so exposing the server publicly leaves it open to anyone with the URL. Scans read project files and repository contents.

Installation

In SourceWeft

  1. Open Vulnicheck in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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

bash
# Pull the latest image from Docker Hubdocker 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

bash
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

ToolDescription
check_package_vulnerabilitiesCheck a specific Python package for vulnerabilities
scan_dependenciesScan dependency files (requirements.txt, pyproject.toml, etc.)
scan_installed_packagesScan currently installed Python packages
get_cve_detailsGet detailed information about a specific CVE
scan_for_secretsDetect exposed secrets and credentials in code
scan_dockerfileAnalyze Dockerfiles for vulnerable Python dependencies
scan_github_repoComprehensive security scan of GitHub repositories
assess_operation_safetyAI-powered risk assessment for operations
validate_mcp_securityValidate MCP server security configurations
comprehensive_security_checkInteractive AI-powered security assessment

Optional API Keys

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

bash
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:

    bash
    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:

    bash
    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:

bash
# Start without OAuth (recommended for external clients)docker run -d --name vulnicheck-mcp -p 3000:3000 \  --restart=unless-stopped \  andrasfe/vulnicheck:latest
# Then configure ngrokngrok 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):

bash
# 1. Start VulniCheckdocker run -d --name vulnicheck-mcp -p 3000:3000 \  --restart=unless-stopped \  andrasfe/vulnicheck:latest
# 2. Start ngrokngrok 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:

bash
# Copy the example environment filecp .env.example .env
# Edit .env and add your credentialsGOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.comGOOGLE_CLIENT_SECRET=GOCSPX-your-secret-hereNGROK_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

bash
# Clone the repositorygit clone https://github.com/andrasfe/vulnicheck.gitcd vulnicheck
# Build Docker imagedocker 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 OAuthdocker 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

Support


DISCLAIMER: Vulnerability data provided "AS IS" without warranty. Users are responsible for verification and remediation.

Source: README.md at commit 48bed31

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts