Rancher MCP Server
# Rancher MCP Server
A Model Context Protocol (MCP) server that exposes the Rancher Manager v2.x
API to LLM clients. Built on the official `mcp` Python SDK (FastMCP) with
async HTTP via `httpx` and settings management via `pydantic-settings`.
## Features
- Bearer-token authentication using a Rancher API key (`token-xxx:yyy...`).
- Cluster, project, and node discovery against the `/v3` management API.
- Kubernetes resource queries (`namespaces`, `pods`, `deployments`, pod logs)
through Rancher's `/k8s/clusters/{cluster_id}` proxy.
- Deployment scaling via strategic-merge PATCH on the `/scale` subresource.
- Catalog app listing and on-demand kubeconfig generation.
## Requirements
- Python 3.10+
- A Rancher Manager instance reachable over HTTPS.
- An API token generated from the Rancher UI (Account -> API & Keys). The
token must be passed in the full `token-xxx:yyy...` form.
## Installation
```bash
pip install -e ".[dev]"
```
## Configuration
Configure the server through environment variables (prefix `RANCHER_`) or a
`.env` file in the working directory:
| Variable | Description | Default |
| ---------------------- | ----------------------------------------------- | --------------------- |
| `RANCHER_BASE_URL` | Rancher Manager base URL (no trailing slash). | `https://localhost` |
| `RANCHER_API_TOKEN` | API token in `token-xxx:yyy...` format. | *(required)* |
| `RANCHER_VERIFY_SSL` | Verify TLS certificates. | `true` |
| `RANCHER_TIMEOUT` | HTTP timeout in seconds. | `60` |
## Running
```bash
rancher-mcp
```
The server speaks MCP over stdio and can be wired into any MCP-capable
client (Claude Desktop, Cursor, custom agents, and so on).
## Tools
| Tool | Description |
| --------------------- | ------------------------------------------------------ |
| `list_clusters` | List all managed clusters. |
| `get_cluster` | Fetch one cluster by ID. |
| `list_projects` | List projects, optionally scoped to a cluster. |
| `list_nodes` | List nodes in a cluster. |
| `list_namespaces` | List Kubernetes namespaces via the Rancher proxy. |
| `list_pods` | List pods (optionally namespace-scoped). |
| `list_deployments` | List Deployments (optionally namespace-scoped). |
| `get_pod_logs` | Tail pod logs. |
| `scale_deployment` | Scale a Deployment via the `/scale` subresource. |
| `list_catalog_apps` | List catalog apps installed in a cluster. |
| `create_kubeconfig` | Generate a kubeconfig for a cluster. |
## Development
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest -x --tb=short
ruff check src tests
```
## License
MIT License - see LICENSE file for details.
TDQS
Scored across 11 tools
Each tool targets a distinct resource or action (clusters, kubeconfig, pods, deployments, namespaces, nodes, projects, catalog apps). There is no overlap; even related tools like 'list_clusters' and 'get_cluster' are clearly different operations.
All tools follow a consistent verb_noun pattern (create_, get_, list_, scale_). The naming style is uniform and predictable, making it easy for an agent to infer the function of each tool.
With 11 tools, the server is well-scoped for a Rancher management interface. It covers a variety of essential operations without being bloated or too sparse.
The tool set is heavily read-oriented (list, get) with only two write operations (create_kubeconfig, scale_deployment). Missing critical CRUD operations for clusters, deployments, and other resources, which limits agent capabilities for full lifecycle management.