DevWorkspace操作工具

Eclipse Che的MCP服务器,提供DevWorkspace操作和基于tmux的编码代理会话控制功能,支持AI代理创建、启动、停止和检查工作区。

  • by akurinnoy
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 akurinnoy/che-mcp-server

使用说明

che-mcp服务器

Eclipse Che的MCP服务器——将DevWorkspace操作和基于tmux的编码代理会话控制作为MCP工具公开。任何与MCP兼容的AI代理都可以创建、启动、停止和检查工作区,在其中启动编码代理,监视输出和中继输入。

代理快速入门

在集群上(代理作为DevWorkspace运行)

MCP服务器作为服务部署在用户命名空间中。直接连接到它:

# 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"

本地(来自git repo)

git clone git@github.com: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

来自npm(一旦发布)

# 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

先决条件

  • 运行时间: Node.js 18+
  • 库贝内特斯: 用户的kubeconfig被注入(Eclipse Che中的标准配置)
  • 目标工作区: tmux 3.1+安装在工作区映像中(大多数Ubuntu 22.04+和UBI 9+映像都包含tmux 3.2+)

配置

环境变量

变量 描述 默认值
CHE_MCP_TRANSPORT 运输方式: stdio 或 http stdio
CHE_MCP_PORT HTTP传输端口 8080
CHE_MCP_NAMESPACE 覆盖命名空间检测 (来自kubeconfig)

CLI标志

CLI标志覆盖环境变量:

  • --transport <stdio|http> 以(权力)否决 CHE_MCP_TRANSPORT
  • --port <number> 以(权力)否决 CHE_MCP_PORT

命名空间检测

服务器按以下顺序解析命名空间:

  1. Kubeconfig上下文命名空间
  2. CHE_MCP_NAMESPACE 环境变量
  3. ServiceAccount命名空间文件(/var/run/secrets/kubernetes.io/serviceaccount/namespace)
  4. oc whoami +Eclipse Che/DevSpaces后缀检测(-che, -devspaces)

工具参考

工作空间生命周期

工具 说明 参数
list_workspaces 列出用户命名空间中的所有DevWorkspaces 无
create_workspace 从默认的空模板创建一个新的DevWorkspace并启动它 name (可选--如果省略,则自动生成)
start_workspace 启动已停止的DevWorkspace workspace (必填)
stop_workspace 停止正在运行的DevWorkspace workspace (必填)
delete_workspace 删除开发工作区(无论状态如何) workspace (必填)

工作区状态

工具 说明 参数
get_workspace_status 获取详细状态(阶段、条件、URL、时间戳) workspace (必填)
get_workspace_pod 获取pod详细信息(pod名称、阶段、容器状态) workspace (必填)

代理会话

工具 说明 参数
launch_coding_agent 在工作区中启动编码代理,必要时启动工作区 workspace, task (必填); agent_type (可选-- claude-code, opencode, gemini-cli;默认值: claude-code); system_prompt_file (可选--目标工作区内附加到系统提示文件的路径,通过 --append-system-prompt-file;文件必须已经存在于工作区文件系统中;仅适用于克劳德代码)
start_agent_session 在工作区中使用编码代理启动tmux会话 workspace, command (必填); session_name, container (可选)
read_agent_output 从tmux会话中捕获最近的终端输出 workspace (必填); session_name, lines, container (可选)
send_agent_input 向tmux会话发送文本 workspace, text (必填); session_name, enter, container (可选)
get_agent_state 检查tmux会话和进程是否处于活动状态 workspace (必填); session_name, container (可选)
stop_agent_session 终止tmux会话 workspace (必填); session_name, container (可选)

使用示例

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. start_agent_session { workspace: "test-ws", command: "claude -p 'Add tests'" }
5. read_agent_output { workspace: "test-ws" }     → monitor progress
6. send_agent_input { workspace: "test-ws", text: "Yes" }  → respond to prompts
7. get_agent_state { workspace: "test-ws" }        → check if agent finished
8. stop_agent_session { workspace: "test-ws" }     → cleanup
9. stop_workspace { workspace: "test-ws" }         → stop when done

提示: 步骤3-4可以替换为 launch_coding_agent { workspace: "test-ws", task: "Add tests" } --它等待工作区启动,并在一次调用中启动代理。

容器部署

构建并推动

make build && make image
make image-push

# Custom image and tag
IMAGE=myrepo/myimage TAG=v1 make image image-push

部署到Kubernetes

kubectl apply -k deploy/ -n <namespace>

服务器在端口8080上以HTTP模式启动,健康端点位于 /healthz.

运作原理

服务器是MCP客户端和Kubernetes API之间的无状态桥梁。

代理会话

编码代理会话在目标工作区Pod中使用tmux。每次工具调用都会创建一个一次性exec连接,运行一个tmux命令,然后关闭。tmux会话独立持续。

  • 开始: tmux new-session -d -s agent 'command'
  • 阅读: tmux capture-pane -t agent -p
  • 发送: tmux send-keys -t agent -l 'text' (文字模式防止注射)
  • 检查: tmux list-panes -t agent -F '#{pane_pid} #{pane_dead} #{pane_dead_status}'
  • 停止: tmux kill-session -t agent

会话使用 remain-on-exit on 5000行滚动。

安全

  • 服务器仅从用户的kubeconfig上下文访问其命名空间
  • 无跨命名空间操作
  • 用户的OAuth令牌将操作限制在Che Dashboard中可以执行的操作范围内
  • 所有exec操作都针对第一个非-che-gateway 容器(可覆盖 container 参数)

许可证

阿帕奇-2.0