MCP integrations for HolmesGPT
holmes-mcp-integrations/
├── build-all-mcp-servers.sh # Build script for all MCP servers
├── mcp_base_image/ # Base Docker image for MCP servers
└── servers/ # MCP server implementations
├── aws/ # AWS API MCP Server
├── aws-multi-account/ # AWS Multi-Account MCP Server
├── azure/ # Azure CLI MCP Server
├── confluence/ # Confluence MCP Server (external image)
├── gcp/
│ ├── gcloud/ # GCP gcloud CLI MCP Server
│ ├── observability/ # GCP Observability MCP Server
│ └── storage/ # GCP Storage MCP Server
├── github/ # GitHub MCP Server
├── kubernetes-remediation/ # Kubernetes Remediation MCP Server
├── mariadb/
│ └── mcp-minimal/ # MariaDB MCP Server (minimal)
└── sentry/ # Sentry MCP Server
Each MCP server directory contains an auto-build-config.yaml file that defines the image name and version:
image: azure-cli-mcp
version: "1.0.2"Use the build-all-mcp-servers.sh script to build and push all MCP server images:
# Build all servers (skips images that already exist)
./build-all-mcp-servers.sh
# Dry run - list servers and check which images exist (no build)
./build-all-mcp-servers.sh --dry-run
# Force rebuild all servers (even if they exist)
./build-all-mcp-servers.sh --force
# Show help
./build-all-mcp-servers.sh --helpThe script will:
- Build the base image first (
mcp_base_image/supergateway_base) - Auto-discover all servers with
auto-build-config.yaml - Check if each image already exists in the registry
- Skip existing images (unless
--forceis used) - Build multi-platform images (linux/amd64, linux/arm64)
- Push to the configured registry
The base image (supergateway_base) is built first and tagged with both version and :latest. All MCP servers depend on this base image. Its config is in mcp_base_image/auto-build-config.yaml.
Each server directory also has its own build-push.sh script:
cd servers/azure
./build-push.shTo release a new version of an MCP server:
-
Update the
versionin the server'sauto-build-config.yaml:image: azure-cli-mcp version: "1.0.3" # bumped from 1.0.2
-
Run the build:
# Build just that server cd servers/azure && ./build-push.sh # Or build all (will only build the changed one) ./build-all-mcp-servers.sh
All images are pushed to:
us-central1-docker.pkg.dev/genuine-flight-317411/mcp/
-
Create a new directory under
servers/:mkdir servers/my-new-mcp
-
Add a
Dockerfile:FROM us-central1-docker.pkg.dev/genuine-flight-317411/mcp/supergateway_base:latest # ... your server setup
-
Add
auto-build-config.yaml:image: my-new-mcp version: "1.0.0"
-
Add
build-push.sh:#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REGISTRY="us-central1-docker.pkg.dev/genuine-flight-317411/mcp" image=$(grep '^image:' "$SCRIPT_DIR/auto-build-config.yaml" | sed 's/image: *//') version=$(grep '^version:' "$SCRIPT_DIR/auto-build-config.yaml" | sed 's/version: *//' | tr -d '"') docker buildx build --pull --no-cache --build-arg BUILDKIT_INLINE_CACHE=1 --platform linux/arm64,linux/amd64 --tag "$REGISTRY/$image:$version" --push .
-
Make it executable:
chmod +x servers/my-new-mcp/build-push.sh
The new server will be automatically discovered by build-all-mcp-servers.sh.