Skip to main content

MCP server providing diagnostic intelligence for Docker environments

Project description

docker-kestrel

An MCP server that provides diagnostic intelligence for Docker environments. No Prometheus, no Datadog — just the daemon and smart analysis.

Connect docker-kestrel to Claude Desktop, Claude Code, Cursor, or any MCP-compatible client and ask plain-English questions about your containers.

Why "kestrel"?

A kestrel is a small falcon known for hovering perfectly still in the wind while its eyes lock onto a target below. It watches — it doesn't swoop. docker-kestrel works the same way: it hovers over your containers and tells you exactly what's wrong, without touching anything.

What it does

Existing Docker MCP servers wrap CLI commands (start, stop, list). docker-kestrel reasons about what's going on:

  • diagnose_container — full diagnostic report: OOM detection, crash loop detection, health check analysis, resource snapshot, log summary
  • resource_overview — ranked resource usage across all containers with anomaly flags
  • network_map — Docker network topology, container IPs, port bindings
  • compose_drift — compare a docker-compose.yml against running containers to find drift
  • log_analysis — structured log analysis: error counts, pattern grouping, first/last occurrence

Quick start

# Install with uv
uv tool install docker-kestrel

# Or run directly without installing
uvx docker-kestrel

Claude Desktop~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "docker-kestrel": {
      "command": "uvx",
      "args": ["docker-kestrel"]
    }
  }
}

Claude Code:

claude mcp add docker-kestrel uvx docker-kestrel

Cursor~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):

{
  "mcpServers": {
    "docker-kestrel": {
      "command": "uvx",
      "args": ["docker-kestrel"]
    }
  }
}

Example queries

Once connected, you can ask your AI client:

  • "Why is my api container unhealthy?"
  • "Which container is using the most memory?"
  • "Why can't container A reach container B?"
  • "Has anything drifted from my docker-compose.yml?"
  • "Summarize the errors in the worker container's logs"

Development

git clone https://github.com/markalovell-git/docker-kestrel
cd docker-kestrel
uv sync --dev
uv pip install -e .

# Run unit tests (no Docker daemon required)
uv run pytest tests/test_analysis.py -v

# Run integration tests (requires Docker)
uv run pytest tests/test_integration.py -v

Requirements

  • Python 3.11+
  • Docker daemon running and accessible (via /var/run/docker.sock)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker_kestrel-0.1.0.tar.gz (75.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docker_kestrel-0.1.0-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file docker_kestrel-0.1.0.tar.gz.

File metadata

  • Download URL: docker_kestrel-0.1.0.tar.gz
  • Upload date:
  • Size: 75.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for docker_kestrel-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e5cce8404d88293a4321a6f84674772fb1fe01a04327a817f9615386c0b5785d
MD5 039da0332f7d0cc4fba9cc21ae818b81
BLAKE2b-256 81a6b05078b775410be8fb079b8317d803ba04d17a4d825c0e5f0f0065d0e19b

See more details on using hashes here.

File details

Details for the file docker_kestrel-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: docker_kestrel-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for docker_kestrel-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 623b189a6959271f4966c04266e0d57327f4e37a1cd3429ec83033d4bfa9f1cf
MD5 ec189f63383f96a46f316b6858a77966
BLAKE2b-256 84d16337e38f04015d255bd02113259306340b64fea1c73734214b4189f1a3f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page