About
Che — Model Context Protocol server
README
MCP server for Eclipse Che — exposes DevWorkspace operations and tmux-based coding agent session control as MCP tools. Any MCP-compatible AI agent can create, start, stop, and inspect workspaces, launch coding agents inside them, monitor output, and relay input.
Agent Quick Start
On-cluster (agent running as a DevWorkspace)
The MCP server is deployed as a service in the user namespace. Connect to it directly:
# Claude Code
claude mcp add --transport http che http://che-mcp-server:8080/mcp
# ZeroClaw — add to zeroclaw.toml
[[mcp.servers]]
name = "che"
transport = "http"
url = "http://che-mcp-server:8080/mcp"
Local (connecting to a remote cluster)
Connect to the MCP server from your local machine using the stdio bridge. It manages oc port-forward internally — auto-starts, monitors, and restarts on failure. Requires oc login to the target cluster.
# Via npx (no install needed)
claude mcp add che-mcp -- npx --package che-mcp-server che-mcp-bridge
# Or install globally
npm install -g che-mcp-server
claude mcp add che-mcp -- che-mcp-bridge
Configuration via environment variables:
| Variable | Description | Default |
|---|---|---|
MCP_NAMESPACE |
Kubernetes namespace | Current oc project |
MCP_SERVICE |
Service name | che-mcp-server |
MCP_PORT |
Service port | 8080 |
Local (from git repo)
git clone [email protected]:che-incubator/che-mcp-server.git
cd che-mcp-server
npm ci && npm run build
# Claude Code
claude mcp add che-mcp-server -- node dist/index.js
# Or run directly
node dist/index.js
From npm (once published)
# One-off
npx che-mcp-server
# Global install
npm install -g che-mcp-server
# Claude Code
claude mcp add che-mcp-server -- npx che-mcp-server
Prerequisites
- Runtime: Node.js 18+
- Kubernetes: User's kubeconfig injected (standard in Eclipse Che)
- Target workspaces: tmux 3.1+ installed in the workspace image (most Ubuntu 22.04+ and UBI 9+ images include tmux 3.2+)
Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
CHE_MCP_TRANSPORT |
Transport mode: stdio or http |
stdio |
CHE_MCP_PORT |
Port for HTTP transport | 8080 |
CHE_MCP_NAMESPACE |
Override namespace detection | (from kubeconfig) |
CLI Flags
CLI flags override environment variables:
--transport <stdio|http>— overrideCHE_MCP_TRANSPORT--port <number>— overrideCHE_MCP_PORT
Namespace Detection
The server resolves the namespace in this order:
- Kubeconfig context namespace
CHE_MCP_NAMESPACEenvironment variable- ServiceAccount namespace file (
/var/run/secrets/kubernetes.io/serviceaccount/namespace) oc whoami+ Eclipse Che/DevSpaces suffix detection (-che,-devspaces)
Tool Reference
Workspace Lifecycle
| Tool | Description | Parameters |
|---|---|---|
list_workspaces |
List all DevWorkspaces in the user namespace | limit, offset (optional) |
create_workspace |
Create a new DevWorkspace and start it | name (optional); repo_url (optional — git repo to clone); branch (optional — requires repo_url); tools (optional — array of tools to pre-install: claude-code, opencode, goose, kilocode, gemini-cli, tmux, python3) |
start_workspace |
Start a stopped DevWorkspace | workspace (required) |
stop_workspace |
Stop a running DevWorkspace (preserves data) | workspace (required) |
delete_workspace |
Delete a DevWorkspace permanently | workspace (required) |
Workspace Status
| Tool | Description | Parameters |
|---|---|---|
get_workspace_status |
Get phase, conditions, URL, and timestamps | workspace (required) |
get_workspace_pod |
Get pod name, phase, and per-container status | workspace (required) |
Agent Sessions
| Tool | Description | Parameters |
|---|---|---|
launch_coding_agent |
Launch a coding agent, starting the workspace if needed | workspace, task (required); agent_type (optional — claude-code, opencode, gemini-cli); system_prompt_file (optional — path inside workspace, claude-code only) |
get_agent_status |
Get agent phase (running/finished/lost/idle) and last output | workspace (required) |
list_all_agents |
List all workspaces with active or past agent sessions | limit, offset (optional) |
send_message_to_agent |
Send a message to a running agent via terminal input | workspace, message (required) |
get_agent_output |
Read recent terminal output from an agent session | workspace (required); lines (optional) |
stop_agent |
Stop an agent session and return completion summary | workspace (required) |
inject_tool |
Inject an AI tool into a running workspace (requires restart) | workspace, tool (required) |
Terminal Sessions (full mode only)
These tools are available when the server runs with --transport http (full mode). They provide direct tmux access for advanced use cases.
| Tool | Description | Parameters |
|---|---|---|
start_terminal_session |
Start a bash tmux session in a workspace | workspace (required); session_name, container (optional) |
read_terminal_output |
Capture recent output from a tmux session | workspace (required); session_name, lines, container (optional) |
send_terminal_input |
Send text to a tmux session | workspace, text (required); session_name, enter, container (optional) |
get_terminal_state |
Check if tmux session and process are alive | workspace (required); session_name, container (optional) |
stop_terminal_session |
Kill a tmux session | workspace (required); session_name, container (optional) |
exec_in_workspace |
Run a shell command and return output | workspace, command (required); timeout_seconds, session_name, container (optional) |
Messaging
| Tool | Description | Parameters |
|---|---|---|
send_message |
Send a message to another agent's inbox | from, to, body (required); thread_id (optional) |
receive_messages |
Read and consume messages from an inbox | session_id (required); thread_id (optional) |
Usage Example
1. list_workspaces → find available workspaces
2. create_workspace { name: "test-ws" } → create a new workspace
3. get_workspace_status { workspace: "test-ws" } → wait until phase is Running
4. launch_coding_agent { workspace: "test-ws", task: "Add tests" }
5. get_agent_output { workspace: "test-ws" } → monitor progress
6. send_message_to_agent { workspace: "test-ws", message: "Yes" } → respond to prompts
7. get_agent_status { workspace: "test-ws" } → check if agent finished
8. stop_agent { workspace: "test-ws" } → cleanup
9. stop_workspace { workspace: "test-ws" } → stop when done
Tip:
launch_coding_agent(step 4) handles waiting for the workspace to start and launches the agent in one call — no need to pollget_workspace_statusseparately.
Container Deployment
Build and push
make build && make image
make image-push
# Custom image and tag
IMAGE=myrepo/myimage TAG=v1 make image image-push
Deploy to Kubernetes
kubectl apply -k deploy/ -n <namespace>
The server starts in HTTP mode on port 8080 with a health endpoint at /healthz.
How It Works
The server is a stateless bridge between MCP clients and the Kubernetes API.
Agent Sessions
Coding agent sessions use tmux inside target workspace pods. Each tool call creates a one-shot exec connection, runs a single tmux command, and closes. The tmux session persists independently.
- Start:
tmux new-session -d -s agent 'command' - Read:
tmux capture-pane -t agent -p - Send:
tmux send-keys -t agent -l 'text'(literal mode prevents injection) - Check:
tmux list-panes -t agent -F '#{pane_pid} #{pane_dead} #{pane_dead_status}' - Stop:
tmux kill-session -t agent
Sessions use remain-on-exit on and 5000-line scrollback.
Security
- The server only accesses the user's namespace from their kubeconfig context
- No cross-namespace operations
- The user's OAuth token limits operations to what they can do in the Che Dashboard
- All exec operations target the first non-
che-gatewaycontainer (overridable withcontainerparameter)
License
Eclipse Public License - v 2.0
Installing Che
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/eclipse-che/che-mcp-serverFAQ
Is Che MCP free?
Yes, Che MCP is free — one-click install via Unyly at no cost.
Does Che need an API key?
No, Che runs without API keys or environment variables.
Is Che hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Che in Claude Desktop, Claude Code or Cursor?
Open Che on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Che with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
