About mcp-ephemeral-k8s
mcp-ephemeral-k8s is a Python library and MCP server for creating temporary MCP servers on Kubernetes. It supports Node.js and Python runtimes, with SSE connections and local or in-cluster Kubernetes configuration.
Key features
- 01Create temporary MCP servers on Kubernetes
- 02Support Node.js via npx and Python via uvx
- 03Connect over SSE
- 04Use local kubeconfig or in-cluster configuration
- 05Run as an MCP server
Use cases
- 01Launch short-lived MCP server instances in Kubernetes
- 02Expose Node.js or Python MCP runtimes through SSE
- 03Run the service with local or in-cluster Kubernetes access
MCP support
It creates temporary MCP servers on Kubernetes and exposes them to MCP clients over SSE. It can also run as an MCP server.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEmcp-ephemeral-k8s
A Python library for spawning ephemeral Model Context Protocol (MCP) servers on Kubernetes using Server-Sent Events (SSE).
- Github: https://github.com/BobMerkus/mcp-ephemeral-k8s/
- Documentation: https://BobMerkus.github.io/mcp-ephemeral-k8s/docs/
Features
- Supports multiple runtimes:
- Node.js (via
npx) - Python (via
uvx)
- Node.js (via
- Works with mcp-proxy for
uvxornpxruntimes - Supports both local kubeconfig and in-cluster configuration
- Can be run as MCP server
Usage
Running the MCP Server
uvx mcp-ephemeral-k8s
Using the Library
import asyncio
from mcp_ephemeral_k8s import KubernetesSessionManager, presets
async def main():
async with KubernetesSessionManager() as session_manager:
mcp_server = await session_manager.create_mcp_server(
presets.K8S_MCP_SERVER, wait_for_ready=True, expose_port=True
)
print(mcp_server.sse_url)
if __name__ == "__main__":
asyncio.run(main())
Job 'mcp-ephemeral-k8s-proxy-1762291156-x17zuayy' in unknown state, waiting...
http://mcp-ephemeral-k8s-proxy-1762291156-x17zuayy.default.svc.cluster.local:8080/sse
Installation
Prerequisites
Option 1: Using uvx (Recommended)
uvx mcp-ephemeral-k8s
To connect to the MCP server, use the following config:
{
"mcp-ephemeral-k8s": {
"url": "http://localhost:8000/sse",
"transport": "sse"
}
}
Option 2: As a Python Package
pip install mcp-ephemeral-k8s
mcp-ephemeral-k8s
Option 3: Using Helm Chart
To install the Helm chart, run:
helm repo add mcp-ephemeral-k8s https://BobMerkus.github.io/mcp-ephemeral-k8s/
helm repo update
helm install mcp-ephemeral-k8s mcp-ephemeral-k8s/mcp-ephemeral-k8s
To upgrade the Helm chart, run:
helm upgrade -i mcp-ephemeral-k8s mcp-ephemeral-k8s/mcp-ephemeral-k8s
To install a specific version, run:
helm install mcp-ephemeral-k8s mcp-ephemeral-k8s/mcp-ephemeral-k8s --version <replace-with-version>
To uninstall the Helm chart, run:
helm uninstall mcp-ephemeral-k8s
Option 4: From Source
-
Clone the repository
git clone https://github.com/BobMerkus/mcp-ephemeral-k8s.git cd mcp-ephemeral-k8s -
Set up development environment
make install -
Run pre-commit hooks
make check -
Run tests
make test -
Build Docker images
make docker-build-local make docker-build-local-proxy -
Load images to cluster
kind load docker-image ghcr.io/bobmerkus/mcp-ephemeral-k8s:latest kind load docker-image ghcr.io/bobmerkus/mcp-ephemeral-k8s-proxy:latest -
Install Helm chart
helm upgrade -i mcp-ephemeral-k8s charts/mcp-ephemeral-k8s --set image.tag=latest -
Port forward the MCP server
kubectl port-forward svc/mcp-ephemeral-k8s 8000:8000 -
Visit the FastAPI server
npx @modelcontextprotocol/inspector --sse http://localhost:8000/sse
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.