StackWiz MCP Server
Provides DNS record management (create, list, update, delete) with proxy control, automatic retry, and rate limit handling through Cloudflare's API.
Core infrastructure integration for creating, managing, and deploying Docker stacks with full lifecycle control (start, stop, restart, remove) and log access.
Enables setting up Ghost blogging platforms with custom domains, automatic SSL via Traefik, and Cloudflare DNS integration.
Allows deploying Grafana monitoring services as Docker stacks with automatic SSL/TLS and DNS setup.
Integration for automatic SSL/TLS certificate provisioning via Let's Encrypt through Traefik, ensuring secure HTTPS for deployed services.
Specialized support for deploying PocketBase backends as Docker stacks, including automatic configuration and Traefik integration.
Supports creating PostgreSQL databases with automatic backups and deployment as Docker stacks.
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., "@StackWiz MCP ServerDeploy a Pocketbase backend for my todo 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.
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 |
Quick reference for Claude Code agents | |
Canonical documentation - complete tool reference | |
Deep technical architecture & LXC deployment guide | |
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: Coolify 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 serviceimage: Docker image (required for generic)port: Container port (required for generic)create_dns: Auto-create DNS recordauto_start: Start immediately after creationenvironment: Additional environment variables
list_stacks
Lists all Docker stacks in the infrastructure.
Parameters:
filter: Filter stacks by nameinclude_status: Include container statussort_by: Sort by name, created, or status
manage_stack
Performs operations on existing stacks.
Parameters:
stack_name(required): Target stackaction: start, stop, restart, remove, logsoptions: 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 createtype: 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 subdomainenable(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 objectcheck_conflicts: Check for port/domain conflicts
๐๏ธ Resources
The MCP server provides read access to:
Stack Configurations:
stack://list,stack://{name}/composeTemplates:
template://generic,template://pocketbaseInfrastructure Info:
infra://networks,infra://domains
๐ก Prompts
Interactive deployment guides:
deploy-web-app: Step-by-step web application deploymentsetup-database: Database deployment with best practicescreate-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 socketCF_API_EMAIL: Cloudflare emailCF_DNS_API_TOKEN: Cloudflare API tokenDEFAULT_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
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Run the test suite
Submit a pull request
๐ License
MIT License - See LICENSE file for details.
๐ Acknowledgments
Built on the Model Context Protocol specification
Uses FastMCP framework
Inspired by the original stackwiz shell script
๐ Troubleshooting
Server won't start
Check Python version (3.8+ required)
Verify dependencies:
pip install -r requirements.txtCheck permissions on base directory
Tools not working
Ensure Docker daemon is running
Verify user is in docker group
Check
DOCKER_HOSTenvironment 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
/docsdirectoryExamples: Check
/examplesfor usage patterns
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/rickoslyder/stackwiz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server