devops-deploy-guard-mcp-server
Detects Bun as a package manager and supports projects using Bun for deployment.
Automatically detects CentOS and generates idempotent provisioning plans for system packages and core utilities.
Automatically detects Debian and generates provisioning plans for system packages and core utilities.
Provides Docker deployment planning, manages Docker containers and images, and prunes dangling images.
Inspects remote database migration state for Drizzle ORM during deployment.
Automatically detects Fedora and generates provisioning plans for system packages and core utilities.
Uses Git diffs to optimize deployments and manages Git branches and resets.
Provides a specialized tool for deploying PM2-managed applications from GitHub repositories.
Provisions and configures Let's Encrypt SSL certificates via Certbot for secure HTTPS.
Generates reverse proxy blocks mapping domains to backend ports and manages Nginx configuration.
Installs dynamic Node.js versions and supports Node.js application deployments.
Detects npm as package manager and uses it for dependency installation during deployment.
Manages PM2 process manager for running Node.js applications and provides log viewing.
Detects pnpm as package manager and supports projects using pnpm.
Checks pending Prisma migrations and manages database schema deployments.
Checks pending Sequelize migrations during deployment.
Checks pending TypeORM migrations during deployment.
Automatically detects Ubuntu and generates provisioning plans for system packages and core utilities.
Detects Yarn as package manager and supports projects using Yarn.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@devops-deploy-guard-mcp-serverplan a deployment for my Node.js app"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DevOps Deploy Guard MCP Server (v1.7.0)
Production-ready, zero-knowledge AI DevOps deployment, infrastructure provisioning, self-healing execution, and persistent documentation engine for VPS servers.
devops-deploy-guard-mcp-server is an advanced Model Context Protocol (MCP) server that empowers AI coding assistants (Antigravity IDE, Claude Code/Desktop, Cursor, Kimi, etc.) to safely provision servers, configure Nginx & SSL, deploy applications, debug mid-deployment failures interactively, and maintain persistent runbooks โ without risking catastrophic production server crashes or database resets.
๐ Key Features in v1.7.0
๐ค Self-Healing Execution Engine: If a deployment command fails, the server pauses execution in a
PAUSED_AWAITING_FIXstate instead of instantly rolling back. The LLM receives full failure outputs, applies mid-deployment fixes viadiagnose_and_fix, and resumes execution seamlessly viaresume_execution.๐ Auto-Runbook Generator (
generate_project_runbook): Dynamically writes a physicalDEPLOYMENT_RUNBOOK.mdinto the user's project root containing exact manual SSH commands, Nginx blocks, SSL status, and.envlocations.๐งน Safe Resource Cleanup (
cleanup_server_resources): Checks root partition space (df -h /) and safely prunes dangling Docker images (docker image prune -f) and stale Git branches only if disk usage exceeds 70%.๐ฏ Context-Aware Conditional Deployments (
plan_dynamic_deployment): Inspects Git diffs against remote tracking branches to skip unnecessarynpm installor database migrations when manifests and schemas haven't changed.๐ก๏ธ Multi-OS Infrastructure Provisioning: Automatically detects Ubuntu, Debian, RHEL, CentOS, Fedora, and Alpine to generate idempotent provisioning plans for system packages, Node.js, PM2, Docker, UFW/Firewalld, Nginx, and Certbot SSL certificates.
๐ Two-Tier Command Sanitizer: Hard-blocks catastrophic shell commands (
rm -rf,DROP DATABASE,prisma migrate dev,:devtargets,--watch) while warning on risky operations (docker system prune,git reset --hard).
Related MCP server: CLP MCP - DevOps Infrastructure Server
๐ Security & Protection Architecture
Security Layer | Description |
Two-Step Staged Execution | Planning tools output a |
Command Sanitizer | Statically inspects all shell strings. Blocks catastrophic commands and dev flags in production environments. |
Non-Fatal Pause Engine | Pauses failed deployments without destroying Git state, enabling LLMs to run diagnostic fix commands. |
Secret Protection |
|
Path Traversal Guard | Prevents arbitrary remote file writes outside approved project paths ( |
Automatic Gitignore | Automatically adds |
๐ Comprehensive Tool Registry (19 Tools)
1. Read-Only Inspection & Analysis
Tool Name | Description |
| Inspects OS, disk space, Docker containers, PM2 processes, Nginx sites, memory usage, and local runbook/history status. |
| Detects package managers (npm, pnpm, yarn, bun), ecosystem files, Docker configs, build targets, and exposed ports. |
| Inspects remote database migration state for Prisma, TypeORM, Sequelize, Drizzle, or custom migration scripts. |
| Performs HTTP health check requests against local or domain endpoints post-deployment. |
| Fetches tail logs from PM2 processes or Docker containers via SSH. |
2. Infrastructure Provisioning & Setup
Tool Name | Description |
| Generates package update and core build utility installation plans ( |
| Provisioning plan for dynamic Node.js versions (e.g. |
| Generates UFW or Firewalld security rules to allow SSH (22), HTTP (80), and HTTPS (443). |
| Generates reverse proxy blocks mapping domain names to local backend application ports. |
| Provisions and configures Let's Encrypt SSL certificates via Certbot for secure HTTPS traffic. |
3. Environment & Security
Tool Name | Description |
| Scans codebase and generates blank |
| Writes |
4. Planning & Execution
Tool Name | Description |
| (Recommended) Context-aware deployment plan evaluating Git diffs, ORM migrations, builds, and process restarts. |
| Specialized planning tool for Docker Compose containerized applications. |
| Specialized planning tool for PM2-managed Node.js applications. |
| Executes a generated deployment plan step-by-step with non-fatal pausing on step failure. |
5. Self-Healing Execution Engine (v1.7.0)
Tool Name | Description |
| Runs sanitized diagnostic fix commands via SSH for a paused deployment without resetting Git commit state. |
| Resumes a paused deployment plan, skipping completed steps and running remaining steps to completion. |
| Aborts a deployment plan and executes automated Git reset and service reload sequence. |
6. Maintenance & Persistent Documentation (v1.6.0)
Tool Name | Description |
| Generates a local |
| Safely prunes dangling Docker images ( |
โก Quick Start & Configuration Guide
๐ค Interactive AI Setup Wizard (Copy-Paste Prompt)
Instead of manually editing config files, copy the prompt below and paste it into your AI assistant (Antigravity IDE, Claude, Cursor, Kimi, etc.) to run an interactive setup wizard:
You are my AI DevOps Setup Assistant for devops-deploy-guard-mcp-server.
Please guide me through setting up this MCP server step-by-step by interviewing me first.
Ask me these questions in a clean list:
1. What is your VPS IP address or host domain?
2. What is your SSH username (e.g., root, ubuntu, deploy)?
3. What is the local path to your unencrypted SSH private key file (e.g., C:\Users\name\.ssh\id_rsa or ~/.ssh/id_rsa)?
4. What is your domain name (e.g., api.example.com) and admin email address for SSL?
5. Which AI IDE / MCP Client are you using (Antigravity IDE, Claude Desktop, Cursor, Kimi, etc.)?
After I answer:
- Create or update my local .devops-mcp.json config file with my responses.
- Ensure .devops-mcp.json and .deployment-history.json are listed in my .gitignore file.
- Generate the exact MCP client configuration JSON snippet formatted for my AI IDE.
- Compile the TypeScript server with `npm run build` and run `inspect_server` to verify SSH connectivity.1. Manual Installation
cd devops-deploy-guard-mcp-server
npm install
npm run build2. Configuration (.devops-mcp.json)
When launched, the server automatically creates a .devops-mcp.json file in your workspace root (and appends it to .gitignore):
{
"vps_host": "203.0.113.45",
"vps_user": "root",
"ssh_private_key_path": "/Users/yourname/.ssh/id_rsa",
"domain_name": "api.example.com",
"admin_email": "admin@example.com",
"vps_port": 22
}๐ Connecting to MCP Clients
Antigravity IDE / Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"devops-deploy-guard": {
"command": "node",
"args": ["/absolute/path/to/devops-deploy-guard-mcp-server/dist/index.js"]
}
}
}Cursor / Kimi / Stdio Clients
Command: node
Arguments: /absolute/path/to/devops-deploy-guard-mcp-server/dist/index.js
๐ Self-Healing Deployment Workflow (v1.7.0 Walkthrough)
Developer / AI requests deployment
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ plan_dynamic_deployment โ โ Analyzes diffs & builds plan
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ confirm_execution โ โ Executes step-by-step
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโ
โ โ
[All Steps Succeed] [Step Fails (e.g. npm peer dep)]
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Status: SUCCESS โ โ Status: PAUSED_AWAITING_FIXโ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ diagnose_and_fix โ โ LLM applies fix command
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโโ
โ โ
[Fix Works] [Cannot Fix]
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ resume_execution โ โ rollback_execution โ
โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ๐ Operational Documentation & History
Auto-Runbook File (
DEPLOYMENT_RUNBOOK.md):Run
generate_project_runbookto generate a complete markdown runbook for human developers and handovers.
Deployment History Log (
.deployment-history.json):Every deployment attempt (success, paused, or rolled back) is automatically logged with timestamp, plan ID, status, and executed commands.
๐ ๏ธ Development & Testing
# Watch mode for development
npm run dev
# Run Vitest unit tests
npm test
# Production build
npm run build๐ License
MIT
Available Tools
20 toolsanalyze_project_structureAnalyze Remote Project StructureBRead-onlyIdempotent
Inspects remote directory and system commands via SSH to detect lockfiles, package managers, Docker, PM2, Nginx, application ports, WebSockets, deployment strategy, and missing dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
| app_path | No | Absolute path to application directory on remote server (auto-resolved if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds that it uses SSH and runs commands, which is useful, but does not disclose additional behavioral details like rate limits, required permissions, or potential command execution overhead.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose, but the list of detected items could be better structured (e.g., bullet points) for readability. No redundancy, but slight improvement possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool inspects but fails to mention what it returns or whether any authentication/SSH setup is required. Given no output schema, additional context about the output format would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single optional parameter. The description's parameter mention is implicit ('app_path' inferred from 'remote directory'), but adds no new semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('inspects') and resource ('remote project structure via SSH'), and lists a comprehensive set of detected items (lockfiles, package managers, etc.), clearly distinguishing it from sibling tools like 'inspect_server' which likely have different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus its siblings (e.g., 'inspect_server' or 'verify_health'). It lacks context on prerequisites, when not to use, or which alternatives to consider for specific scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_pending_migrationsCheck Pending Database MigrationsARead-onlyIdempotent
Executes read-only migration status command via SSH to check if database migrations are pending on remote server.
| Name | Required | Description | Default |
|---|---|---|---|
| app_path | No | Absolute path to application directory on remote server (auto-resolved if omitted) | |
| framework | No | Database ORM/Migration framework | auto |
| custom_status_cmd | No | Custom command to check migration status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds that the command is executed via SSH and is read-only, which is consistent but does not significantly expand beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no unnecessary words. It is front-loaded and efficient, earning a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple read-only status check, but it lacks information about the return value or output format, which would be helpful given no output schema. Still, it adequately covers the core behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning each parameter is described in the schema. The description does not add further semantic detail beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'executes' and resource 'read-only migration status command via SSH', clearly stating the purpose to check for pending migrations. It is distinct from sibling tools, which focus on deployment, server management, or other tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking migration status before deployment or related actions, but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanup_server_resourcesSafe Server Resource Cleanup (v1.6.0)AIdempotent
Checks server disk usage with safety threshold (>70% disk usage requirement) and performs non-destructive pruning of dangling Docker images and stale git tracking branches.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Set to true to force cleanup even if disk usage is below 70% | |
| app_path | No | Absolute path to application directory on remote server (auto-resolved if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive and idempotent behavior; the description adds valuable context about the safety threshold (>70% disk usage requirement) and specifically what is pruned (dangling Docker images, stale git branches), which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys all key information with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main actions and conditions, including the threshold and force option. However, it does not mention return values or behavior when the threshold is not met without force, which would be helpful for a standalone tool without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented. The description does not add significant meaning beyond the schema; it only references the force parameter indirectly. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks server disk usage with a specific threshold (>70%) and performs non-destructive pruning of dangling Docker images and stale git tracking branches. This specific verb and resource combination distinguishes it from siblings like inspect_server or prepare_new_server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when disk usage is high (>70%) or with force flag, but does not explicitly state when to use this tool versus alternatives, nor when not to use it. There is no mention of alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_firewallConfigure Safe Firewall (UFW)ADestructiveIdempotent
Configures UFW firewall rules safely. CRITICAL SAFETY: Always verifies OpenSSH (port 22) is allowed BEFORE enabling firewall to prevent SSH lockout.
| Name | Required | Description | Default |
|---|---|---|---|
| allow_nginx | No | Set to true to allow 'Nginx Full' (HTTP 80 / HTTPS 443) through UFW | |
| custom_ports | No | Optional additional port numbers to allow through firewall |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds value by revealing the crucial safety check for OpenSSH before enabling the firewall, which is beyond what annotations provide. It does not contradict annotations. The description could further detail whether existing rules are preserved or overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that communicate the core purpose and the most critical safety information. No unnecessary words or repetition. The safety note is appropriately emphasized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema and no nested objects, the description covers the main action and safety but lacks information on return values or success/failure indication. The idempotent hint and destructive hint help, but the description could state what happens when executed (e.g., 'Enables UFW after applying allowed rules').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add new meaning beyond what the schema already provides for 'allow_nginx' and 'custom_ports'. It mentions the safety check for port 22, but that is not directly related to parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool configures UFW firewall rules safely, which clearly identifies the verb (configures) and resource (UFW firewall rules). It distinguishes from sibling tools like 'secure_env_writer' or 'setup_nginx_reverse_proxy' by focusing on firewall configuration. However, it could be more specific about the exact action (e.g., enabling the firewall after adding rules).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description highlights a critical safety guideline: always verifying OpenSSH is allowed before enabling the firewall to prevent lockout. However, it does not explicitly state when to use this tool versus alternatives (e.g., for initial firewall setup or adding rules). The guidance is present but limited to safety context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_executionConfirm & Execute Deployment Plan (v1.7.0 Self-Healing)ADestructive
Executes a deployment plan step-by-step. If a step fails, pauses execution into PAUSED_AWAITING_FIX state for diagnosis instead of rolling back immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be explicitly set to true to execute the plan. | |
| plan_id | Yes | The plan_id returned by a planning tool | |
| acknowledge_warnings | No | Must be set to true if the plan contains warning-level commands. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations (e.g., pause on error instead of rolling back). No contradictions with annotations. It explains the state transition to PAUSED_AWAITING_FIX.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description explains key behavior. Lacks details on success state and post-execution actions, but the overall behavior is covered given sibling tools for resuming and rolling back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add significant param-level meaning beyond what the schema already provides. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Executes') and resource ('deployment plan') and distinguishes itself from siblings like rollback_execution by describing the pause-on-error behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are mentioned. While the context implies use after planning, the description does not guide against using this tool incorrectly or suggest siblings like plan_dynamic_deployment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_and_fixDiagnose & Apply Mid-Deployment Fix (v1.7.0)ADestructive
Executes a diagnostic fix command via SSH for a paused deployment without breaking deployment state or resetting git commit status.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The plan_id of the paused deployment plan | |
| fix_command | Yes | The fix command to execute via SSH to resolve mid-deployment issue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations by specifying SSH execution and state preservation, reassuring despite destructiveHint=true; does not cover failure modes or retry behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words; efficient and focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 2 required params and no output schema, description is mostly adequate but could include example fix_command or return value hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3 applies; description adds no extra meaning to the parameters (e.g., format of fix_command).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (executes a diagnostic fix command via SSH), context (paused deployment), and constraints (preserves state and git status), distinguishing it from siblings like rollback_execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes when to use ('for a paused deployment') and what it avoids ('without breaking deployment state or resetting git commit status'), but lacks explicit alternatives or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_project_runbookGenerate Project Deployment Runbook (v1.6.0)AIdempotent
Gathers server IP, SSH credentials, OS info, build scripts, Nginx/SSL configuration, and remote path to generate a local DEPLOYMENT_RUNBOOK.md markdown file for manual ops and handovers.
| Name | Required | Description | Default |
|---|---|---|---|
| app_path | No | Absolute path to application directory on remote server (auto-resolved if omitted) | |
| output_filename | No | Filename for local runbook (defaults to DEPLOYMENT_RUNBOOK.md in project root) | DEPLOYMENT_RUNBOOK.md |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations: it reveals that the tool connects to servers (gathers SSH credentials, OS info) and generates a local file. Annotations (readOnlyHint=false, idempotentHint=true) are consistent, but the description could be more transparent about network access requirements or potential side effects like creating files on the server. Still, it provides meaningful insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that conveys purpose and key actions efficiently. It is front-loaded with the verb 'Gathers' and specifies the output. Could be slightly more structured (e.g., separate sentences for input vs output), but overall concise without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the main output (local markdown file) and lists gathered information. However, it omits error scenarios (e.g., if server unreachable) and prerequisites (e.g., SSH key setup). For a simple documentation tool, this is mostly complete, but minor gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions (100% coverage). The tool description adds value by explaining that app_path is auto-resolvable and that the tool gathers additional info (server IP, SSH creds, etc.) not listed as parameters. This informs the agent of what data it collects behind the scenes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool gathers server and config info to generate a deployment runbook markdown file. It uses specific verbs ('gathers', 'generate') and identifies the resource (DEPLOYMENT_RUNBOOK.md). The purpose is distinct from sibling tools like plan_dynamic_deployment or setup_nginx_reverse_proxy, which perform actual deployment actions rather than documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'for manual ops and handovers', indicating when to use the tool. However, it does not explicitly state when not to use it or mention alternatives among the sibling tools. The guidance is implied but lacks explicit differentiation (e.g., 'for automated deployment use plan_dynamic_deployment').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_secure_env_templateGenerate Secure .env TemplateARead-onlyIdempotent
Reads .env.example from the VPS project directory dynamically via SSH. If not present, returns a generic environment template prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| app_path | No | Absolute path to application directory on remote VPS server | /var/www/app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior; the description adds valuable context about dynamic SSH access and fallback, exceeding the annotation-provided information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with the primary action and resource. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with good annotations, the description is nearly complete. It covers the methodology (SSH) and edge case (fallback). The lack of output schema is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the parameter fully; the description adds minimal extra context by mentioning 'VPS project directory', but does not provide semantics beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (reads), the resource (.env.example), the method (via SSH), and the fallback behavior, distinguishing it from write tools like secure_env_writer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing a secure environment template, but does not explicitly mention when not to use or alternative tools, despite the presence of sibling tools like secure_env_writer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_serverInspect Server & Local Ops Status (v1.6.0)ARead-onlyIdempotent
Safely inspects the current state of your VPS server via SSH and checks local project runbook existence and deployment history.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds context about SSH interaction and checks performed, but doesn't detail output format. Overall complements annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with 'Safely inspects'. No wasted words, directly conveys purpose. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes the inspection actions (VPS state, runbook existence, deployment history) but omits specifics on output format or return structure. Adequate for a simple read-only tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description need not add parameter info. With 100% schema coverage and zero params, baseline 4 is appropriate. The description doesn't discuss parameters, which is fine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects VPS server state via SSH and checks local project runbook existence and deployment history. This is specific and distinguishes it from sibling action-oriented tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like verify_health or diagnose_and_fix. The description lacks when-to-use, when-not-to-use, or explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_runtimesInstall Runtimes & ContainersARead-onlyIdempotent
Generates an idempotent provisioning plan to install Node.js (dynamic version), PM2, Docker Engine, and Docker Compose plugin across Debian, RHEL, and Alpine Linux distributions.
| Name | Required | Description | Default |
|---|---|---|---|
| install_node | No | Set to true to install Node.js and PM2 | |
| node_version | No | Node.js major version to install (e.g., '18', '20', '22'). Defaults to '22' if omitted. | |
| install_docker | No | Set to true to install Docker Engine and Docker Compose plugin |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and read-only behavior; the description adds specific target OS distributions and components. It confirms the tool generates a plan rather than mutating state, which aligns with annotations. It does not, however, describe the plan output format or any error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, complete sentence of 20 words, front-loading the primary action and efficiently conveying the tool's purpose, scope, and property of idempotency. No unnecessary words or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 3 optional parameters and no output schema, the description adequately covers the core behavior and expected output (a provisioning plan). It lacks detail on the plan's format or how to execute it, but given the context, it provides sufficient completeness for an agent to understand and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The tool description mentions 'dynamic version' for Node.js but adds no further details on parameter interactions or defaults beyond what the schema provides. Therefore, it meets the baseline for a fully described schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an idempotent provisioning plan for installing Node.js, PM2, Docker Engine, and Docker Compose across Debian, RHEL, and Alpine Linux. It uses a specific verb 'generates' and identifies all target resources, making it distinct from sibling tools like plan_docker_deployment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on what the tool does but does not explicitly state when to use it versus alternatives, nor does it include any prerequisites or conditions. For instance, it doesn't indicate that this should be used before deployment planning tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_docker_deploymentPlan Docker Compose DeploymentARead-onlyIdempotent
Plans a safe Docker Compose deployment by generating the exact commands. Does NOT execute anything without confirm_execution.
| Name | Required | Description | Default |
|---|---|---|---|
| app_path | No | Absolute path to application directory on remote server (auto-resolved if omitted) | |
| services | No | Optional list of specific services to build/restart. If omitted, all services are rebuilt. | |
| pull_images | No | Set to true to pull latest base images before building (docker compose pull) | |
| compose_file | No | Docker Compose filename. Omit or pass 'auto' to detect docker-compose.yml or compose.yml automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (readOnly, idempotent, non-destructive) by stating it does not execute. It adds context about safety and command generation but lacks details like output format or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the core purpose. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a planning tool with good annotations and full schema, the description covers the essential safety constraint. Minor gap: no mention of what the output looks like, but not critical given the tool's nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully described in the schema. The description adds no extra semantic value beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it plans a safe Docker Compose deployment and generates commands. It distinguishes itself from execution tools like confirm_execution by explicitly noting it does not execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates this tool should be used before confirm_execution to plan deployment. However, it does not compare to sibling tools like plan_dynamic_deployment, so guidance on when to use this specific tool is implicit but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_dynamic_deploymentPlan Dynamic Production Deployment (v1.5.0 Context-Aware)BRead-onlyIdempotent
Analyzes git diffs, dependency changes, schema updates, and pending migrations to generate a production-first conditional deployment plan.
| Name | Required | Description | Default |
|---|---|---|---|
| app_name | No | PM2 app name or ecosystem file | |
| app_path | No | Absolute path to application directory on remote server (auto-resolved if omitted) | |
| auto_analyze | No | Whether to SSH into server and auto-detect changes, runtimes, and migration status | |
| target_branch | No | Remote git target branch for change diff analysis (default: upstream default / main) | |
| force_all_steps | No | Set to true to force dependency install and migration steps regardless of git diff | |
| custom_build_cmd | No | Optional override for build command | |
| custom_install_cmd | No | Optional override for dependency install command | |
| migration_framework | No | Database migration framework | auto |
| custom_migration_cmd | No | Optional override for production database migration command |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds detail about the analysis inputs (git diffs, schema, migrations) and conditional nature, but does not elaborate on outcome format, potential external calls, or runtime behavior beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the purpose. However, it could be slightly restructured for readability, e.g., by listing key analyses separately. Still, it is concise without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no output schema), the description covers core purpose but does not explain what a 'production-first conditional deployment plan' entails, nor does it address the absence of output schema or integrate with sibling tool usage. It is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's meaning. The description does not add parameter-level information beyond what is in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's action: analyzing git diffs, dependency changes, schema updates, and pending migrations to generate a production-first conditional deployment plan. It distinguishes from siblings like plan_docker_deployment by focusing on dynamic, change-based planning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for deployment planning but lacks when-not or alternative suggestions, leaving the agent without clear selection criteria among multiple deployment and diagnostic siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_new_serverPrepare New ServerARead-onlyIdempotent
Generates a multi-OS provisioning plan to update system packages and install core build utilities (curl, git, compiler tools, firewall) based on detected OS distribution (Ubuntu, Debian, RHEL, CentOS, Alpine).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds context: it generates a plan based on OS detection, not actually executing actions. This clarifies that the tool does not modify state, consistent with annotations. No contradictions. The description adds useful behavioral specifics beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main action ('Generates a multi-OS provisioning plan') and then details specific parts. No redundant words; every part adds value. Ideal length for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and zero parameters, the description covers the tool's purpose and supported OS. However, it does not specify the format of the generated plan (e.g., text summary, step list) or how the plan is returned. This minor gap is acceptable for a simple planning tool, but slightly incomplete for an agent that might need to interpret the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is 100%. Per guidelines, baseline is 4. The description does not need to add parameter info. It correctly implies the tool operates based on detected OS with no required inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: generating a multi-OS provisioning plan. It specifies the actions (update system packages, install core utilities) and supported OS distributions (Ubuntu, Debian, RHEL, CentOS, Alpine). This distinguishes it from sibling tools like 'install_runtimes' or 'configure_firewall' which focus on specific tasks rather than generating a comprehensive plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for initial server setup, but does not explicitly state when to use vs. alternatives (e.g., 'inspect_server' for inspection, 'confirm_execution' for execution). However, the context of 'prepare_new_server' and siblings suggests it's intended for planning before execution. The lack of explicit exclusions is balanced by the tool's self-explanatory purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_executionResume Paused Deployment (v1.7.0)ADestructive
Resumes execution of a paused deployment plan, skipping previously completed steps and executing remaining steps to completion.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be set to true to resume deployment execution | |
| plan_id | Yes | The plan_id of the paused deployment plan to resume |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds the context of skipping already completed steps and executing remaining, which provides behavioral nuance beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 18 words that front-loads the core action. Every part is necessary; zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple resume operation with two parameters and annotations present, the description adequately explains the core behavior. However, it lacks guidance on how to obtain the plan_id or how it differs from 'confirm_execution'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The tool description itself adds no additional semantic value beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly identifies the verb 'resumes' and the resource 'paused deployment plan', and adds specific behavior: skipping completed steps and executing remaining. This distinguishes it from siblings like 'confirm_execution' or 'rollback_execution'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for paused plans but does not explicitly state when to use this tool versus alternatives like 'confirm_execution' or 'rollback_execution'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_executionExplicit Rollback Deployment (v1.7.0)ADestructive
Explicitly aborts a paused or failed deployment plan and triggers automated server rollback (git reset, service reload).
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for triggering explicit rollback | |
| plan_id | Yes | The plan_id of the deployment plan to rollback |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and openWorldHint=true. The description adds specifics: it triggers 'git reset, service reload', giving concrete behavioral detail beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys all essential information without unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage conditions, and key actions. While no output schema exists, the tool is simple and the description suffices. Minor omission: could mention post-rollback state, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add further meaning to the parameters (plan_id and reason) beyond what the schema already provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool aborts a paused or failed deployment plan and triggers rollback. It uses specific verbs ('aborts', 'rollback') and names the resource ('deployment plan'), distinguishing it from siblings like resume_execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use: for paused or failed deployment plans. It does not explicitly exclude other situations or mention alternatives, but the context is clear enough that it's for rollback scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
secure_env_writerSecure Environment File WriterADestructiveIdempotent
Writes environment variables to a .env file on the remote server via SSH after path normalization.
Security guarantees:
Path validation using path.resolve normalization to prevent path traversal
Heredoc writing to prevent shell expansion
Zero-knowledge output (never returns or echoes secret values back)
Blocks write attempts to system paths (/etc, /root, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| env_vars | Yes | Key-value pairs of environment variables to write | |
| file_path | Yes | Absolute path on remote server for .env file (e.g. '/var/www/myapp/.env') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals key behaviors beyond annotations: path normalization via path.resolve, heredoc writing to prevent shell expansion, zero-knowledge output, and blocking of system paths. Annotations already indicate it is write-only (readOnlyHint false) and destructive (destructiveHint true), so description adds valuable context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear initial sentence followed by bullet points listing security guarantees. Every sentence adds value, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complete input schema, annotations, and absence of output schema, the description fully covers what the tool does, its security measures, and its behavior. It is sufficient for an agent to correctly invoke the tool and understand the risks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, with both parameters well-described in the schema. The description adds overall context but does not enhance parameter semantics beyond what the schema already provides (e.g., absolute path example). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Writes environment variables to a .env file on the remote server via SSH after path normalization.' This is a specific verb and resource, and it distinguishes itself from the diverse sibling tools which cover server inspection, deployment, and configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description does not explicitly list when to use or alternatives, the sibling tools are very different (e.g., inspect_server, rollback_execution), making it clear this is the tool for writing environment files. The security guarantees implicitly guide usage, but no explicit when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_nginx_reverse_proxySetup Nginx Reverse ProxyADestructiveIdempotent
Configures adaptive Nginx reverse proxy or static web server block after verifying domain A-record against the server's public IP address.
| Name | Required | Description | Default |
|---|---|---|---|
| app_port | No | Internal application target port on localhost (e.g., 3000, 8080) | |
| is_static | No | Set to true for static SPA/HTML sites serving static files from dist directory | |
| domain_name | No | Domain name or IP for Nginx server block (retrieved from .devops-mcp.json if omitted) | |
| has_websockets | No | Set to true to inject WebSocket upgrade headers into Nginx configuration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context about domain verification and adaptive behavior beyond annotations, but does not disclose the destructive nature (despite destructiveHint=true) or what gets overwritten. The description gives some transparency but misses key behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with under 20 words, front-loaded with verb and resource. Concise but slightly dense; could be structured for better clarity. Still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal description for a 4-parameter tool with no output schema. Leaves gaps: what is 'adaptive'? What happens if A-record check fails? No mention of return values or effects. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds no additional parameter-specific meaning. Baseline score of 3 is appropriate as the tool's purpose is clear but parameters rely solely on schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('configures') and specific resource ('Nginx reverse proxy or static web server block'). Includes a prerequisite (domain A-record verification) and distinguishes from sibling tools like configure_firewall or setup_ssl_certbot. Effectively communicates the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context (after domain verification) but provides no explicit guidance on when to use vs alternatives. No mention of when-not or other sibling tools. Adequate but lacks depth.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_ssl_certbotSetup SSL Certificate (Certbot)ADestructiveIdempotent
Generates a 2-step execution plan to install Certbot and configure Let's Encrypt SSL/HTTPS certificate for Nginx. Uses OS-specific package mapping and tests auto-renewal.
| Name | Required | Description | Default |
|---|---|---|---|
| admin_email | No | Admin email for Let's Encrypt registration (retrieved from .devops-mcp.json if omitted) | |
| domain_name | No | Domain name for SSL certificate (retrieved from .devops-mcp.json if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it generates a 2-step plan, uses OS-specific package mapping, and tests auto-renewal. This contrasts with the destructiveHint annotation by clarifying it is a planning tool, not directly mutating. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, concise and front-loaded with the core purpose, followed by key capabilities. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 required params, no output schema), the description covers essential aspects: plan generation, OS mapping, and auto-renewal testing. It is clear and sufficient for an agent to understand what the tool does, though it lacks details on how to execute the generated plan.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the input schema (100% coverage), including fallback to .devops-mcp.json. The description does not add new semantic information about parameters, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates an execution plan for installing Certbot and configuring Let's Encrypt SSL for Nginx, specifying the verb 'generates' and the resource 'SSL certificate for Nginx using Certbot'. However, it does not explicitly distinguish itself from sibling tools like setup_nginx_reverse_proxy, which is a separate but related task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives or prerequisites. The description implies it is for planning an SSL setup, but does not state conditions or provide 'when not to use' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_healthVerify Application HTTP HealthARead-onlyIdempotent
Executes curl on remote server via SSH to verify HTTP endpoint status. Returns success only if HTTP 200 is received.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | HTTP path endpoint to query (default: '/health') | /health |
| port | No | Target port number on localhost (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by disclosing the use of SSH and curl, and that success requires HTTP 200. This provides good behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys all necessary information without wordiness. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the return condition (success only if HTTP 200). It lacks details on error handling (e.g., timeouts, non-200 responses) but is sufficient for a simple health check tool with 2 optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema; it mentions 'HTTP endpoint' which aligns with the parameters but provides no additional detail on format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: executing curl via SSH to verify HTTP endpoint status, with explicit success criterion of HTTP 200. It distinguishes itself from sibling tools like inspect_server or view_app_logs by specifying the exact method and purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description lacks explicit context for when it is appropriate, when not, or reference to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_app_logsView Application LogsARead-onlyIdempotent
Retrieves recent application log lines via PM2 or Docker Compose on remote server.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Execution mode: 'auto' (tries PM2 then Docker), 'pm2', or 'docker' | auto |
| lines | No | Number of recent log lines to retrieve (default: 50) | |
| app_name | Yes | Name of the application, container, or PM2 process |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, so the safety profile is clear. The description adds that logs are retrieved via PM2 or Docker on a remote server, but does not elaborate on potential timeouts, connection issues, or return behavior beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is concise and front-loaded with the action ('Retrieves...'). Every word is meaningful, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's basic purpose and execution methods, but does not describe the return format (e.g., array of log lines) or potential limitations. Given no output schema, this information would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (app_name, mode, lines). The description adds no additional meaning for parameters, earning the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent application log lines via PM2 or Docker Compose on a remote server. The verb 'retrieves' and resource 'log lines' are specific, and the tool is distinct from siblings like 'verify_health' or 'inspect_server'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. The 'mode' parameter in the schema offers some context, but the description itself lacks any usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
20 tool updates
v1.7.0- First observed
analyze_project_structure - First observed
check_pending_migrations - First observed
cleanup_server_resources - First observed
configure_firewall - First observed
confirm_execution - First observed
diagnose_and_fix - First observed
generate_project_runbook - First observed
generate_secure_env_template - First observed
inspect_server - First observed
install_runtimes - First observed
plan_docker_deployment - First observed
plan_dynamic_deployment - First observed
prepare_new_server - First observed
resume_execution - First observed
rollback_execution - First observed
secure_env_writer - First observed
setup_nginx_reverse_proxy - First observed
setup_ssl_certbot - First observed
verify_health - First observed
view_app_logs
TDQS
Each tool targets a distinct operation: inspection, environment setup, deployment planning, execution, rollback, etc. There is no overlap; even the two planning tools are differentiated (dynamic vs Docker).
All tool names follow a consistent verb_noun pattern with imperative verbs (inspect, resume, rollback, analyze, generate, verify, etc.). No mixed conventions.
20 tools cover the full DevOps deployment lifecycle without being excessive. Each tool serves a clear and necessary purpose within the domain.
The tool set covers inspection, provisioning, environment setup, deployment planning, execution, rollback, recovery, health checks, and cleanup. No obvious gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Zero-Ops deploy of a private AI workspace to your own VPS โ from your AI chat. Free and open-source.
No-KYC offshore hosting an AI agent runs end-to-end: no-email signup, crypto, domain, VPS, deploy.
- emisarOAuthdev.emisar
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables automated VPS initialization and management through SSH connections. Supports installing common services like Node.js, Nginx, and Redis, configuring domains with SSL certificates, and setting up GitHub CI/CD pipelines with deploy keys.53-

CLP MCP - DevOpsofficial
-licenseNot gradedqualityNot gradedmaintenanceEnables comprehensive DevOps infrastructure management through tools for Jenkins, Ansible, Terraform, Kubernetes, and Docker operations. Features a sophisticated memory system for context retention and provides validation, generation, and optimization capabilities across DevOps workflows.1-- AlicenseNot gradedqualityDmaintenanceProvision KYC-free, crypto-paid Nordic VPS and dedicated servers from any AI agent. Enables natural language hosting workflows including comparison, top-up, and provisioning of anonymous servers.MIT

mcp-fracteraofficial
FlicenseNot gradedqualityBmaintenanceZero-Ops deploy of a private AI coding workspace to your own VPS, straight from your AI chat. Registers the user, recommends a VPS, and runs and monitors the full deployment.58-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/awais2o/devops-deploy-guard-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server