Skip to main content
Version: Next 🚧

Epinio MCP Server Reference

The Epinio MCP server is a Model Context Protocol server that exposes the Epinio API as tools for AI agents such as Claude and other MCP-compatible clients. It translates MCP tool calls into Epinio REST API requests, so an agent can deploy and manage applications on your cluster through conversation.

Beta

The MCP server is in beta. Tool names and options may still change, and it is not yet recommended for production use.

Requires Epinio 1.14.1 or later

The server depends on the builder-image, catalog-service, and app-chart CRUD API and the source-retrieval endpoint, all introduced in Epinio 1.14.1. It will not work against earlier releases.

To stand it up on your cluster, see Install the MCP server.

How it connects​

The server sits between an AI agent and an Epinio instance, speaking MCP to the agent and the Epinio REST API to the cluster:

AI Agent (Claude, etc.)
| MCP protocol (Streamable HTTP, served at the server root)
Epinio MCP Server
| REST API (Basic Auth or OIDC, TLS)
Epinio API Server
| Kubernetes API
Kubernetes Cluster

Authentication is per request: the agent passes an Authorization header (Bearer <token> or Basic <base64(user:pass)>) that the server forwards to Epinio. When no header is present, the server falls back to the credentials it was configured with (default admin / password).

By default every tool wires only to the Epinio REST API, as the calling user. An optional elevated tier that reaches directly into Kubernetes is off unless explicitly enabled.

Core tools​

These are always available and act purely through the Epinio API.

Server and namespaces​

ToolDescription
epinio_infoGet server version, Kubernetes version, and platform info.
list_namespacesList all namespaces with their apps and configurations.
create_namespaceCreate a new namespace.
delete_namespaceDelete a namespace and all its resources.

Applications​

ToolDescription
list_appsList applications, optionally filtered by namespace.
show_appGet detailed app info (status, routes, instances, config).
create_appCreate an application without deploying it.
delete_appDelete an application.
restart_appRestart an application.
scale_appScale an application to a desired instance count.
update_appUpdate app configuration (instances, routes, env, configurations, appchart, settings).
push_appFull push workflow: create, upload, stage, and deploy from source files.
upload_and_stageUpload source and build without deploying, so logs can be inspected first.
deploy_stagedDeploy a previously staged build.
app_logsFetch runtime or staging/build logs from an application.
get_app_manifestInspect full app configuration (image, routes, env, settings).
clone_appClone an existing app to a new name using its built image.
get_app_sourceRetrieve a deployed app's staging source (raw tarball or extracted files).
list_app_filesList file paths and sizes in a deployed app's source (no file contents).
get_connection_infoReturn a ready-to-dial WebSocket URL for streaming an app's logs directly.

Environment variables​

ToolDescription
list_envList environment variables for an app.
set_envSet environment variables on an app.
unset_envRemove an environment variable from an app.

Configurations​

ToolDescription
list_configurationsList configurations in a namespace.
create_configurationCreate a key-value configuration.
delete_configurationDelete a configuration.
bind_configurationBind configurations to an app.
unbind_configurationUnbind a configuration from an app.

Services and catalog​

ToolDescription
list_servicesList service instances in a namespace.
create_serviceCreate a service instance from a catalog entry.
delete_serviceDelete a service instance.
bind_serviceBind a service to an app.
unbind_serviceUnbind a service from an app.
list_catalog_servicesList catalog entries with their settings schemas.
show_catalog_serviceFetch a single catalog entry's details and settings schema.
create_catalog_serviceRegister a new catalog entry (service template).
update_catalog_serviceUpdate a catalog entry.
delete_catalog_serviceDelete a catalog entry.

App charts​

ToolDescription
list_appchartsList AppCharts registered on the cluster (valid values for appchart), with settings schemas.
show_appchartFetch a single AppChart's description and settings schema.
create_appchartRegister a new AppChart.
update_appchartUpdate an AppChart.
delete_appchartDelete an AppChart.

Builder images​

The BuilderImage registry is the cluster's list of builder images an app can stage with — the valid values for push_app's builder_image parameter.

ToolDescription
list_builder_imagesList registered builder images (the one marked default is used when none is given).
show_builder_imageFetch a single builder image.
create_builder_imageRegister a new builder image.
update_builder_imageUpdate a builder image.
delete_builder_imageDelete a builder image.
get_build_guidanceGuidance on deploying, appchart selection, builder selection, and build troubleshooting.

Elevated tier​

A small set of capabilities reach directly into Kubernetes rather than through the Epinio API — currently just workload adoption. They are off by default and enabled with the EPINIO_MCP_ELEVATED environment variable, which also requires the standard-elevated app chart's RBAC. See Install the MCP server for how to turn it on.

Adopting existing workloads​

ToolDescription
adopt_appBring an existing kubectl-managed Deployment into Epinio's view: label it, create an App CRD, and make it visible to epinio app list/show/logs.
reconcile_appSync an adopted app's CRD to observed reality (image URL, routes from Ingresses). Supports dry_run.
release_appRemove Epinio labels and the App CRD for an adopted app. The underlying Deployment keeps running.

When adoption is enabled, the core destructive tools (delete_app, restart_app, scale_app, update_app, and configuration bind/unbind) refuse to act on adopted apps — use kubectl for their lifecycle, or release_app to convert back to a plain Kubernetes workload.

Capabilities​

ToolDescription
check_capabilitiesReport readiness of optional capabilities and what is missing.
enable_capabilityFulfill a capability's satisfiable requirements.
CapabilityPurposeRequires
self_adoptionCompletes the MCP's own adoption when installed via kubectl applyThe server's own App CRD exists, is annotated epinio.io/adopted=true, and matches the running Deployment.
log_streamingReports WebSocket reachability for get_connection_info (diagnostic)Ingress that preserves the Upgrade header and a reachable Epinio /authtoken endpoint.

Health probes​

Besides the MCP endpoints, the server exposes two plain-HTTP probes:

PathTypeBehavior
/healthzLivenessReturns 200 whenever the process is up.
/readyzReadinessCalls Epinio /info; returns 200 on success, 503 on upstream failure.

See also​