Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Ceph

БесплатноНе проверен

MCP server for managing a Ceph cluster, currently implementing note-taking functionality as a placeholder.

GitHubEmbed

Описание

MCP server for managing a Ceph cluster, currently implementing note-taking functionality as a placeholder.

README

A read-only MCP server for Rook-Ceph clusters running on Kubernetes.

It lets an LLM (Claude, etc.) inspect the health of a Ceph cluster — cluster health, OSD tree, PG status, pool usage, mon quorum, RGW multisite sync — by executing a fixed set of ceph / radosgw-admin commands inside the Rook-Ceph toolbox pod and returning structured JSON.

Why it's safe to hand to an LLM

  • No arbitrary commands. Every tool maps to exactly one hardcoded command template in commands.py. There is no code path that builds a shell command from model input — the model can only pick which tool to call, never what to run.
  • Read-only. Only inspection commands (ceph health, ceph osd tree, ceph df, radosgw-admin sync status, ...) are exposed. Nothing that mutates cluster state.
  • Scoped exec, not a shell. Commands run via the Kubernetes exec API inside the existing rook-ceph-tools pod — the server itself never needs cluster-admin credentials beyond what your kubeconfig already grants.

Tools

Tool Description
get_cluster_health HEALTH_OK/WARN/ERR plus the active health checks and their severity
get_osd_tree Hierarchical host/OSD structure with up/down/in/out state
get_osd_df Per-OSD capacity/usage, useful for spotting imbalance
get_pg_status PG counts by state, plus PG-related health checks
get_pool_usage Per-pool stored/used/available bytes and object counts
get_mon_status Monitor quorum state and mon list
get_rgw_sync_status Per-zone RGW multisite sync state: behind/caught-up/failed
get_cluster_summary Composes all of the above into a single "how's the cluster doing" snapshot

Every tool returns a JSON envelope:

{ "ok": true, "tool": "get_cluster_health", "data": { ... }, "warnings": [] }

or, on failure:

{ "ok": false, "tool": "get_cluster_health", "error": "...", "detail": "..." }

Requirements

  • Python >= 3.14
  • A Kubernetes cluster running Rook-Ceph, with the rook-ceph-tools toolbox pod deployed
  • A working kubeconfig with permission to list/exec pods in the Rook-Ceph namespace

Installation

Once published to PyPI, run it with uvx — no separate install step needed:

uvx ceph-mcp

Or install it into a virtualenv:

uv pip install ceph-mcp

From source

git clone [email protected]:sserkanml/ceph-mcp.git
cd ceph-mcp
uv sync
uv run ceph-mcp

Configuration

Configured entirely through environment variables:

Variable Default Description
CEPH_MCP_NAMESPACE rook-ceph Namespace the toolbox pod lives in
CEPH_MCP_TOOLBOX_LABEL app=rook-ceph-tools Label selector used to find the toolbox pod
CEPH_MCP_KUBECONFIG (default kubeconfig) Path to a specific kubeconfig file
CEPH_MCP_KUBE_CONTEXT (current context) kubeconfig context to use

Usage with Claude Desktop

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%/Claude/claude_desktop_config.json

Published (PyPI) version:

{
  "mcpServers": {
    "ceph-mcp": {
      "command": "uvx",
      "args": ["ceph-mcp"],
      "env": {
        "CEPH_MCP_NAMESPACE": "rook-ceph",
        "CEPH_MCP_TOOLBOX_LABEL": "app=rook-ceph-tools"
      }
    }
  }
}

From a local checkout:

{
  "mcpServers": {
    "ceph-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/ceph-mcp", "ceph-mcp"],
      "env": {
        "CEPH_MCP_NAMESPACE": "rook-ceph",
        "CEPH_MCP_TOOLBOX_LABEL": "app=rook-ceph-tools"
      }
    }
  }
}

See examples/claude_desktop_config.json for a ready-to-copy version.

Development

Project layout:

src/ceph_mcp/
├── server.py       # MCP server entrypoint + tool registration
├── commands.py     # fixed allowlist: tool name -> ceph/radosgw-admin command
├── config.py       # env var -> Config resolution
├── k8s_exec.py     # finds the toolbox pod, execs commands via the k8s API
└── parsers/        # raw ceph JSON/text -> structured tool output
tests/
├── fixtures/       # captured real ceph/radosgw-admin output, used by parser tests
└── test_*.py

Run the test suite:

uv run pytest

Lint:

uv run ruff check .

Debugging

Since MCP servers communicate over stdio, use the MCP Inspector to interact with the server directly:

npx @modelcontextprotocol/inspector uv --directory /absolute/path/to/ceph-mcp run ceph-mcp

Publishing to PyPI

uv sync
uv build
uv publish

Requires PyPI credentials via UV_PUBLISH_TOKEN (or --token).

License

MIT — see LICENSE.

Author

Serkan (@sserkanml)

from github.com/sserkanml/ceph-mcp

Установка Ceph

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/sserkanml/ceph-mcp

FAQ

Ceph MCP бесплатный?

Да, Ceph MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Ceph?

Нет, Ceph работает без API-ключей и переменных окружения.

Ceph — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить Ceph в Claude Desktop, Claude Code или Cursor?

Открой Ceph на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Ceph with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development