# MCP Security Analyst

[![Go](https://github.com/gleicon/mcp-osv/actions/workflows/go.yml/badge.svg)](https://github.com/gleicon/mcp-osv/actions/workflows/go.yml)

A Model Context Protocol (MCP) server providing comprehensive security analysis capabilities through integration with OSV.dev vulnerability database and native Go-based code analysis and secret detection engines.

## Features

  * **Supply Chain Vulnerability Analysis**: Integration with OSV.dev API for dependency vulnerability assessment
  *  **Secret Detection**: Gitleaks v8 integration with 100+ built-in detection rules for credentials and API keys
  *  **Static Code Analysis**: AST-based Go code analysis for security anti-patterns
  * **Pattern Matching**: Regex-based detection for common security vulnerabilities
  * **MCP Protocol Support**: Standard protocol implementation for AI assistant integration
  *  **Community-Vetted Rules**: Gitleaks patterns maintained by the security community

## Requirements

### Core Requirements
```bash
make deps
make install
```

### Build Dependencies
  * Go 1.25.4 or later
  * github.com/mark3labs/mcp-go 
  * github.com/zricethezav/gitleaks/v8 

## Installation

```bash
make deps     # Install Go module dependencies
make build    # Compile binary
make install  # Install to /usr/local/bin
make run       # Build and execute server
make clean     # Remove build artifacts
```

[pre-built releases](https://github.com/gleicon/mcp-osv/releases)

The mcp-osv binary communicates via stdin/stdout using the MCP protocol.

### IDE Configuration

#### Cursor IDE

Navigate to Configuration > MCP and add:

```json
{
  "mcpServers": {
    "security_analyst": {
      "name": "Security Analyst",
      "type": "stdio",
      "command": "/usr/local/bin/mcp-osv"
    }
  }
}
```

#### Claude Desktop

Edit the MCP configuration file at Settings > Developer:

```json
{
  "mcpServers": {
    "mcp_osv": {
      "command": "/usr/local/bin/mcp-osv",
      "args": []
    }
  }
}
```

## Available Tools

The server exposes three MCP tools for security analysis:

### check_vulnerabilities

Query OSV.dev database for known vulnerabilities in specific package versions.

**Parameters:**
  *  `package_name` (string, required): Package identifier
  *  `version` (string, required): Version string

**Functionality:**
  *  Rate-limited API requests (1 request/second)
  *  HTTP timeout protection (10 seconds)
  *  JSON response parsing
  *  Vulnerability detail extraction

### analyze_security

Comprehensive security analysis combining multiple detection engines.

**Parameters:**
  *  `file_path` (string, required): Target file or directory path

**Analysis Components:**
  *  Native Go AST-based code analysis
  *  Gitleaks v8 secret detection with 100+ rules
  *  OSV.dev vulnerability checks for dependencies (go.mod files)
  *  Pattern-based vulnerability detection

**Detected Issues:**
  *  Command injection vectors
  *  Deserialization vulnerabilities
  *  SQL injection patterns
  *  Hardcoded credentials
  *  API keys and tokens
  *  Private keys and certificates
  *  Database connection strings

### scan_secrets

Dedicated secret detection using Gitleaks v8 with 100+ community-maintained detection rules.

**Parameters:**
  *  `path` (string, required): Target file, directory, or repository path
  *  `scan_git_history` (boolean, optional): Enable git history scanning (default: false)

**Detection Capabilities (100+ patterns):**
  *  AWS Access Keys, Secret Keys, Session Tokens
  *  GitHub Personal Access Tokens, OAuth tokens
  *  Google Cloud Platform API keys
  *  Azure credentials and connection strings
  *  Slack tokens and webhooks
  *  Stripe API keys
  *  Private SSH/PGP/RSA keys
  *  JWT tokens
  *  Database connection strings (PostgreSQL, MySQL, MongoDB)
  *  Generic API keys with entropy analysis
  *  And 90+ more patterns maintained by the security community

**Output:** Partial secret redaction for secure display (first 4 + last 4 characters)

## Integration Patterns

The MCP server enables AI assistants to perform security analysis through natural language requests:

**Dependency Vulnerability Scanning:**
```
Request: "Check dependencies in go.mod for vulnerabilities"
Tool Execution: analyze_security -> OSV.dev API queries
Response: Vulnerability report with CVE details
```

**Secret Detection:**
```
Request: "Scan repository for exposed credentials"
Tool Execution: scan_secrets -> Pattern matching + entropy analysis
Response: Detected secrets with file locations and types
```

**Comprehensive Audit:**
```
Request: "Perform full security analysis"
Tool Execution: analyze_security -> All detection engines
Response: Combined report (code issues + secrets + vulnerabilities)
```

## Security Implementation Details

### Rate Limiting
OSV.dev API requests are rate-limited at 1 request per second using golang.org/x/time/rate limiter to prevent service throttling.

### Input Validation
All file paths undergo sanitization to prevent directory traversal attacks:
  *  Path cleaning via filepath.Clean()
  *  Directory traversal pattern detection
  *  Existence verification

### Secret Redaction
Detected secrets are partially redacted before display:
  *  Secrets <= 8 characters: Full redaction
  *  Secrets > 8 characters: First 4 + "***" + Last 4 characters

### Gitleaks Integration
Secret detection powered by Gitleaks v8:
  *  100+ community-maintained detection rules
  *  Entropy analysis for high-randomness strings
  *  Keyword-based pre-filtering for performance
  *  Regular updates for new secret types

### Adding Security Rules

To extend detection capabilities:

1. **Secrets and credential detection**: Gitleaks rules are maintained upstream at [gitleaks/gitleaks](https://github.com/gitleaks/gitleaks/blob/master/config/gitleaks.toml)
2. **Code Analysis**: Extend AST inspection in `runGoCodeAnalysis()`
3. **Pattern Matching**: Regex patterns can be added to `analyzeFile()` checks map, create a branch and PR explaining them to get merged

## License

MIT

