Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOMELAB_CONFIGNoPath to a config file. By default Homelab reads ~/.config/homelab/config.toml.
HOMELAB_PROXY_URLNoNginx Proxy Manager address.http://localhost:81
HOMELAB_READ_ONLYNoSet to 'true' to refuse every change, whatever else is set. Reads and dry runs still work.false
HOMELAB_DNS_ZONE_IDNoDefault Cloudflare zone id, so tools can leave zone_id empty.
HOMELAB_DOCKER_HOSTNoDocker engine address.unix:///var/run/docker.sock
HOMELAB_PROXY_EMAILNoThe NPM admin login email used for the API.
HOMELAB_DNS_API_TOKENNoCloudflare API token with DNS edit permission on the zone.
HOMELAB_PROXY_PASSWORDNoThe NPM admin login password used for the API.
HOMELAB_<MODULE>_ENABLEDNoSet to 'true' or 'false' to turn a module on or off, e.g. HOMELAB_HOME_ASSISTANT_ENABLED=true. Proxy, docker and dns are on by default; home_assistant is off by default.
HOMELAB_HOME_ASSISTANT_URLNoHome Assistant address.http://homeassistant.local:8123
HOMELAB_<MODULE>_<KEY>_FILENoRead a setting from a file instead, e.g. HOMELAB_DNS_API_TOKEN_FILE=/run/secrets/cf_token.
HOMELAB_DOCKER_PORTAINER_URLNoPortainer URL to use instead of the Docker socket. Both URL and token are needed.
HOMELAB_HOME_ASSISTANT_TOKENNoHome Assistant long-lived access token.
HOMELAB_<MODULE>_ALLOW_WRITESNoSet to 'true' to let the assistant make changes in that module without asking. Default is 'false': each change asks you first.false
HOMELAB_DOCKER_PORTAINER_TOKENNoPortainer token to use instead of the Docker socket. Both URL and token are needed.
HOMELAB_DOCKER_PORTAINER_ENDPOINT_IDNoPortainer endpoint id.1

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
proxy_hostsA

Proxy hosts. list/get are read-only. create, update and delete change NPM and need the person's approval (or HOMELAB_PROXY_ALLOW_WRITES=true). dry_run=true previews without asking.

proxy_redirectionsC

HTTP redirections. list is read-only; create and delete need approval (or ALLOW_WRITES).

proxy_certificatesA

SSL certificates. list is read-only. request asks Let's Encrypt for a new certificate (needs approval, or ALLOW_WRITES). Let's Encrypt must be able to reach the domains.

proxy_access_listsA

IP access lists. list is read-only. create and delete need approval (or ALLOW_WRITES). allow and deny are comma-separated IPs or CIDRs. Deleting a list affects every proxy host that uses it.

docker_containersA

Containers. list, get, logs and stats are read-only. start, stop, restart, remove and prune change state and need the person's approval (or HOMELAB_DOCKER_ALLOW_WRITES=true). remove deletes a container permanently. prune removes ALL stopped containers. container is a name or id (not needed for list or prune).

docker_imagesA

Images. list is read-only. pull, remove and prune change the host and need approval (or HOMELAB_DOCKER_ALLOW_WRITES=true). remove deletes an image; prune removes dangling and unused images.

docker_inventoryA

Read-only lists: volumes, networks, or Portainer stacks (stacks need the Portainer backend). Pass stack_id with kind=stacks to get that stack's compose file.

dns_zonesB

Zones for the Cloudflare account (action=list), or one zone exported in BIND format (action=export).

dns_recordsA

DNS records. list and get are read-only. create, update and delete change the zone and need the person's approval (or HOMELAB_DNS_ALLOW_WRITES=true). create needs name, record_type and content; update needs record_id and any field to change; delete removes the record permanently.

expose_serviceA

Expose a container: check it runs, add a Cloudflare CNAME to tunnel_hostname (only if given), and add an Nginx Proxy Manager host that forwards domain to forward_host:forward_port. The plan is shown to the person before anything changes.

teardown_serviceA

Reverse expose_service: delete the proxy host for domain (found by name unless proxy_host_id is given) and, if dns_record_id is given, that DNS record. The exact plan is shown to the person first.

service_statusC

One view of a service: the container, the proxy hosts that name the domain, and its DNS records.

infrastructure_overviewA

Counts across Docker, Nginx Proxy Manager and Cloudflare DNS, in one call.

diagnose_serviceA

Check each hop between a public domain and its upstream container, and name the first one that fails with the fix for it. Hops: DNS record, tunnel route (if the tunnel module is on), Nginx Proxy Manager host, TLS certificate (expiry and trust), upstream container running (Docker), upstream port answering, uptime monitor (if on), Authentik login in front (if on). Read-only: it changes nothing.

homelab_modulesA

Which modules are on, which settings are missing, whether writes are pre-approved, and what each tool does. Pass a module name for its full settings list (values are never shown, only whether they are set).

homelab_healthA

Connectivity and version for every enabled module. A module with missing settings reports the variable it needs.

Prompts

Interactive templates invoked by user choice

NameDescription
architecture-diagramCreate polished dark-themed architecture diagrams as self-contained HTML+SVG files. Use when the user asks for system, infrastructure, cloud, security, or network topology diagrams.
cloudflareDiscover and choose Cloudflare products for apps, APIs, AI agents, storage, networking, and security. Use for architecture and product selection, including when the user describes a need without naming a Cloudflare product; then find the relevant skill or documentation.
cloudflare-oneDesign, configure, troubleshoot, or review Cloudflare One Zero Trust and SASE deployments. Use cloudflare-one-migrations for migration planning from other vendors.
containersCheck, read, restart and inspect Docker containers on a homelab through the docker tools, with a dry run before every change. Use when the user asks for container status, logs, resource use, a restart, or wants a container started, stopped, removed or its images pulled or pruned.
dashmotionCreate dark-themed, animated technical diagrams as self-contained HTML+SVG files — flowcharts whose connectors visibly flow, and architecture diagrams where requests travel as light dots through the system (Diagrid/Temporal landing-page style). Use this skill whenever the user asks for a flowchart, workflow, pipeline, process diagram, state machine, system architecture, infrastructure, cloud, microservices, or network topology diagram — and especially when they mention "animated", "flowing", "dynamic", "alive", "GIF-like", or want a diagram for a landing page, README, docs, or product demo. Also use it to convert Mermaid source (a mermaid code block or .mmd file) into an animated diagram — "animate this mermaid", "make this flowchart move". Prefer this over static diagram output whenever the diagram represents anything that moves: requests, events, data, jobs, messages, or control flow.
diagramCreate an editable draw.io (.drawio) diagram file from a description of a system, flow, sequence or architecture. Use when the user wants a diagram they can open and edit in draw.io or diagrams.net. For an animated diagram, use dashmotion; for a map of a homelab network, use network-diagram.
expose-a-service-safelyPut a homelab container on a public web address in a fixed order: check the container runs, check the name is free, show the dry-run plan, apply it with approval, then diagnose every hop until the name works from outside. Use when the user wants a service reachable from the internet or a new public domain, or wants to tear one down.
fix-and-deployFix a bug in a running homelab service, check the fix against the original symptom, apply it to the live container, proxy or DNS path, then check the live target again before reporting it fixed. Use when a fix must reach something already running, not only a commit or a local copy.
getting-startedSet up and check the Homelab MCP server. Covers which modules are on, the settings each module needs, how to switch a module on or off, the first checks, how approvals work, and how to read an error. Use when the user installs Homelab, asks what it can do, gets a homelab.<module>.<code> error, or wants a module turned on or off.
homelab-health-checkRun a read-only sweep of the homelab across Homelab modules, containers, certificates, uptime monitors and DNS filtering, and report the results as one table. Use when the user asks for a health check, a status sweep, a morning check, or whether anything in the homelab needs attention. This skill never changes anything.
homelab-troubleshootingFind the root cause of a failing homelab service in a fixed order: state the symptom, run the per-hop checks, gather evidence, test one hypothesis at a time, then verify against the live service. Use when a service is down, returns errors, reports healthy but does not work, has a broken name or certificate, or a container keeps restarting.
network-diagramMap a homelab as an editable draw.io diagram that shows the services, Docker networks, reverse proxy and DNS path from a public name to each container, built from the live Homelab inventory. Use when the user asks to map their homelab, show how a request reaches a service, or document the network layout.
runbookWrite an operational runbook for one homelab service as a Markdown file, with the container, proxy host and DNS facts pulled from the live tools. Use when the user asks for a runbook, an SOP, or a document that explains how to operate, restart, roll back or troubleshoot one service.
systematic-debuggingUse when encountering any bug, test failure, or unexpected behavior, before proposing fixes

Resources

Contextual data attached and managed by the client

NameDescription
architecture-diagram/SKILL.md
architecture-diagram/resources/template.html
cloudflare/SKILL.md
cloudflare/references/ai-gateway/README.md
cloudflare/references/ai-gateway/configuration.md
cloudflare/references/ai-gateway/dynamic-routing.md
cloudflare/references/ai-gateway/features.md
cloudflare/references/ai-gateway/sdk-integration.md
cloudflare/references/ai-gateway/troubleshooting.md
cloudflare/references/ai-search/README.md
cloudflare/references/ai-search/api.md
cloudflare/references/ai-search/configuration.md
cloudflare/references/ai-search/gotchas.md
cloudflare/references/ai-search/patterns.md
cloudflare/references/bindings/README.md
cloudflare/references/bindings/api.md
cloudflare/references/bindings/configuration.md
cloudflare/references/bindings/gotchas.md
cloudflare/references/bindings/patterns.md
cloudflare/references/browser-rendering/README.md
cloudflare/references/browser-rendering/api.md
cloudflare/references/browser-rendering/configuration.md
cloudflare/references/browser-rendering/gotchas.md
cloudflare/references/browser-rendering/patterns.md
cloudflare/references/c3/README.md
cloudflare/references/c3/api.md
cloudflare/references/c3/configuration.md
cloudflare/references/c3/gotchas.md
cloudflare/references/c3/patterns.md
cloudflare/references/containers/README.md
cloudflare/references/containers/api.md
cloudflare/references/containers/configuration.md
cloudflare/references/containers/gotchas.md
cloudflare/references/containers/patterns.md
cloudflare/references/cron-triggers/README.md
cloudflare/references/cron-triggers/api.md
cloudflare/references/cron-triggers/configuration.md
cloudflare/references/cron-triggers/gotchas.md
cloudflare/references/cron-triggers/patterns.md
cloudflare/references/d1/README.md
cloudflare/references/d1/api.md
cloudflare/references/d1/configuration.md
cloudflare/references/d1/gotchas.md
cloudflare/references/d1/patterns.md
cloudflare/references/hyperdrive/README.md
cloudflare/references/hyperdrive/api.md
cloudflare/references/hyperdrive/configuration.md
cloudflare/references/hyperdrive/gotchas.md
cloudflare/references/hyperdrive/patterns.md
cloudflare/references/images/README.md
cloudflare/references/images/api.md
cloudflare/references/images/configuration.md
cloudflare/references/images/gotchas.md
cloudflare/references/images/patterns.md
cloudflare/references/kv/README.md
cloudflare/references/kv/api.md
cloudflare/references/kv/configuration.md
cloudflare/references/kv/gotchas.md
cloudflare/references/kv/patterns.md
cloudflare/references/miniflare/README.md
cloudflare/references/miniflare/api.md
cloudflare/references/miniflare/configuration.md
cloudflare/references/miniflare/gotchas.md
cloudflare/references/miniflare/patterns.md
cloudflare/references/observability/README.md
cloudflare/references/observability/api.md
cloudflare/references/observability/configuration.md
cloudflare/references/observability/gotchas.md
cloudflare/references/observability/patterns.md
cloudflare/references/pages/README.md
cloudflare/references/pages/api.md
cloudflare/references/pages/configuration.md
cloudflare/references/pages/gotchas.md
cloudflare/references/pages/patterns.md
cloudflare/references/pages-functions/README.md
cloudflare/references/pages-functions/api.md
cloudflare/references/pages-functions/configuration.md
cloudflare/references/pages-functions/gotchas.md
cloudflare/references/pages-functions/patterns.md
cloudflare/references/queues/README.md
cloudflare/references/queues/api.md
cloudflare/references/queues/configuration.md
cloudflare/references/queues/gotchas.md
cloudflare/references/queues/patterns.md
cloudflare/references/r2/README.md
cloudflare/references/r2/api.md
cloudflare/references/r2/configuration.md
cloudflare/references/r2/gotchas.md
cloudflare/references/r2/patterns.md
cloudflare/references/secrets-store/README.md
cloudflare/references/secrets-store/api.md
cloudflare/references/secrets-store/configuration.md
cloudflare/references/secrets-store/gotchas.md
cloudflare/references/secrets-store/patterns.md
cloudflare/references/smart-placement/README.md
cloudflare/references/smart-placement/api.md
cloudflare/references/smart-placement/configuration.md
cloudflare/references/smart-placement/gotchas.md
cloudflare/references/smart-placement/patterns.md
cloudflare/references/static-assets/README.md
cloudflare/references/static-assets/api.md
cloudflare/references/static-assets/configuration.md
cloudflare/references/static-assets/gotchas.md
cloudflare/references/static-assets/patterns.md
cloudflare/references/stream/README.md
cloudflare/references/stream/api-live.md
cloudflare/references/stream/api.md
cloudflare/references/stream/configuration.md
cloudflare/references/stream/gotchas.md
cloudflare/references/stream/patterns.md
cloudflare/references/tail-workers/README.md
cloudflare/references/tail-workers/api.md
cloudflare/references/tail-workers/configuration.md
cloudflare/references/tail-workers/gotchas.md
cloudflare/references/tail-workers/patterns.md
cloudflare/references/tunnel/README.md
cloudflare/references/tunnel/api.md
cloudflare/references/tunnel/configuration.md
cloudflare/references/tunnel/gotchas.md
cloudflare/references/tunnel/networking.md
cloudflare/references/tunnel/patterns.md
cloudflare/references/vectorize/README.md
cloudflare/references/vectorize/api.md
cloudflare/references/vectorize/configuration.md
cloudflare/references/vectorize/gotchas.md
cloudflare/references/vectorize/patterns.md
cloudflare/references/waf/README.md
cloudflare/references/waf/api.md
cloudflare/references/waf/configuration.md
cloudflare/references/waf/gotchas.md
cloudflare/references/waf/patterns.md
cloudflare/references/workers-ai/README.md
cloudflare/references/workers-ai/api.md
cloudflare/references/workers-ai/configuration.md
cloudflare/references/workers-ai/gotchas.md
cloudflare/references/workers-ai/patterns.md
cloudflare/references/workflows/README.md
cloudflare/references/workflows/api.md
cloudflare/references/workflows/configuration.md
cloudflare/references/workflows/gotchas.md
cloudflare/references/workflows/patterns.md
cloudflare-one/SKILL.md
containers/SKILL.md
dashmotion/SKILL.md
dashmotion/references/architecture-mode.md
dashmotion/references/flow-mode.md
dashmotion/references/layout-script.md
dashmotion/references/mermaid-input.md
dashmotion/resources/template-architecture.html
dashmotion/resources/template-flow.html
dashmotion/scripts/check_diagram.py
dashmotion/scripts/check_fidelity.py
dashmotion/scripts/layout.py
diagram/SKILL.md
expose-a-service-safely/SKILL.md
fix-and-deploy/SKILL.md
getting-started/SKILL.md
homelab-health-check/SKILL.md
homelab-troubleshooting/SKILL.md
network-diagram/SKILL.md
runbook/SKILL.md
systematic-debugging/SKILL.md
systematic-debugging/CREATION-LOG.md
systematic-debugging/condition-based-waiting-example.ts
systematic-debugging/condition-based-waiting.md
systematic-debugging/defense-in-depth.md
systematic-debugging/root-cause-tracing.md
systematic-debugging/test-academic.md
systematic-debugging/test-pressure-1.md
systematic-debugging/test-pressure-2.md
systematic-debugging/test-pressure-3.md

TDQS

B3.4/5.0

Scored across 16 tools

Disambiguation4/5

Most tools are clearly separated by resource and action: Docker container/image/inventory tools, proxy resource tools, DNS zone/record tools, and diagnostic/overview tools. The main overlap is between high-level composite tools (expose_service, teardown_service, service_status, infrastructure_overview) and the lower-level resource tools, which can require judgment about which abstraction to use.

Naming Consistency3/5

All names use snake_case, but the convention is mixed: some are plural resource nouns (proxy_hosts, docker_containers, dns_records), some are module/status nouns (homelab_modules, homelab_health, service_status), and some are verb_noun action tools (diagnose_service, expose_service, teardown_service). The names are readable, but there is no single predictable pattern.

Tool Count4/5

Sixteen tools is reasonable for a homelab management server spanning Docker, reverse proxy, DNS, diagnostics, and service lifecycle. The count is slightly high because composite tools coexist with granular resource tools, but each tool still has a plausible role.

Completeness4/5

The surface covers core homelab workflows well: Docker inspection and lifecycle, proxy hosts/redirections/certificates/access lists, DNS zones/records, diagnostics, exposure/teardown, and status overview. Some gaps remain, such as management operations for tunnels, Authentik, uptime monitoring, and Docker volumes/networks beyond read-only inventory.

Maintenance

ActivityMaintained
ResponsivenessNo issues