# Valca [Health: Active]

**Category:** 🔒 Security  
**Repository:** https://github.com/PranLabs/valca  
**GitHub Stars:** 2  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/valca

## Description
Scans code, IaC and AI-agent config for security problems. Read-only — nothing can be edited.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "valca": {
    "command": "uvx",
    "args": ["valca"]
  }
}
```

## Documentation

## What Valca does

The Valca MCP server examines code, IaC, dependency manifests, and AI-agent configuration for security problems. It is designed to run before an AI coding assistant saves a generated file, rather than waiting for a commit or a later CI scan. The scanner is read-only: it reports findings but does not modify source files or configuration.

Valca includes 116 built-in rules across 27 categories. These cover hardcoded credentials, dangerous Python execution, GitHub Actions workflows, AI-agent prompt injection paths, Dockerfiles, Docker Compose settings, and package-related risks. One notable check identifies Docker Compose ports bound to all interfaces, such as a database published as `5432:5432` instead of being restricted to localhost.

## How it works

A Claude Code hook invokes Valca when the assistant attempts to write a file. Valca scans the target and returns a status code: `0` permits a clean write, `1` reports advisory MEDIUM, LOW, or INFO findings, and `2` indicates a CRITICAL or HIGH finding that Claude Code blocks.

The core engine runs offline and has zero runtime dependencies. Four package rules can make network requests when dependency manifests or lockfiles are scanned. They send package names and, for the OSV check, package versions to `api.osv.dev`, `pypi.org`, or `registry.npmjs.org`. Source contents, paths, and scan results are not transmitted. Disabling those four rules makes the operation fully offline.

## Setup and configuration

Install the package with:

```bash
pip install valca
```

Run `valca init --global` once to configure the global Claude Code hook, then reload Claude Code. The older `vigil` command remains available alongside `valca`, preserving existing hooks and scripts from the former package name.

Network-dependent package checks can be disabled in `.valcarc`:

```ini
disabled_rules = ["VGL-PKG001", "VGL-PKG002", "VGL-PKG003", "VGL-PKG004"]
```

## Tools and capabilities

The Valca MCP server provides command-line operations for:

- Scanning an individual file or an entire directory.
- Producing standard, JSON, or SARIF output for automation and GitHub Advanced Security workflows.
- Filtering reported findings by severity.
- Reviewing local finding history with `valca log`, including project, date, severity, limit, and format filters.
- Summarizing rule frequency, severity distribution, and suppression frequency with `valca stats`.
- Opening the project feedback and waitlist form with `valca feedback`.

## Limitations and notes

Valca does not edit files, apply fixes, or replace review of findings. The Claude Code blocking workflow depends on installing and activating its hook. Package checks have limited network access unless those rules are disabled. The rules are built into the package, and the documented catalogue contains 116 checks; detection therefore depends on the patterns those rules cover.

As a Security-category tool, the Valca MCP server is most suitable for local generation-time safeguards and scan reporting. Its documented client workflow centers on Claude Code; the README also references Gemini CLI and Copilot when discussing affected AI coding agents, but does not provide installation instructions for those clients.

_Full upstream README: https://allmcps.com/mcp/valca/readme_

