An MCP (Model Context Protocol) server that exposes 130+ Dockhand API endpoints as MCP tools. Manage your entire Docker infrastructure through AI assistants.
Dockhand is a Docker management server that connects to multiple Docker hosts via Hawser agents. This MCP server provides full programmatic access to all Dockhand features.
130+ MCP Tools covering all Dockhand API endpoints
Streamable HTTP Transport (MCP Spec 2025-03-26) for Docker container hosting
Session-based Auth with auto-relogin on 401
SSE Support for deploy operations (start, stop, down, restart)
Environment Filter enforced on all container/stack/image/network/volume endpoints
Docker Ready with multi-stage build, non-root user, and health checks
docker run -d \
--name mcp-dockhand \
-p 8080:8080 \
-e DOCKHAND_URL=https://your-dockhand-server.com \
-e DOCKHAND_USERNAME=your-username \
-e DOCKHAND_PASSWORD=your-password \
ghcr.io/strausmann/mcp-dockhand:latest
services :
mcp-dockhand :
image : ghcr.io/strausmann/mcp-dockhand:latest
container_name : mcp-dockhand
restart : unless-stopped
ports :
- " 8080:8080"
environment :
- DOCKHAND_URL=https://your-dockhand-server.com
- DOCKHAND_USERNAME=your-username
- DOCKHAND_PASSWORD=your-password
git clone https://github.com/strausmann/mcp-dockhand.git
cd mcp-dockhand
npm install
npm run build
DOCKHAND_URL=https://your-server.com DOCKHAND_USERNAME=admin DOCKHAND_PASSWORD=secret npm start
Variable
Required
Default
Description
DOCKHAND_URL
Yes
-
Dockhand server URL
DOCKHAND_USERNAME
Yes
-
Dockhand username
DOCKHAND_PASSWORD
Yes
-
Dockhand password
MCP_PORT
No
8080
Port for the MCP server
LOG_LEVEL
No
info
Log level
Claude Desktop / Claude Code
Add to your MCP settings:
{
"mcpServers" : {
"dockhand" : {
"url" : " http://localhost:8080/mcp"
}
}
}
Tool
Description
list_containers
List all containers in an environment
get_container
Get container details
inspect_container
Docker inspect (full details)
get_container_logs
Get container logs
get_container_stats
Get resource usage stats
get_container_top
Get running processes
start_container
Start a container
stop_container
Stop a container
restart_container
Restart a container
pause_container
Pause a container
unpause_container
Unpause a container
rename_container
Rename a container
update_container
Update container settings
create_container
Create a new container
get_container_shells
List available shells
list_container_files
Browse files inside container
get_container_file_content
Read file from container
create_container_file
Create file in container
delete_container_file
Delete file in container
rename_container_file
Rename file in container
chmod_container_file
Change file permissions
check_container_updates
Check for image updates
get_pending_updates
Get pending updates
batch_update_containers
Batch update containers
get_container_sizes
Get container disk sizes
get_containers_stats
Get aggregated stats
Tool
Description
list_stacks
List all stacks
get_stack
Get stack details
create_stack
Create and optionally deploy a stack
start_stack
Start a stack (compose up)
stop_stack
Stop a stack (compose stop)
restart_stack
Restart a stack
down_stack
Take down a stack (compose down)
delete_stack
Delete a stack
get_stack_compose
Read compose file
update_stack_compose
Update compose file
get_stack_env
Read environment variables
update_stack_env
Update environment variables
get_stack_env_raw
Read raw .env file
validate_stack_env
Validate env variables
scan_stacks
Scan filesystem for stacks
adopt_stack
Adopt an untracked stack
relocate_stack
Move stack to new path
get_stack_sources
Get stack sources
get_stack_base_path
Get base path
get_stack_path_hints
Get path suggestions
validate_stack_path
Validate a stack path
Tool
Description
list_images
List all images
get_image
Get image details
get_image_history
Get image layer history
tag_image
Tag an image
remove_image
Remove an image
pull_image
Pull an image
push_image
Push an image
scan_image
Vulnerability scan (Trivy/Grype)
export_image
Export image as tarball
Tool
Description
list_environments
List all environments
get_environment
Get environment details
create_environment
Create an environment
update_environment
Update an environment
delete_environment
Delete an environment
test_environment
Test connection
test_environment_connection
Test without saving
detect_docker_socket
Auto-detect socket
get_environment_timezone
Get timezone
set_environment_timezone
Set timezone
get_environment_update_check
Get update-check settings
set_environment_update_check
Set update-check settings
get_environment_image_prune
Get image prune settings
set_environment_image_prune
Set image prune settings
list_environment_notifications
List notifications
create_environment_notification
Create notification
get_environment_notification
Get notification
delete_environment_notification
Delete notification
Tool
Description
list_networks
List all networks
get_network
Get network details
inspect_network
Inspect network
create_network
Create a network
remove_network
Remove a network
connect_container_to_network
Connect container
disconnect_container_from_network
Disconnect container
Tool
Description
list_volumes
List all volumes
get_volume
Get volume details
inspect_volume
Inspect volume
browse_volume
Browse files in volume
get_volume_file_content
Read file from volume
release_volume_browse
Release browse session
clone_volume
Clone a volume
export_volume
Export volume
remove_volume
Remove volume (destructive)
Tool
Description
list_git_stacks
List Git-based stacks
get_git_stack
Get Git stack details
deploy_git_stack
Deploy a Git stack (SSE)
sync_git_stack
Sync with remote repo
test_git_stack
Test Git connection
get_git_stack_env_files
Get env files
trigger_git_webhook
Trigger webhook
get_git_webhook
Get webhook details
list_git_credentials
List Git credentials
create_git_credential
Create Git credential
get_git_credential
Get credential details
update_git_credential
Update credential
delete_git_credential
Delete credential
list_git_repositories
List Git repositories
create_git_repository
Create repository config
Dashboard & Activity (8 tools)
Tool
Description
get_dashboard_stats
Get dashboard statistics
get_dashboard_preferences
Get display preferences
set_dashboard_preferences
Set display preferences
get_activity_feed
Get activity feed
get_container_activity
Container activity
get_activity_events
Activity events
get_activity_stats
Activity statistics
get_merged_logs
Merged logs from containers
Tool
Description
get_auth_session
Check session status
get_auth_providers
List auth providers
get_auth_settings
Get auth settings
create_oidc_provider
Create OIDC provider
get_oidc_provider
Get OIDC provider
test_oidc_provider
Test OIDC provider
create_ldap_provider
Create LDAP provider
get_ldap_provider
Get LDAP provider
test_ldap_provider
Test LDAP provider
list_hawser_tokens
List Hawser tokens
create_hawser_token
Create Hawser token
revoke_hawser_token
Revoke Hawser token
Tool
Description
get_audit_log
Get audit log
get_audit_events
Get audit event types
get_audit_users
Audit data by user
export_audit_log
Export audit log
Tool
Description
list_notifications
List notifications
create_notification
Create notification
get_notification
Get notification
update_notification
Update notification
delete_notification
Delete notification
test_notification
Test notification
test_notification_config
Test without saving
trigger_test_notification
Trigger test event
Tool
Description
list_registries
List registries
create_registry
Add registry
get_registry
Get registry details
update_registry
Update registry
delete_registry
Delete registry
set_default_registry
Set as default
search_registry
Search registry
get_registry_catalog
Get catalog
get_registry_image
Get image from registry
get_registry_tags
Get image tags
System & Settings (19 tools)
Tool
Description
health_check
Server health
health_check_database
Database health
get_host_info
Host information
get_system_info
System information
get_system_disk
Disk usage
list_system_files
List system files
get_system_file_content
Read system file
get_changelog
Changelog
get_dependencies
Dependencies
get_general_settings
General settings
update_general_settings
Update settings
get_theme_settings
Theme settings
update_theme_settings
Update theme
get_scanner_settings
Scanner settings
update_scanner_settings
Update scanner
get_license
License info
activate_license
Activate license
get_prometheus_metrics
Prometheus metrics
prune_all
Prune all resources
Users, Roles & Preferences (20 tools)
Tool
Description
list_users
List users
create_user
Create user
get_user
Get user details
update_user
Update user
delete_user
Delete user
get_user_mfa_status
MFA status
enable_user_mfa
Enable MFA
disable_user_mfa
Disable MFA
get_user_roles
Get user roles
set_user_roles
Set user roles
list_roles
List roles
create_role
Create role
get_role
Get role
update_role
Update role
delete_role
Delete role
get_profile
Get own profile
update_profile
Update own profile
get_favorites
Get favorites
set_favorites
Set favorites
list_config_sets
List config sets
Tool
Description
list_schedules
List schedules
get_schedule_settings
Get settings
update_schedule_settings
Update settings
get_schedule_executions
Execution history
get_schedule_execution
Execution details
get_schedule
Get schedule
run_schedule_now
Run immediately
toggle_schedule
Enable/disable
toggle_system_schedule
Toggle system schedule
Tool
Description
get_auto_update_settings
Get all auto-update settings
get_container_auto_update
Get container auto-update
set_container_auto_update
Set auto-update policy
Environment ID is Required
Most Docker resource endpoints (containers, stacks, images, networks, volumes) require an environmentId parameter. This maps to the ?env=<id> query parameter in the Dockhand API. Without it, endpoints return empty arrays.
Deploy operations (start, stop, down, restart, compose update with restart) return Server-Sent Events. The MCP server automatically parses these and returns the final result.
The server uses session-based cookie authentication. It automatically:
Logs in on first request
Stores the session cookie in memory
Re-authenticates on 401 responses
Handles session timeout (24h)
# Install dependencies
npm install
# Type check
npm run typecheck
# Build
npm run build
# Run in development mode
DOCKHAND_URL=https://your-server.com \
DOCKHAND_USERNAME=admin \
DOCKHAND_PASSWORD=secret \
npm run dev
MIT