An open API service indexing awesome lists of open source software.

https://github.com/pouyasadri/env-validator-mcp

An MCP server that inspects your local development environment and reports missing dependencies, version mismatches, and misconfigured environment variables to any MCP-compatible AI assistant.
https://github.com/pouyasadri/env-validator-mcp

ai-assistant ai-tools cluade-code env golang llm-tools mcp mcp-server

Last synced: 23 days ago
JSON representation

An MCP server that inspects your local development environment and reports missing dependencies, version mismatches, and misconfigured environment variables to any MCP-compatible AI assistant.

Awesome Lists containing this project

README

          

# env-validator-mcp

[![Go](https://img.shields.io/badge/Go-1.24-00ADD8?logo=go)](https://go.dev/)
[![MCP SDK](https://img.shields.io/badge/MCP%20SDK-v1.6.1-blueviolet)](https://github.com/modelcontextprotocol/go-sdk)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

An **MCP (Model Context Protocol) server** that inspects your local development environment and reports missing dependencies, version mismatches, and misconfigured environment variables to any MCP-compatible AI assistant.

Works with **Claude Desktop**, **Cursor**, **Gemini CLI**, and any other client that supports stdio-transport MCP servers.

---

## Features

| MCP Tool | What it does |
|---|---|
| `check_tool_version` | Checks if a CLI tool is installed; optionally validates a semver constraint (e.g. `>=1.21.0`) |
| `check_env_vars` | Verifies environment variables are set, non-empty, and/or match a regex pattern |
| `check_config_files` | Confirms files/directories exist; optionally validates JSON files and checks for required keys |
| `validate_environment` | Full sweep: tools + env vars + config files, returns a structured JSON report |
| `list_checks` | Lists everything this server can inspect |

**Supported CLI tools:** `go`, `node`, `npm`, `docker`, `git`, `python3`, `pip3`, `make`, `curl`, `jq`, `kubectl`, `terraform`, `helm`, `rustc`, `java`

---

## Quick Start

### 1. Build

```bash
git clone https://github.com/pouyasadri/env-validator-mcp.git
cd env-validator-mcp
make build
# → bin/env-validator-mcp
```

### 2. Configure Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
"mcpServers": {
"env-validator": {
"command": "/Users/pouyasadri/Desktop/Projects/env-validator-mcp/bin/env-validator-mcp"
}
}
}
```

Restart Claude Desktop. You can now ask:

> *"Check if Go, Docker and Node are installed and meeting my minimum version requirements"*

> *"Is my DATABASE_URL environment variable set?"*

> *"Run a full environment validation and tell me what's missing"*

### 3. Configure Cursor / other MCP clients

Most clients support the same JSON config format. Point `command` at the binary path.

---

## Example Responses

### `validate_environment`

```json
{
"results": [
{
"name": "go",
"status": "ok",
"found_version": "1.24.2",
"expected_range": ">=1.21.0",
"message": "go 1.24.2 is installed and satisfies >=1.21.0"
},
{
"name": "docker",
"status": "missing",
"message": "docker is not found or not executable: executable file not found in $PATH"
},
{
"name": "HOME",
"status": "ok",
"message": "environment variable HOME is set"
}
],
"summary": "6 OK, 2 issue(s) found",
"ok_count": 6,
"issue_count": 2
}
```

### `check_tool_version`

```json
// Arguments: { "tool": "node", "constraint": ">=18.0.0" }
{
"name": "node",
"status": "outdated",
"found_version": "16.0.0",
"expected_range": ">=18.0.0",
"message": "node 16.0.0 does not satisfy constraint >=18.0.0"
}
```

---

## Semver Constraint Syntax

| Operator | Example | Meaning |
|---|---|---|
| `>=` | `>=1.21.0` | Version must be 1.21.0 or newer |
| `>` | `>1.20.0` | Version must be strictly newer than 1.20.0 |
| `<=` | `<=3.0.0` | Version must be 3.0.0 or older |
| `<` | `<3.0.0` | Version must be strictly older than 3.0.0 |
| `=` | `=1.24.2` | Version must match exactly |
| *(empty)* | `""` | Any version — just check if installed |

---

## Development

### Prerequisites

- Go 1.24+

### Commands

```bash
make build # Compile binary to bin/
make test # Run all tests
make test-race # Run with race detector
make coverage # Generate HTML coverage report
make lint # Run golangci-lint
make clean # Remove build artifacts
```

### Project Structure

```
env-validator-mcp/
├── cmd/server/ # Entry point (main.go)
├── internal/
│ ├── checker/ # Tool, env, and file checkers (interfaces + implementations)
│ ├── report/ # Result and Report types
│ └── semver/ # Version extraction and constraint checking
├── mcp/ # MCP server setup and tool handlers
├── Makefile
└── go.mod
```

### Architecture: Dependency Injection for TDD

All external effects are hidden behind interfaces:

```
Commander → exec.Command (real) / MockCommander (tests)
EnvReader → os.LookupEnv (real) / MockEnvReader (tests)
FileSystem → os.Stat/ReadFile (real) / MockFileSystem (tests)
```

This allows every checker to be tested in complete isolation — no spawned processes, no real environment, no filesystem I/O.

---

## License

MIT