Dockhold
Server Details
Deploy a GitHub repo to a live HTTPS URL from your AI tool; read logs, set variables, resize apps.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 12 of 12 tools scored.
Each tool targets a distinct operation: deployment, monitoring, scaling, configuration, or listing. There is no overlap; agents can easily select the correct tool.
All tools follow a consistent verb_noun pattern in snake_case (e.g., deploy_app, get_app_logs, resize_database). No naming irregularities.
12 tools cover the core operations of a deployment platform without bloat or missing essentials. The count is well-scoped.
Covers deploy, manage, scale, and monitor effectively. Missing only minor operations like deleting an app or environment variable, but the core workflow is complete.
Available Tools
12 toolsdeploy_appDeploy an appInspect
Deploy a GitHub repository as a live web app on Dockhold. Call this when the user wants to put an app online, get a shareable HTTPS URL, or host a demo. Returns the new app id. Two paths: a PUBLIC repo needs only repo_url; a PRIVATE repo needs repo_url plus github_installation_id (call list_github_repos first, each repo comes with the installation_id to pass here). Deploying a private repo turns on auto-deploy: future pushes to that repo redeploy the app automatically. The app builds and comes online automatically; poll get_app_status to watch it. This tool needs a GitHub repo URL: if the code only exists locally (no repo), it cannot be used here, and the user should run npx dockhold login then npx dockhold deploy in the project folder instead. Requires a token with the deploy scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A name for the app (1-64 chars) | |
| repo_url | Yes | GitHub repository URL, e.g. https://github.com/owner/repo. Public repos deploy with this alone; a private repo also needs github_installation_id. | |
| with_database | No | Provision a managed Postgres database for the app (default false) | |
| github_installation_id | No | Required for PRIVATE repositories. Get it from list_github_repos — each repo comes with the installation_id to pass here. Omit for public repos. |
deploy_groupDeploy a service groupInspect
Deploy several connected services in one go (e.g. a frontend + an API). Call this when the user's project is split across multiple repos that must talk to each other; for a single repo use deploy_app. Each service is a public GitHub repo that gets its own URL. Wire them by setting an env var to the exact token ${services..url} — Dockhold injects that service's live URL once it deploys. Give the backend its own database with "db":"enable" (DATABASE_URL is injected; a pure frontend doesn't need one). Builds run in parallel; poll get_app_status with each returned app_id.
| Name | Required | Description | Default |
|---|---|---|---|
| services | Yes | Map of service name (lowercase letters, digits, hyphens) to its definition. Provide two or more. |
get_app_logsGet app logsRead-onlyIdempotentInspect
Get the most recent runtime logs for one app. Call this when an app is crashing, returning errors, or a deploy succeeded but the app misbehaves: the logs usually name the cause.
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | Number of recent log lines to return (max 200, default 100) | |
| app_id | Yes | The app id returned by list_apps |
get_app_statusGet app statusRead-onlyIdempotentInspect
Get detailed status for one app: deploy status, URL, last deployed commit, and any error message. Call this to check whether a deploy has finished, to get an app's live URL, or to see why an app is in error.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app id returned by list_apps |
get_resource_usageShow resource usageRead-onlyIdempotentInspect
Show your account's compute, database-RAM, and storage pools: how much you've bought, how much is used, and how much is free, plus every app's current size. Call this before any resize tool (the allowed sizes come from its steps fields), and to explain to the user why an app ran out of memory or a deploy was refused for capacity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_appsList appsRead-onlyIdempotentInspect
List the apps in your Dockhold account, with each app's id, status, URL, and source repo. Call this first whenever the user asks about their apps, or when you need an app_id for any other tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_github_reposList connected GitHub reposRead-onlyIdempotentInspect
List the GitHub repositories you have connected to Dockhold, across every installation. Call this before deploy_app when the target repo is private, or when the user asks which repos they can deploy. Each repo comes with its installation_id: pass that (with the repo's clone URL) to deploy_app to deploy a PRIVATE repository. Public repos don't need it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
redeploy_appRestart an appIdempotentInspect
Restart an existing app (rolling restart with zero downtime). Call this after changing configuration, or to recover an app that is stuck or misbehaving. It reruns the current build; it does not pull new code.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app id returned by list_apps |
resize_appResize app memoryIdempotentInspect
Change how much memory one app gets. Call this when an app is running out of memory (OOM) or the user asks to make an app bigger or smaller. memory_mb must be one of the sizes get_resource_usage reports under compute.steps_mb, and the new size has to fit your available compute pool (call get_resource_usage first). Applied with a zero-downtime rolling update.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app id returned by list_apps | |
| memory_mb | Yes | New memory size in MB — one of the values get_resource_usage reports under compute.steps_mb |
resize_databaseResize database memoryIdempotentInspect
Change how much memory an app's managed database gets. Call this when the database is slow or out of memory. db_ram_mb must be one of the sizes get_resource_usage reports under db_ram.steps_mb and fit your database-RAM pool. WARNING: the database restarts briefly to apply the new size, so the app loses its database connection for a few seconds. Only works if the app has a managed database.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app id returned by list_apps | |
| db_ram_mb | Yes | New database memory in MB — one of the values get_resource_usage reports under db_ram.steps_mb |
resize_database_storageGrow database storageIdempotentInspect
Grow the disk of an app's managed database. Call this when the database is running out of disk space. GROW-ONLY: you can increase storage but never shrink it. storage_gb must be one of the sizes get_resource_usage reports under storage.steps_gb and fit your storage pool. Applied online with no database restart. Only works if the app has a managed database.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The app id returned by list_apps | |
| storage_gb | Yes | New database disk size in GB — one of the values get_resource_usage reports under storage.steps_gb; must be at least the current size (grow-only) |
set_app_variableSet an app variableIdempotentInspect
Set a single environment variable on an app and roll it out. Call this when an app needs plain configuration such as LOG_LEVEL or a feature flag. For secrets (API keys, passwords, tokens) use the Secrets section of the Dockhold dashboard instead: this tool rejects secret-looking keys.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Environment variable name, e.g. LOG_LEVEL | |
| value | Yes | Environment variable value | |
| app_id | Yes | The app id returned by list_apps |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!