{"id":50370124,"url":"https://github.com/pouyasadri/env-validator-mcp","last_synced_at":"2026-05-30T06:31:04.203Z","repository":{"id":360816106,"uuid":"1251819539","full_name":"pouyasadri/env-validator-mcp","owner":"pouyasadri","description":"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.","archived":false,"fork":false,"pushed_at":"2026-05-28T00:53:34.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T02:21:38.450Z","etag":null,"topics":["ai-assistant","ai-tools","cluade-code","env","golang","llm-tools","mcp","mcp-server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pouyasadri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-28T00:11:25.000Z","updated_at":"2026-05-28T00:53:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pouyasadri/env-validator-mcp","commit_stats":null,"previous_names":["pouyasadri/env-validator-mcp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pouyasadri/env-validator-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pouyasadri%2Fenv-validator-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pouyasadri%2Fenv-validator-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pouyasadri%2Fenv-validator-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pouyasadri%2Fenv-validator-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pouyasadri","download_url":"https://codeload.github.com/pouyasadri/env-validator-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pouyasadri%2Fenv-validator-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33682998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-assistant","ai-tools","cluade-code","env","golang","llm-tools","mcp","mcp-server"],"created_at":"2026-05-30T06:31:03.402Z","updated_at":"2026-05-30T06:31:04.197Z","avatar_url":"https://github.com/pouyasadri.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# env-validator-mcp\n\n[![Go](https://img.shields.io/badge/Go-1.24-00ADD8?logo=go)](https://go.dev/)\n[![MCP SDK](https://img.shields.io/badge/MCP%20SDK-v1.6.1-blueviolet)](https://github.com/modelcontextprotocol/go-sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nAn **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.\n\nWorks with **Claude Desktop**, **Cursor**, **Gemini CLI**, and any other client that supports stdio-transport MCP servers.\n\n---\n\n## Features\n\n| MCP Tool | What it does |\n|---|---|\n| `check_tool_version` | Checks if a CLI tool is installed; optionally validates a semver constraint (e.g. `\u003e=1.21.0`) |\n| `check_env_vars` | Verifies environment variables are set, non-empty, and/or match a regex pattern |\n| `check_config_files` | Confirms files/directories exist; optionally validates JSON files and checks for required keys |\n| `validate_environment` | Full sweep: tools + env vars + config files, returns a structured JSON report |\n| `list_checks` | Lists everything this server can inspect |\n\n**Supported CLI tools:** `go`, `node`, `npm`, `docker`, `git`, `python3`, `pip3`, `make`, `curl`, `jq`, `kubectl`, `terraform`, `helm`, `rustc`, `java`\n\n---\n\n## Quick Start\n\n### 1. Build\n\n```bash\ngit clone https://github.com/pouyasadri/env-validator-mcp.git\ncd env-validator-mcp\nmake build\n# → bin/env-validator-mcp\n```\n\n### 2. Configure Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"env-validator\": {\n      \"command\": \"/Users/pouyasadri/Desktop/Projects/env-validator-mcp/bin/env-validator-mcp\"\n    }\n  }\n}\n```\n\nRestart Claude Desktop. You can now ask:\n\n\u003e *\"Check if Go, Docker and Node are installed and meeting my minimum version requirements\"*\n\n\u003e *\"Is my DATABASE_URL environment variable set?\"*\n\n\u003e *\"Run a full environment validation and tell me what's missing\"*\n\n### 3. Configure Cursor / other MCP clients\n\nMost clients support the same JSON config format. Point `command` at the binary path.\n\n---\n\n## Example Responses\n\n### `validate_environment`\n\n```json\n{\n  \"results\": [\n    {\n      \"name\": \"go\",\n      \"status\": \"ok\",\n      \"found_version\": \"1.24.2\",\n      \"expected_range\": \"\u003e=1.21.0\",\n      \"message\": \"go 1.24.2 is installed and satisfies \u003e=1.21.0\"\n    },\n    {\n      \"name\": \"docker\",\n      \"status\": \"missing\",\n      \"message\": \"docker is not found or not executable: executable file not found in $PATH\"\n    },\n    {\n      \"name\": \"HOME\",\n      \"status\": \"ok\",\n      \"message\": \"environment variable HOME is set\"\n    }\n  ],\n  \"summary\": \"6 OK, 2 issue(s) found\",\n  \"ok_count\": 6,\n  \"issue_count\": 2\n}\n```\n\n### `check_tool_version`\n\n```json\n// Arguments: { \"tool\": \"node\", \"constraint\": \"\u003e=18.0.0\" }\n{\n  \"name\": \"node\",\n  \"status\": \"outdated\",\n  \"found_version\": \"16.0.0\",\n  \"expected_range\": \"\u003e=18.0.0\",\n  \"message\": \"node 16.0.0 does not satisfy constraint \u003e=18.0.0\"\n}\n```\n\n---\n\n## Semver Constraint Syntax\n\n| Operator | Example | Meaning |\n|---|---|---|\n| `\u003e=` | `\u003e=1.21.0` | Version must be 1.21.0 or newer |\n| `\u003e` | `\u003e1.20.0` | Version must be strictly newer than 1.20.0 |\n| `\u003c=` | `\u003c=3.0.0` | Version must be 3.0.0 or older |\n| `\u003c` | `\u003c3.0.0` | Version must be strictly older than 3.0.0 |\n| `=` | `=1.24.2` | Version must match exactly |\n| *(empty)* | `\"\"` | Any version — just check if installed |\n\n---\n\n## Development\n\n### Prerequisites\n\n- Go 1.24+\n\n### Commands\n\n```bash\nmake build      # Compile binary to bin/\nmake test       # Run all tests\nmake test-race  # Run with race detector\nmake coverage   # Generate HTML coverage report\nmake lint       # Run golangci-lint\nmake clean      # Remove build artifacts\n```\n\n### Project Structure\n\n```\nenv-validator-mcp/\n├── cmd/server/          # Entry point (main.go)\n├── internal/\n│   ├── checker/         # Tool, env, and file checkers (interfaces + implementations)\n│   ├── report/          # Result and Report types\n│   └── semver/          # Version extraction and constraint checking\n├── mcp/                 # MCP server setup and tool handlers\n├── Makefile\n└── go.mod\n```\n\n### Architecture: Dependency Injection for TDD\n\nAll external effects are hidden behind interfaces:\n\n```\nCommander   → exec.Command (real) / MockCommander (tests)\nEnvReader   → os.LookupEnv (real) / MockEnvReader (tests)\nFileSystem  → os.Stat/ReadFile (real) / MockFileSystem (tests)\n```\n\nThis allows every checker to be tested in complete isolation — no spawned processes, no real environment, no filesystem I/O.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpouyasadri%2Fenv-validator-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpouyasadri%2Fenv-validator-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpouyasadri%2Fenv-validator-mcp/lists"}