{
  "markdown": "# deploycheck\n\n![Claude Code Plugin](https://img.shields.io/badge/Claude_Code-Plugin-blueviolet)\n![License: MIT](https://img.shields.io/badge/License-MIT-green)\n![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue)\n\nDeploy readiness checker for Claude Code. An MCP server that lets Claude verify if your environments are safe to ship — health checks, CI status, Docker tag comparison, and release diffs in one sweep.\n\n## Prerequisites\n\n- **Node.js** >= 18.0.0\n- **npm**\n- A **GitHub** or **GitLab** personal access token (see [Token scopes](#token-scopes))\n\n## Quick start\n\n```bash\n# Clone\ngit clone https://github.com/kawehtaher/deploycheck.git\ncd deploycheck\n\n# Install and build\ncd server\nnpm install\nnpm run build\ncd ..\n\n# Configure\ncp deploycheck.example.yml deploycheck.yml\n# Edit deploycheck.yml with your project details\n\n# Set tokens\nexport GITHUB_TOKEN=ghp_...      # or GITLAB_TOKEN for GitLab\nexport DOCKER_HUB_TOKEN=...      # optional, for private images\n\n# Install the plugin in Claude Code\nclaude plugin add ./\n```\n\n## How it works\n\ndeploycheck runs as a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server over stdio. When installed as a Claude Code plugin, it exposes five tools that Claude can call to inspect your deployment pipeline:\n\n1. Pings health endpoints on your configured environments\n2. Queries GitHub Actions or GitLab CI for the latest pipeline status\n3. Compares Docker image tags between environments via Docker Hub\n4. Diffs commits between staging and production refs via the GitHub API\n5. Combines all of the above into a single go/no-go readiness report\n\n## Configuration\n\nPlace a `deploycheck.yml` in your project root, or set the `DEPLOYCHECK_CONFIG` environment variable to point to it.\n\n```yaml\nproject: my-app\n\nenvironments:\n  staging:\n    url: https://staging.myapp.com\n    health_endpoint: /api/health\n    docker_image: myapp/api\n    docker_tag_source: git       # \"git\" or \"docker-hub\"\n\n  production:\n    url: https://myapp.com\n    health_endpoint: /api/health\n    docker_image: myapp/api\n    docker_tag_source: git\n\nci:\n  provider: github-actions       # or \"gitlab-ci\"\n  repo: owner/repo\n  branch: main\n\ngit:\n  staging_ref: staging\n  production_ref: production\n```\n\n### Config reference\n\n| Field | Required | Description |\n|---|---|---|\n| `project` | Yes | Project name |\n| `environments.<name>.url` | Yes | Base URL for the environment |\n| `environments.<name>.health_endpoint` | Yes | Path to health endpoint (must start with `/`) |\n| `environments.<name>.docker_image` | Yes | Docker image in `[namespace/]repository` format |\n| `environments.<name>.docker_tag_source` | No | `\"git\"` (default) or `\"docker-hub\"` |\n| `ci.provider` | Yes | `\"github-actions\"` or `\"gitlab-ci\"` |\n| `ci.repo` | Yes | Repository identifier (`owner/repo` for GitHub, project path or numeric ID for GitLab) |\n| `ci.branch` | No | Branch to check CI status for (default: `main`) |\n| `git.staging_ref` | No | Branch or tag representing staging (default: `staging`) |\n| `git.production_ref` | No | Branch or tag representing production (default: `production`) |\n\n### Environment variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `GITHUB_TOKEN` | Yes (GitHub) | GitHub personal access token |\n| `GITLAB_TOKEN` | Yes (GitLab) | GitLab personal access token |\n| `DOCKER_HUB_TOKEN` | No | Docker Hub token for private images (public images work without it) |\n| `DEPLOYCHECK_CONFIG` | No | Path to config file (default: `./deploycheck.yml`) |\n\n### Token scopes\n\n| Provider | Required scope |\n|---|---|\n| GitHub | `actions:read` (for CI status), `repo` or `contents:read` (for release diff) |\n| GitLab | `read_api` |\n| Docker Hub | Read access (only needed for private images) |\n\n## Available tools\n\n### `check_health`\n\nPing one or all environment health endpoints. Returns status code, response time, and healthy/unhealthy verdict. Health checks timeout after 5 seconds.\n\n| Parameter | Required | Description |\n|---|---|---|\n| `environment` | Yes | Environment name from config, or `\"all\"` to check every environment |\n\n```\n> Check if staging is healthy\n> Check health on all environments\n```\n\n### `get_ci_status`\n\nGet the latest CI pipeline status for a branch. Supports GitHub Actions and GitLab CI.\n\n| Parameter | Required | Description |\n|---|---|---|\n| `branch` | No | Branch to check (defaults to `ci.branch` from config) |\n\n```\n> What's the CI status on main?\n> Is the latest build passing?\n```\n\n### `compare_envs`\n\nCompare two environments side-by-side — Docker image tags, health status, and differences.\n\n| Parameter | Required | Description |\n|---|---|---|\n| `source` | Yes | Source environment name (e.g. `\"staging\"`) |\n| `target` | Yes | Target environment name (e.g. `\"production\"`) |\n\n```\n> Compare staging and production\n> Are staging and production running the same version?\n```\n\n### `get_release_diff`\n\nShow what would be deployed — commits between staging and production refs. **GitHub only** — uses the GitHub compare API.\n\n| Parameter | Required | Description |\n|---|---|---|\n| `source_ref` | No | Source branch/tag (defaults to `git.staging_ref` from config) |\n| `target_ref` | No | Target branch/tag (defaults to `git.production_ref` from config) |\n\n```\n> What commits are waiting to be deployed?\n> Show me the diff between staging and production\n```\n\n### `run_all_checks`\n\nFull readiness sweep. Runs health checks on all environments, CI status, environment comparison, and release diff concurrently. Returns a go/no-go recommendation with blockers and warnings.\n\n| Parameter | Required | Description |\n|---|---|---|\n| `source` | No | Source environment for comparison (default: `\"staging\"`) |\n| `target` | No | Target environment for comparison (default: `\"production\"`) |\n\nReadiness verdict:\n- **READY** — all checks pass, no blockers or warnings\n- **WARNINGS** — no blockers, but issues worth reviewing (tag mismatches, cancelled CI, etc.)\n- **NOT READY** — blockers found (unhealthy environments, failed CI)\n\n```\n> Are we ready to deploy?\n> Run a full deploy check\n> Is it safe to ship?\n```\n\n## Example conversations\n\n**Quick health check:**\n```\nYou: Is staging healthy?\nClaude: [runs check_health for staging]\n> staging: HEALTHY — HTTP 200, 142ms\n```\n\n**Pre-deploy review:**\n```\nYou: Are we ready to deploy to production?\nClaude: [runs run_all_checks]\n> Deploy Readiness: WARNINGS\n> Health: staging OK, production OK\n> CI: SUCCESS on main (abc1234)\n> Tags: staging=v1.3.0, production=v1.2.9 (mismatch)\n> 4 commits ahead, 12 files changed\n> Warning: Tag mismatch between staging and production\n```\n\n**Investigating a failure:**\n```\nYou: Why isn't production healthy?\nClaude: [runs check_health for production]\n> production: UNHEALTHY — HTTP 503, 2341ms\n> The production health endpoint is returning 503. This usually indicates\n> the service is overloaded or in maintenance mode.\n```\n\n## Project structure\n\n```\ndeploycheck/\n├── .claude-plugin/          # Claude Code plugin manifest\n│   └── plugin.json\n├── .mcp.json                # MCP server configuration\n├── skills/\n│   └── deploy-check/\n│       └── SKILL.md         # Skill prompt for Claude\n├── server/\n│   └── src/\n│       ├── index.ts         # MCP server entry point (stdio transport)\n│       ├── types.ts         # Shared type definitions\n│       ├── config/\n│       │   ├── schema.ts    # Zod config schema + validation\n│       │   └── loader.ts    # YAML config file loader\n│       ├── tools/           # MCP tool handlers\n│       │   ├── check-health.ts\n│       │   ├── get-ci-status.ts\n│       │   ├── compare-envs.ts\n│       │   ├── get-release-diff.ts\n│       │   └── run-all-checks.ts\n│       └── providers/       # External service integrations\n│           ├── ci/\n│           │   ├── github-actions.ts\n│           │   └── gitlab-ci.ts\n│           └── registry/\n│               └── docker-hub.ts\n├── deploycheck.example.yml  # Example configuration\n└── tsconfig.json\n```\n\n## Development\n\n```bash\ncd server\nnpm install\nnpm run dev          # watch mode\nnpm test             # run tests\nnpm run build        # production build\nnpm run lint         # check linting\nnpm run typecheck    # type check without emitting\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/my-feature`)\n3. Make your changes with tests\n4. Ensure `npm test` passes\n5. Submit a pull request\n\n## License\n\n[MIT](LICENSE) - Kaveh Taher\n",
  "bytes": 8412,
  "sha": "3f28c7c7cf4c19c879be693f71a4a70fd5a4545da70d3387f24ea630bb835551",
  "repo_slug": "kawehtaher/deploycheck",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_kawehtaher_deploycheck_deploycheck_02be05de/readme"
}