MCP Container Tools
π³ MCP Container Tools
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 |
| Minimum log level |
|
| Regex to include |
|
| Regex to exclude |
|
| Lines around matches |
|
Supported log levels: trace β debug β info β warn β error β fatal
β±οΈ Timespan Format (Azure)
Azure tools use ISO 8601 duration format:
Format | Duration |
| 1 hour |
| 30 minutes |
| 1 day |
| 7 days |
π οΈ Available Tools
π³ Docker Tools
Tool | Description |
| π Read container logs with filtering |
| π List containers |
| π Get container details |
| β‘ Execute command in container |
π Docker Compose Tools
Tool | Description |
| π Read service logs |
| π List services |
| βΆοΈ Start services |
| βΉοΈ Stop services |
| π Restart services |
βΈοΈ Kubernetes Tools
Tool | Description |
| π Read pod logs |
| π Read deployment logs |
| π List pods |
| π Describe pod |
| β‘ Execute in pod |
| π’ Get events |
| π List contexts |
βοΈ Azure Application Insights Tools
Tool | Description |
| π Run custom Kusto queries |
| β Query application exceptions |
| π Query application traces |
| π Query HTTP requests |
| π Query external dependencies |
| π Query metrics |
| β Query availability tests |
π¨βπ» Development
Install dev dependencies
pip install -e ".[all]"Run tests
pytestLinting 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 Application Insights resource ID |
π License
MIT License - see LICENSE for details.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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