Skip to main content
Glama

StackWiz MCP Server

Transform your Docker infrastructure management with an AI-powered Model Context Protocol (MCP) server. StackWiz MCP enables AI assistants like Claude to create, manage, and deploy containerized services in your infrastructure programmatically.

๐Ÿ“– Documentation

Document

Purpose

CLAUDE.md

Quick reference for Claude Code agents

docs/AGENT_REFERENCE.md

Canonical documentation - complete tool reference

docs/TECHNICAL_OVERVIEW.md

Deep technical architecture & LXC deployment guide

INSTALL.md

Installation guide for standalone deployment

For AI Agents: Start with CLAUDE.md, refer to docs/AGENT_REFERENCE.md for detailed tool parameters.

For DevOps/Deployment: See docs/TECHNICAL_OVERVIEW.md for architecture details and environment configuration.

Related MCP server: Docker MCP Server

๐Ÿš€ Quick Start

Installation

# Install from Git (recommended)
pip install git+https://gitea.rbnk.uk/admin/stackwiz-mcp.git
# Or from GitHub:
pip install git+https://github.com/rickoslyder/stackwiz-mcp.git

# Or clone and install locally
git clone https://gitea.rbnk.uk/admin/stackwiz-mcp.git
cd stackwiz-mcp
pip install -e .

Claude Desktop Integration

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "stackwiz": {
      "command": "python",
      "args": ["-m", "stackwiz_mcp"],
      "env": {
        "STACKWIZ_BASE_DIR": "/srv/dockerdata",
        "STACKWIZ_LOG_LEVEL": "INFO"
      }
    }
  }
}

Basic Usage

Once configured, you can ask Claude to:

  • "Create a new Grafana monitoring service"

  • "Deploy a Pocketbase backend for my todo app"

  • "List all running Docker stacks"

  • "Create a PostgreSQL database with automatic backups"

  • "Set up a Ghost blog with custom domain"

๐ŸŽฏ Features

Stack Management

  • Create Stacks: Deploy any Docker container with automatic Traefik integration

  • Pocketbase Support: Specialized support for Pocketbase backends

  • List & Monitor: View all stacks with real-time status

  • Lifecycle Control: Start, stop, restart, and remove stacks

  • Log Access: Retrieve container logs for debugging

DNS Automation

  • Cloudflare Integration: Full DNS record management (create, list, update, delete)

  • Multiple Record Types: A, AAAA, CNAME, TXT, MX support

  • Smart Defaults: Auto-detect server IP for A records

  • Proxy Control: Toggle Cloudflare proxy (orange/gray cloud) per record

  • Rate Limit Handling: Automatic retry with exponential backoff

  • Zone ID Caching: Efficient API usage with 5-minute cache

Infrastructure Integration

  • Traefik Ready: Automatic SSL/TLS with Let's Encrypt

  • Network Management: Proper Docker network configuration

  • Permission Handling: Secure file permissions (750/640)

  • Template System: Consistent stack structure

๐Ÿ“š Available Tools

create_stack

Creates a new Docker service stack.

Parameters:

  • name (required): Stack identifier (lowercase, alphanumeric + hyphens)

  • type: "generic" or "pocketbase"

  • domain: Full domain for the service

  • image: Docker image (required for generic)

  • port: Container port (required for generic)

  • create_dns: Auto-create DNS record

  • auto_start: Start immediately after creation

  • environment: Additional environment variables

list_stacks

Lists all Docker stacks in the infrastructure.

Parameters:

  • filter: Filter stacks by name

  • include_status: Include container status

  • sort_by: Sort by name, created, or status

manage_stack

Performs operations on existing stacks.

Parameters:

  • stack_name (required): Target stack

  • action: start, stop, restart, remove, logs

  • options: Additional options (follow_logs, tail_lines)

create_dns_record

Creates DNS records in Cloudflare with automatic retry and rate limit handling.

Parameters:

  • subdomain (required): Subdomain to create

  • type: Record type (A, CNAME, MX, TXT)

  • value: Record value (AUTO for server IP)

  • proxied: Enable Cloudflare proxy

list_dns_records

Lists DNS records from Cloudflare.

Parameters:

  • filter: Filter records by name (partial match)

update_dns_proxy

Toggles Cloudflare proxy for a DNS record.

Parameters:

  • subdomain (required): Target subdomain

  • enable (required): true for proxied, false for DNS-only

delete_dns_record

Deletes DNS records from Cloudflare.

Parameters:

  • subdomain (required): Subdomain to delete

validate_stack_config

Validates configuration before creation.

Parameters:

  • config (required): Stack configuration object

  • check_conflicts: Check for port/domain conflicts

๐Ÿ—‚๏ธ Resources

The MCP server provides read access to:

  • Stack Configurations: stack://list, stack://{name}/compose

  • Templates: template://generic, template://pocketbase

  • Infrastructure Info: infra://networks, infra://domains

๐Ÿ’ก Prompts

Interactive deployment guides:

  • deploy-web-app: Step-by-step web application deployment

  • setup-database: Database deployment with best practices

  • create-api-service: API service with monitoring

๐Ÿ—๏ธ Architecture

stackwiz-mcp/
โ”œโ”€โ”€ stackwiz_mcp/          # Main package
โ”‚   โ”œโ”€โ”€ server.py          # FastMCP server (preferred)
โ”‚   โ”œโ”€โ”€ mcp_server.py      # Standard MCP implementation
โ”‚   โ”œโ”€โ”€ config.py          # Configuration management
โ”‚   โ”œโ”€โ”€ tools/             # MCP tool implementations
โ”‚   โ”œโ”€โ”€ resources/         # Resource providers
โ”‚   โ”œโ”€โ”€ prompts/          # Interactive prompts
โ”‚   โ”œโ”€โ”€ models/           # Pydantic models
โ”‚   โ””โ”€โ”€ utils/            # Utilities
โ”œโ”€โ”€ tests/                # Test suite
โ”œโ”€โ”€ docs/                 # Documentation
โ””โ”€โ”€ examples/             # Usage examples

๐Ÿงช Testing

# Run the test suite
./run_tests.sh

# Manual testing
python test_server.py

# Run specific tests
pytest tests/test_mcp_server.py -v

๐Ÿณ Docker Deployment

# Build and run with Docker
docker compose up -d

# View logs
docker compose logs -f

# Stop the server
docker compose down

โš™๏ธ Configuration

Environment Variables

  • STACKWIZ_BASE_DIR: Base directory for stacks (default: /srv/dockerdata)

  • STACKWIZ_LOG_LEVEL: Logging level (DEBUG, INFO, WARNING, ERROR)

  • STACKWIZ_ENV: Environment (development, production)

  • DOCKER_HOST: Docker daemon socket

  • CF_API_EMAIL: Cloudflare email

  • CF_DNS_API_TOKEN: Cloudflare API token

  • DEFAULT_USER: File owner (default: current user)

  • DEFAULT_GROUP: File group (default: docker)

Configuration File

Create config.json for persistent settings:

{
  "docker": {
    "network": "traefik_proxy",
    "compose_timeout": 30
  },
  "dns": {
    "default_ttl": 300,
    "proxied": true
  },
  "traefik": {
    "entrypoint": "websecure",
    "certresolver": "cf"
  }
}

๐Ÿ”’ Security

  • Input Validation: All inputs validated with Pydantic

  • Command Injection Protection: Safe command execution

  • Path Traversal Prevention: Restricted to base directory

  • Secrets Management: Environment variables never logged

  • Permission Management: Proper Unix permissions

๐Ÿค Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests for new functionality

  5. Run the test suite

  6. Submit a pull request

๐Ÿ“ License

MIT License - See LICENSE file for details.

๐Ÿ™ Acknowledgments

๐Ÿ› Troubleshooting

Server won't start

  • Check Python version (3.8+ required)

  • Verify dependencies: pip install -r requirements.txt

  • Check permissions on base directory

Tools not working

  • Ensure Docker daemon is running

  • Verify user is in docker group

  • Check DOCKER_HOST environment variable

DNS creation fails

  • Verify Cloudflare API credentials (CF_API_TOKEN or CF_DNS_API_TOKEN)

  • Check domain is managed by Cloudflare

  • Ensure API token has DNS edit permissions

  • Rate limits are handled automatically with retries

  • See logs for detailed error messages

DNS proxy toggle fails

  • Only A, AAAA, and CNAME records can be proxied

  • MX and TXT records cannot be proxied (Cloudflare limitation)

Logs location

  • Server logs: ~/.cache/stackwiz-mcp/logs/

  • Stack logs: docker compose -f {stack}/docker-compose.yml logs

๐Ÿ“ž Support

  • GitHub Issues: Report bugs and feature requests

  • Documentation: See /docs directory

  • Examples: Check /examples for usage patterns

Available Tools

10 tools
create_dns_recordB

Create a DNS record

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRecord type (A, CNAME, MX, TXT)A
valueNoRecord value (AUTO for server IP)AUTO
proxiedNoEnable Cloudflare proxy
priorityNoPriority for MX records
subdomainYesSubdomain name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description fails to disclose behavioral traits such as idempotency, overwrite behavior, or requirement for specific parameters. For a mutation tool, this lack of transparency is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that conveys the core purpose without wasted words. However, it is so terse that it omits potentially useful context, though this is acceptable given its simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the existence of an output schema and full parameter documentation, the description is incomplete for a mutation tool. It lacks any behavioral context, such as what happens if a record already exists or whether special permissions are needed, leaving the agent with insufficient guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline of 3 applies. The description adds no extra meaning beyond the schema's parameter descriptions, but it does not need to compensate for missing schema information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create) and the resource (DNS record), distinguishing it from sibling tools like list_dns_records, update_dns_proxy, and delete_dns_record. It is specific and immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites, side effects, or conditions. It is a bare statement with no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_stackB

Create a new Docker service stack

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesStack name (lowercase, alphanumeric with hyphens)
portNoContainer port (required for generic)
typeNoStack type (generic or pocketbase)generic
imageNoDocker image (required for generic)
domainNoCustom domain (defaults to {name}.rbnk.uk)
auto_startNoStart stack after creation
create_dnsNoCreate DNS record
environmentNoEnvironment variables

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a stack is created, but does not mention side effects such as DNS record creation, auto-start behavior, or what the return value will be. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundancy. It is front-loaded with the core action and resource, earning every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 8 parameters and nested objects, the description provides no prerequisites, behavioral expectations, or hints about the output schema (even though one exists). The tool is complex enough that a one-line description is insufficient for an agent to know when and how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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. The description does not add any parameter-specific semantics, but per the baseline rule, a score of 3 is appropriate when the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Create') and clear resource ('Docker service stack'), which clearly states the tool's function. It distinguishes itself from sibling tools like list_stacks and manage_stack by indicating a create operation, not just listing or managing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating new stacks, but does not explicitly state when to use this tool versus alternatives like manage_stack or validate_stack_config. No exclusions or alternative recommendations are provided, so guidance is only implied by the 'Create' verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_dns_recordB

Delete a DNS record

ParametersJSON Schema
NameRequiredDescriptionDefault
subdomainYesSubdomain name to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention permanence, required existing state, auth needs, or result behavior. For a delete operation, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that wastes no words. It directly states the core purpose without redundancy, making it highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter schema and presence of an output schema, the description is minimally adequate. However, the absence of annotations and lack of behavioral context leave room for improvement, making it complete only to a basic degree.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the 'subdomain' parameter, and the description adds no additional meaning beyond the schema. The baseline of 3 is appropriate since the schema already documents the parameter entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action 'Delete a DNS record' with a distinct verb and resource. It distinguishes from sibling tools like create_dns_record and list_dns_records, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It only states the action, leaving usage context entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkA

Check server health and connectivity

Returns system health status including Docker, DNS, and filesystem checks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It conveys the non-mutating read-only nature ("Returns system health status") and enumerates exactly which checks are performed (Docker, DNS, filesystem), which is meaningful behavioral context beyond the empty schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with zero filler. The first sentence states the core purpose; the second adds high-value detail about what the health check covers. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a zero-parameter read-only tool with an output schema available, the description is nearly complete: it states the purpose and enumerates the checks performed. It could add minor context like failure behavior or whether connectivity means outbound network checks, but these are not essential for a simple health-check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so per the rubric baseline is 4. The description need not explain parameters, and the empty schema accurately reflects that the tool takes no input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb ("Check") and resource ("server health and connectivity"), then specifies the covered subsystems (Docker, DNS, filesystem), distinguishing it from siblings like server_info which likely provides broader server details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and descriptionโ€”this is the tool to run for a health/readiness checkโ€”but there is no explicit guidance about when to prefer this over a sibling like server_info, nor exclusion scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_recordsB

List DNS records

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoFilter records by name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description merely restates the tool name and adds no behavioral context. With no annotations provided, it fails to describe output format, permissions, read-only nature, or any side effectsโ€”leaving the agent completely uninformed beyond what the name implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded and immediately conveys the action, making it easy to process.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicityโ€”one optional parameter, no annotations, and an output schemaโ€”the description is functionally sufficient. It correctly identifies the operation, and the schema covers parameter semantics, so the agent can invoke it correctly. Slightly more context (e.g., pagination, filtering behavior) would improve completeness, but the core needs are met.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides a full description for the 'filter' parameter ('Filter records by name'), achieving 100% schema coverage. The tool description adds no parameter-specific information, but the schema already handles this, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List DNS records' uses a specific verb (list) and resource (DNS records), clearly distinguishing it from sibling tools like create_dns_record, delete_dns_record, and list_stacks. The purpose is unambiguous and directly names the core action and object.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit usage guidance is provided, but the name and description make it obvious this tool is for retrieving DNS records. The sibling tools handle create/update/delete operations, so the use case is implied rather than explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_stacksA

List all existing Docker stacks

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoFilter stacks by name
sort_byNoSort by name, created, or statusname
include_statusNoInclude container status

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the basic list operation but adds no extra behavioral context (e.g., read-only nature, performance considerations, or filtering behavior). However, 'List' clearly implies a non-mutating operation, so it is minimally transparent but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the purpose. It is front-loaded and contains no waste, perfectly adhering to the principle that every sentence should earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple list operation with three optional parameters fully described in the schema and an output schema present. The description is minimal but sufficient for overall understanding, though it could briefly mention the filtering/sorting capabilities to be fully self-contained. The existing schema compensates for this gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter (filter, sort_by, include_status) already has a clear description. The tool description adds no additional meaning about parameters, so the baseline score of 3 applies. The schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all existing Docker stacks' uses a specific verb ('List') and resource ('Docker stacks'), clearly distinguishing it from sibling tools like create_stack, manage_stack, and list_dns_records. The scope 'all existing' is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: use this tool to view existing Docker stacks. There are no explicit exclusions or alternatives mentioned, but for a simple read-only list operation, the description adequately implies its use case. With siblings focused on other resources (DNS) or actions (create/manage), the intended usage is obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_stackC

Perform operations on existing stacks

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesOperation to perform (start, stop, restart, remove, logs)
stack_nameYesName of the stack
tail_linesNoNumber of log lines to show
follow_logsNoFollow log output (for logs action)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits but does not. It does not mention that the 'remove' action is destructive, that 'logs' may stream or follow, or any side effects or access requirements. The description is generic and uninformative about real behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, but its brevity comes at the cost of specificity. It is a single generic sentence that does not front-load important details like the available actions. It earns its place for being short, but fails to provide substance in that space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, multiple action types, one destructive action), the description is far too minimal. It does not explain the trade-offs between actions, when to use each, or the effects on the stack. Even with an output schema present, the description fails to provide enough context for correct tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all four parameters (action, stack_name, tail_lines, follow_logs). The description adds no parameter information, but the schema carries the burden, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Perform operations on existing stacks' is vague; 'operations' does not specify the concrete actions like start, stop, restart, remove, or logs. It does distinguish from sibling tools like create_stack and list_stacks by focusing on existing stacks, but lacks the specificity expected for a clear purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description gives no indication of when to prefer this tool over alternatives such as create_stack or list_stacks, nor does it mention any prerequisites or exclusions. The only implied context comes from the phrase 'existing stacks', which is not enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

server_infoA

Get server information and capabilities

Returns server version, available tools, and configuration details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosing behavioral traits. It does state the return content (version, tools, configuration), which is useful. However, it does not explicitly mention that the operation is read-only, safe, or what side effects (if any) exist, though the informational nature implies it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the primary purpose and then elaborating on output. Every word adds value, with no fluff or redundancy. It is optimally concise for a zero-parameter info tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 params) and the presence of an output schema, the description sufficiently covers what the tool does and what it returns. It is complete for an informational endpoint, with no missing essential context such as prerequisites or side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description correctly does not invent parameter information, and the input schema confirms no parameters are needed. No additional explanation is required beyond what the schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('server information and capabilities'). It distinguishes itself from siblings focused on stacks, DNS, and health checks by covering general server metadata. The inclusion of return content (version, tools, configuration) adds clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool versus alternatives. Sibling tools like health_check are related but no differentiation is provided. The description merely states what it does, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_dns_proxyA

Enable or disable Cloudflare proxy for a DNS record

ParametersJSON Schema
NameRequiredDescriptionDefault
enableYesTrue to enable proxy, False to disable
subdomainYesSubdomain name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden of behavioral disclosure. It indicates a mutation ('Enable or disable') but does not disclose side effects, required permissions, error behavior on non-existent subdomains, or any rate limits. The absence of these details is a significant gap for a state-changing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that directly states the tool's function without redundant phrasing. It is front-loaded with the action and object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (two parameters, simple boolean toggle) and presence of an output schema, the description covers the core purpose. However, it doesn't mention what happens if the subdomain doesn't exist or whether changes propagate immediately, which would enhance completeness. Still, it is largely sufficient for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides descriptions for both parameters (subdomain and enable) with 100% coverage. The description adds the context of 'Cloudflare proxy' but does not enrich parameter meaning beyond what the schema already states. Baseline of 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Enable or disable') and a clear resource ('Cloudflare proxy for a DNS record'). It clearly differentiates from sibling tools like create_dns_record, delete_dns_record, and list_dns_records by focusing on the proxy toggle action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for toggling proxy state on an existing DNS record, but it does not explicitly state when to use this tool versus alternatives such as create_dns_record or delete_dns_record. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_stack_configC

Validate a stack configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesStack configuration to validate
check_conflictsNoCheck for port/domain conflicts

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits, but it only states the action. It does not indicate whether the operation is read-only, what happens on invalid configurations, or any side effects. The only hint of behavior (conflict checking) appears in the schema, not the description, leaving a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, but it is so brief that it fails to provide necessary context. It is not verbose, but under-specification makes it less useful than a concise yet informative description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a nested object parameter and an output schema, and the schema hints at conflict checking, but the description is too minimal to explain the validation process or when it should be used. Sibling tools and the schema provide some context, but the description alone leaves major gaps in understanding what the tool does and returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters already described ('Stack configuration to validate' and 'Check for port/domain conflicts'). The tool description adds no additional meaning to the parameters, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Validate a stack configuration' uses a specific verb and resource, clearly distinguishing it from siblings like create_stack and manage_stack. However, it is essentially a restatement of the tool name and does not elaborate on what validation entails, so it is clear but not maximally informative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool, such as before creating a stack or to check for conflicts. It does not mention alternatives or exclusions among sibling tools, leaving the agent without context for selection.

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.

  1. 10 tool updatesv1.0.0
    • First observedcreate_dns_record
    • First observedcreate_stack
    • First observeddelete_dns_record
    • First observedhealth_check
    • First observedlist_dns_records
    • First observedlist_stacks
    • First observedmanage_stack
    • First observedserver_info
    • First observedupdate_dns_proxy
    • First observedvalidate_stack_config

TDQS

B3.4/5.0
Disambiguation4/5

Tools are largely distinct but manage_stack is a generic catch-all that could overlap with create_stack or validate_stack_config. DNS tools and stack tools are clearly separated, and utility tools are distinct.

Naming Consistency4/5

Most tools follow verb_noun pattern (create_stack, list_dns_records), but health_check and server_info break the pattern by being noun-focused. Also pluralization is inconsistent (list_stacks vs list_dns_records).

Tool Count5/5

10 tools is within the ideal 3-15 range. Each tool serves a clear function in stack management, DNS management, or server introspection, with no obvious bloat.

Completeness4/5

Stack lifecycle is covered (create, list, manage, validate), but there is no full DNS record update (only proxy toggle), and manage_stack is vague about specific operations like delete. Core workflows are covered but some edge operations are missing.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that allows managing Docker containers through natural language, enabling users to compose, introspect, and debug containers without running commands themselves.
    742
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables AI assistants to manage Docker containers, images, networks, and volumes through a standardized interface. It supports comprehensive operations like container lifecycle management and image pulling while ensuring correct handling of command and environment variable arrays.
    12
    25
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI assistants to manage Dokploy infrastructure (Docker, projects, applications, databases, etc.) through natural language, acting as a universal translator between AI and cloud systems.
    29
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for managing Docker containers, images, and Compose services via natural language, with configurable tool permissions and safety annotations.
    16
    MIT

Latest Blog Posts

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/rickoslyder/stackwiz-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server