Skip to content

simseksem/mcp-container-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐳 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

πŸ“¦ Quick Install (recommended)

# 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.


Made with ❀️ for the MCP community

About

MCP server for Docker, Compose & Kubernetes logs with advanced filtering

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages