Skip to main content
Glama

🐳 MCP Container Tools

PyPI version Python 3.11+ License: MIT MCP

A Model Context Protocol (MCP) server for Docker, Kubernetes, and Azure Application Insights with advanced log filtering and monitoring capabilities.

✨ Features

  • 🐳 Docker β€” Container logs, inspect, exec, list containers

  • πŸ™ Docker Compose β€” Service logs, start/stop/restart services

  • ☸️ Kubernetes β€” Pod logs, deployment logs, events, exec into pods

  • ☁️ Azure Application Insights β€” Exceptions, traces, requests, metrics

  • πŸ” Log Filtering β€” Filter by log level, regex patterns, exclude patterns

  • 🌐 Remote Support β€” Connect to remote Docker hosts via SSH or TCP

πŸ“‹ Requirements

Requirement

Version

Required For

🐍 Python

3.11+

All

🐳 Docker

Latest

Docker tools

☸️ kubectl

Latest

Kubernetes tools

☁️ Azure CLI

Latest

Azure tools (optional)

πŸš€ Installation

# Basic installation pip install mcp-container-tools # With Azure Application Insights support pip install mcp-container-tools[azure]

πŸ™ Install from GitHub

# Latest version from GitHub pip install git+https://github.com/simseksem/mcp-container-tools.git # With Azure support pip install "mcp-container-tools[azure] @ git+https://github.com/simseksem/mcp-container-tools.git"

πŸ”§ Install from source (for development)

git clone https://github.com/simseksem/mcp-container-tools.git cd mcp-container-tools pip install -e ".[all]"

βœ… Verify installation

mcp-server --help

βš™οΈ Configuration

πŸ–₯️ Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{ "mcpServers": { "container-tools": { "command": "/path/to/mcp-container-tools/.venv/bin/python", "args": ["-m", "mcp_server.server"], "env": { "AZURE_LOG_ANALYTICS_WORKSPACE_ID": "your-workspace-id", "AZURE_APP_INSIGHTS_RESOURCE_ID": "/subscriptions/.../resourceGroups/.../providers/microsoft.insights/components/..." } } } }

πŸ’» Claude Code

Add to ~/.claude/settings.json or create .mcp.json in your project:

{ "mcpServers": { "container-tools": { "command": "/path/to/mcp-container-tools/.venv/bin/python", "args": ["-m", "mcp_server.server"] } } }

☁️ Azure Authentication

Azure tools use DefaultAzureCredential which supports:

  • Azure CLI (az login)

  • Environment variables

  • Managed Identity

  • Visual Studio Code

# Easiest: Login with Azure CLI az login

πŸ“– Usage Examples

🐳 Docker

# Read container logs docker_logs(container="my-app", tail=100) # Read logs from last 30 minutes docker_logs(container="my-app", since="30m") # Filter by log level (only errors and above) docker_logs(container="my-app", min_level="error") # Search for patterns docker_logs(container="my-app", pattern="timeout|connection refused") # Exclude health checks docker_logs(container="my-app", exclude_pattern="GET /health") # Remote Docker host via SSH docker_logs(container="my-app", host="ssh://user@server.com") # List containers docker_ps(all=True)

πŸ™ Docker Compose

# Read service logs compose_logs(service="api", tail=200) # Read all services logs compose_logs(project_dir="/path/to/project") # Service management compose_up(service="api", project_dir="/path/to/project") compose_down(project_dir="/path/to/project") compose_restart(service="api")

☸️ Kubernetes

# Read pod logs k8s_logs(pod="api-7d4b8c6f9-x2k4m", namespace="production") # Read logs from all pods in a deployment k8s_deployment_logs(deployment="api", namespace="production") # Filter logs k8s_logs(pod="api-*", min_level="warn", pattern="database") # Use different context k8s_logs(pod="my-pod", context="production-cluster", namespace="backend") # List pods k8s_pods(namespace="all", selector="app=api") # Get events k8s_events(namespace="production") # Execute command in pod k8s_exec(pod="api-xyz", command="printenv", namespace="production")

☁️ Azure Application Insights

# Query exceptions from last hour azure_exceptions(timespan="PT1H", limit=50) # Get only critical exceptions azure_exceptions(severity="critical", search="NullReference") # Query application traces azure_traces(timespan="PT1H", severity="error") # Query HTTP requests azure_requests(timespan="PT1H", failed_only=True) # Get slow requests (>1 second) azure_requests(min_duration_ms=1000, limit=20) # Query external dependencies (SQL, HTTP, etc.) azure_dependencies(timespan="PT1H", failed_only=True, type_filter="SQL") # Get metrics azure_metrics(metric_name="requests/count", timespan="P1D", interval="PT1H") # Query availability test results azure_availability(timespan="P1D", failed_only=True) # Run custom Kusto query azure_query(query=""" requests | where success == false | summarize count() by bin(timestamp, 1h), resultCode | order by timestamp desc """, timespan="P1D")

πŸ” Log Filtering Options

All log tools support these filtering options:

Option

Description

Example

min_level

Minimum log level

"error", "warn", "info"

pattern

Regex to include

"error|exception"

exclude_pattern

Regex to exclude

"health.*check"

context_lines

Lines around matches

5

Supported log levels: trace β†’ debug β†’ info β†’ warn β†’ error β†’ fatal

⏱️ Timespan Format (Azure)

Azure tools use ISO 8601 duration format:

Format

Duration

PT1H

1 hour

PT30M

30 minutes

P1D

1 day

P7D

7 days

πŸ› οΈ Available Tools

🐳 Docker Tools

Tool

Description

docker_logs

πŸ“„ Read container logs with filtering

docker_ps

πŸ“‹ List containers

docker_inspect

πŸ”Ž Get container details

docker_exec

⚑ Execute command in container

πŸ™ Docker Compose Tools

Tool

Description

compose_logs

πŸ“„ Read service logs

compose_ps

πŸ“‹ List services

compose_up

▢️ Start services

compose_down

⏹️ Stop services

compose_restart

πŸ”„ Restart services

☸️ Kubernetes Tools

Tool

Description

k8s_logs

πŸ“„ Read pod logs

k8s_deployment_logs

πŸ“š Read deployment logs

k8s_pods

πŸ“‹ List pods

k8s_describe

πŸ”Ž Describe pod

k8s_exec

⚑ Execute in pod

k8s_events

πŸ“’ Get events

k8s_contexts

🌐 List contexts

☁️ Azure Application Insights Tools

Tool

Description

azure_query

πŸ” Run custom Kusto queries

azure_exceptions

❌ Query application exceptions

azure_traces

πŸ“ Query application traces

azure_requests

🌐 Query HTTP requests

azure_dependencies

πŸ”— Query external dependencies

azure_metrics

πŸ“Š Query metrics

azure_availability

βœ… Query availability tests

πŸ‘¨β€πŸ’» Development

Install dev dependencies

pip install -e ".[all]"

Run tests

pytest

Linting and type checking

ruff check . mypy src/

πŸ“ Project Structure

mcp-container-tools/ β”œβ”€β”€ πŸ“‚ src/mcp_server/ β”‚ β”œβ”€β”€ πŸ“„ __init__.py β”‚ β”œβ”€β”€ πŸ“„ server.py # Main server entry point β”‚ β”œβ”€β”€ πŸ“‚ tools/ β”‚ β”‚ β”œβ”€β”€ 🐳 docker.py # Docker tools β”‚ β”‚ β”œβ”€β”€ πŸ™ docker_compose.py # Compose tools β”‚ β”‚ β”œβ”€β”€ ☸️ kubernetes.py # K8s tools β”‚ β”‚ β”œβ”€β”€ ☁️ azure_insights.py # Azure App Insights β”‚ β”‚ └── πŸ“ file_operations.py # File tools β”‚ β”œβ”€β”€ πŸ“‚ resources/ β”‚ β”‚ β”œβ”€β”€ βš™οΈ config.py # Config resources β”‚ β”‚ └── πŸ“Š data.py # Data resources β”‚ β”œβ”€β”€ πŸ“‚ prompts/ β”‚ β”‚ └── πŸ“ templates.py # Prompt templates β”‚ └── πŸ“‚ utils/ β”‚ └── πŸ” log_filter.py # Log filtering β”œβ”€β”€ πŸ“‚ tests/ β”œβ”€β”€ πŸ“„ pyproject.toml └── πŸ“„ README.md

πŸ” Environment Variables

Variable

Description

AZURE_LOG_ANALYTICS_WORKSPACE_ID

Azure Log Analytics workspace ID

AZURE_APP_INSIGHTS_RESOURCE_ID

Azure Application Insights resource ID

πŸ“„ License

MIT License - see LICENSE for details.


-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/simseksem/mcp-container-tools'

If you have feedback or need assistance with the MCP directory API, please join our Discord server