mcpField
I
IBM Code Engine MCP Server

IBM Code Engine MCP Server

本地服务
github.com/markusvankempen云与基础设施04 周前更新

关于 IBM Code Engine MCP Server

IBM Code Engine MCP Server 让开发者通过 MCP 客户端管理 IBM Code Engine 容器部署流程。它涵盖本地构建、镜像推送和云端资源操作,并提供活动仪表板与管理界面。

主要功能

  1. 01Docker 或 Podman 容器构建
  2. 02推送镜像至 IBM Container Registry
  3. 03管理 Code Engine 资源
  4. 04一键执行构建、推送和部署
  5. 05查看工具调用与部署活动
  6. 06通过 Web 管理界面配置

适用场景

  1. 01从本地项目构建并部署容器
  2. 02管理 Code Engine 应用、作业和密钥
  3. 03查看部署状态及工具调用记录
  4. 04为多种 MCP 客户端共享服务器

MCP 相关

服务器通过 MCP 向客户端提供容器构建、IBM Container Registry 和 Code Engine 操作工具。支持 stdio 或 HTTP 运行,并可由多个客户端共用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"markusvankempen-code-engine": {
"command": "npx",
"args": [
"-y",
"code-engine-mcp-server"
],
"env": {
"IBMCLOUD_API_KEY": "<IBMCLOUD_API_KEY>",
"IBMCLOUD_REGION": "<IBMCLOUD_REGION>",
"CONTAINER_RUNTIME": "<CONTAINER_RUNTIME>"
}
}
}
}
启动命令npx -y code-engine-mcp-server
需要配置的环境变量
IBMCLOUD_API_KEY密钥IBM Cloud API key used to authenticate and call Code Engine APIs
IBMCLOUD_REGIONDefault IBM Cloud region (for example: us-south)
CONTAINER_RUNTIMEOptional container runtime override: docker or podman

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcode-engine-mcp-server1.4.2

工具

65

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

IBM Code Engine MCP Server

Code Engine MCP Server — IBM Cloud 火箭和容器徽标

用于 IBM Code Engine 的 MCP 服务——使用自然语言,从 Cursor、Copilot、Claude 和 Cline 构建、推送和部署容器。

当前版本:v1.7.8 ——28 个工具,而非 112 个(每种资源对应一个工具,带有 action 字段,功能相同,旧名称仍可用);供 VS Code 扩展使用的共享本地 HTTP 服务;带有 Remote client 标签页的Web 管理界面(测试工具、日志记录、用户和 API 密钥、事件);VS Code 内的 MCP Remote Config;以及用于检查指定服务是否确实为 code-engine MCP 服务的功能。请参阅 CHANGELOG.md 和工具参考。

搜索词: code-engine-mcp · ibm-code-engine · ibm-cloud · ibm-container-registry · mcp-server · model-context-protocol · cursor · github-copilot · claude-desktop · cline · docker · podman · serverless · container-deployment · typescript · npx · ai-agents · devops · cloud-native · watsonx-orchestrate


作者: Markus van Kempen | [email protected] · markusvankempen.github.io 没有小到不值得修复的 Bug,也没有怪到无法理解的语法。


MCP Release IBM Cloud Node.js License VS Code Marketplace Open VSX npm

工作原理

flowchart TD
    A([AI Assistant\nCopilot / Claude / Cline / Bob]) -->|MCP JSON-RPC| B[Code Engine MCP Server]

    B --> C{Tool Category}

    C -->|Container Tools| D[Docker / Podman]
    C -->|Registry Tools| E[IBM Container Registry\nus.icr.io]
    C -->|Code Engine Tools| F[IBM Code Engine\nREST API]
    C -->|Procedures| G[Multi-step Workflows]

    D -->|build / push / validate| E
    E -->|image reference| F

    G -->|proc_build_push_deploy| D
    G -->|proc_apply_manifest| F

    F --> H[(Projects\nApps\nBuilds\nJobs\nSecrets\nDomains)]

    H -->|ready| I([Live App\nhttps://app.region.codeengine.appdomain.cloud])

    style A fill:#1261FE,color:#fff
    style B fill:#0f3460,color:#fff
    style G fill:#7b2d8b,color:#fff
    style I fill:#198038,color:#fff

✨ 功能一览

  • 28 个工具,每种资源对应一个。 ce_app、ce_job、ce_secret……每个工具都接受一个 action(list、get、create、delete……)。此前的所有功能都仍然可用;请参阅工具参考。
  • 适用于 Docker 或 Podman 的容器工作流工具(local_container、dockerfile)
  • IBM Container Registry(icr)以及完整的 Code Engine 功能:项目、应用、作业、构建、密钥、配置映射、域名、绑定、函数、舰队
  • 多步骤流程:一次调用即可完成构建、推送和部署(proc_build_push_deploy)、自定义域名、声明式清单
  • 一个服务,多个客户端。 可通过 stdio 运行,也可作为 HTTP 服务运行,供 IDE、助手、Web UI 和 VS Code 扩展共用
  • Web 管理界面(/admin):概览、活动、用户、API 密钥、运行时设置,以及可测试工具和配置服务(日志记录、用户和密钥、事件)的 Remote client 标签页
  • 支持 MCP 的 GitHub Copilot、Cursor、Cline、Bob、Windsurf、Antigravity、Claude Desktop 和 vscode-extension/ 中的 VS Code 扩展配置(包括 MCP Remote Config)
  • MCP 活动仪表板——实时显示工具调用时间线、会话分组、部署结果摘要,以及 Deployments 清单标签页
  • 实时活动日志记录——为每次 MCP 工具调用提供可选的 JSONL 事件流(MCP_ACTIVITY_* 环境变量)

🚀 快速开始

# 1) Install dependencies
npm install

# 2) Build the server
npm run build

# 3) Run once to verify
node build/index.js

然后使用下方“配置”部分中的示例之一配置 MCP 客户端。

🤖 Agentic 体验(无需 Docker/Code Engine 术语)

这个 MCP 服务真正强大的地方在于,你无需了解 Docker 或 Code Engine 命令。你只需说明目标,大模型就会自主发现环境、运行工作流并修复问题。

以下是一次真实会话中的交互示例:

用户:

“我的应用在 developer-splash 文件夹中。请将它部署到我的 Code Engine 项目。”

助手的自主思考过程:

  1. 发现:“让我检查一下有哪些项目和命名空间……找到了项目 my-project 和命名空间 my-namespace。”
  2. 前提条件:“这个项目中还没有拉取密钥。我会从 .env 文件中获取 API 密钥,并创建密钥 icr-pull-secret。”
  3. 执行:“现在我将运行完整工作流:构建 → 推送 → 部署 → 等待。”
  4. 验证:“应用已部署,但卡在‘部署中’状态。让我检查日志……容器正在运行,但就绪探针检查失败。”
  5. 自我修正:“啊,Dockerfile 中的 sed 模式与 nginx alpine 的默认端口 80 配置格式不匹配。我会使用适合正则表达式的 sed 修复 Dockerfile,然后重新构建。”
  6. 完成:“应用已上线!🎉 状态:就绪。”

助手对用户的回复:

“你的应用已部署并上线,访问地址为:https://developer-splash.<subdomain>.<region>.codeengine.appdomain.cloud。我修复了 Dockerfile 中一个小的端口配置问题,现在应用已成功运行!”

使用此 MCP 服务,AI 会作为专家 DevOps 工程师与你并肩协作。

📊 MCP 活动仪表板(v1.4.0)

实时查看 AI 助手正在做什么——工具调用、步骤间的空闲间隔、部署结果和实时应用 URL。

flowchart LR
    A[MCP tool call] -->|MCP_ACTIVITY_ENABLED| B[events.jsonl]
    B --> C{Dashboard}
    C -->|VS Code extension| D[Activity tab]
    C -->|Browser| E[localhost:8767]
    D --> F[Deployments tab\ninventory + actions]
活动日志记录(默认开启)

从 v1.6.0 起,服务会将每个工具的启动和完成记录到 ~/.code-engine-mcp/activity/events.jsonl——包括输入摘要、工作流子步骤(proc_build_push_deploy)、结果摘要,以及可选的 HTTP 冒烟测试标签。API 密钥、密码、TLS 密钥、环境变量值和密钥负载都会被隐藏。文件达到 5 MB 后会轮换。

MCP 客户端配置中的可选环境变量:

"MCP_ACTIVITY_ENABLED": "false",
"MCP_ACTIVITY_EVENTS_PATH": "/custom/path/events.jsonl",
"MCP_ACTIVITY_SESSION_ID": "session:my-chat-001",
"MCP_ACTIVITY_CHAT_LABEL": "Deploy Star Wars splash"

在 VS Code 扩展中,可通过 codeEngineMcp.activityEnabled 关闭日志记录。更改环境变量后,请重启 MCP 服务。

所有 MCP_ACTIVITY_* 变量请参阅 .env.example。

打开仪表板
方式操作
VS Code 扩展命令面板 → IBM Code Engine MCP: 打开 MCP 活动仪表板
浏览器(开发仓库)npm run dashboard → http://localhost:8767/
实时刷新默认在浏览器中开启;可在面板内切换,或设置 codeEngineMcp.activityLiveRefresh(扩展)

活动选项卡会显示会话时间线,包括工具耗时、空闲间隔和任务结果横幅(状态、镜像、实时 URL)。部署选项卡会列出 Code Engine 中的项目和应用,并支持通过 MCP 工具获取详情、重新部署和删除。

聊天提示词示例:

“我在 examples/starwars-splash 中有一个星球大战启动页。请仅使用 MCP 工具将它部署到 Code Engine——为 linux/amd64 构建、推送到我的 ICR 命名空间,并部署到我的 Code Engine 项目。准备就绪后,请告诉我实时 URL。”

助手运行期间打开活动仪表板,即可逐步查看 proc_build_push_deploy 的进度。

部署你的第一个应用

本节将演示如何完全通过 MCP 服务部署随附的 星球大战启动页示例——一个静态 nginx 容器。

**Apple Silicon 用户:**请始终使用 --platform linux/amd64 构建。Code Engine 仅运行 amd64。

步骤 1 — 构建并推送镜像
cd examples/starwars-splash
podman build --platform linux/amd64 -t us.icr.io/<your-namespace>/starwars-splash:v1.0.0 .
podman push us.icr.io/<your-namespace>/starwars-splash:v1.0.0

或者向你的助手提出请求:

Build examples/starwars-splash as us.icr.io/my-namespace/starwars-splash:v1.0.0 for linux/amd64 and push it

MCP 响应 — build_container_image:

{
  "success": true,
  "command": "podman build --platform linux/amd64 -t us.icr.io/my-namespace/starwars-splash:v1.0.0 ...",
  "build_output": "STEP 1/5: FROM nginx:alpine\nSTEP 2/5: COPY index.html /usr/share/nginx/html/index.html\nSTEP 3/5: RUN sed -i 's/listen  80;/listen 8080;/g' /etc/nginx/conf.d/default.conf\nSTEP 4/5: EXPOSE 8080\nSTEP 5/5: CMD [\"nginx\", \"-g\", \"daemon off;\"]\nSuccessfully tagged us.icr.io/my-namespace/starwars-splash:v1.0.0"
}

注意: 容器运行时(Podman/Docker)会将构建进度写入 stderr。build_output 字段会合并 stdout 和 stderr,让你看到完整的构建日志。

MCP 响应 — push_container_image:

{
  "success": true,
  "command": "podman push us.icr.io/my-namespace/starwars-splash:v1.0.0",
  "output": "Getting image source signatures\nCopying blobs...\nWriting manifest to image destination"
}
步骤 2 — 创建镜像仓库拉取密钥

向你的助手提出请求(每个项目执行一次):

Create a registry secret called icr-pull-secret in project <project-id> for us.icr.io using my IBM Cloud API key

或者直接使用 ce_create_secret 工具:

{
  "project_id": "<your-project-id>",
  "name": "icr-pull-secret",
  "format": "registry",
  "data": {
    "username": "iamapikey",
    "password": "<your-ibm-cloud-api-key>",
    "server": "us.icr.io",
    "email": "[email protected]"
  }
}

MCP 响应 — ce_create_secret:

{
  "name": "icr-pull-secret",
  "format": "registry",
  "resource_type": "secret_registry_v2",
  "created_at": "2026-05-08T22:10:00Z",
  "project_id": "<your-project-id>"
}
步骤 3 — 部署应用

向你的助手提出请求:

Deploy us.icr.io/my-namespace/starwars-splash:v1.0.0 to Code Engine project <project-id>
as app "starwars-splash" using pull secret icr-pull-secret, min 1 instance

或者使用 ce_create_application 工具:

{
  "project_id": "<your-project-id>",
  "name": "starwars-splash",
  "image": "us.icr.io/<your-namespace>/starwars-splash:v1.0.0",
  "image_secret": "icr-pull-secret",
  "scale_min_instances": 1,
  "scale_max_instances": 3
}

MCP 响应 — ce_create_application:

{
  "name": "starwars-splash",
  "resource_type": "app_v2",
  "status": "deploying",
  "image_reference": "us.icr.io/my-namespace/starwars-splash:v1.0.0",
  "image_secret": "icr-pull-secret",
  "image_port": 8080,
  "scale_min_instances": 1,
  "scale_max_instances": 3,
  "scale_cpu_limit": "1",
  "scale_memory_limit": "4G",
  "endpoint": "https://starwars-splash.<subdomain>.us-south.codeengine.appdomain.cloud",
  "status_details": {
    "latest_created_revision": "starwars-splash-00001",
    "latest_ready_revision": null
  }
}
步骤 4 — 检查部署状态
Get details for the starwars-splash app in project <project-id>

此操作会调用 ce_get_application,并在应用状态变为 ready 后返回公开 URL。

List the running instances of starwars-splash in project <project-id>

此操作会调用 ce_list_app_instances(为某个实例传入 instance_name;ce_get_app_instance 仍然可用),并显示:

  • 实例名称和修订版本
  • 容器状态(running / pending / failed)
  • 重启次数
  • 启动时间戳
  • CPU 和内存分配

MCP 响应 — ce_get_application(就绪后):

{
  "name": "starwars-splash",
  "status": "ready",
  "image_reference": "us.icr.io/my-namespace/starwars-splash:v1.0.0",
  "image_port": 8080,
  "scale_min_instances": 1,
  "scale_max_instances": 3,
  "scale_cpu_limit": "0.5",
  "scale_memory_limit": "1G",
  "region": "us-south",
  "endpoint": "https://starwars-splash.<subdomain>.us-south.codeengine.appdomain.cloud",
  "status_details": {
    "latest_created_revision": "starwars-splash-00001",
    "latest_ready_revision": "starwars-splash-00001"
  }
}
步骤 5 — 映射自定义域名(可选)

若要通过自己的域名(例如 myapp.example.com)提供应用服务,你需要 TLS 证书。IBM Code Engine REST API 始终要求提供真实证书 — IBM 控制台中的“Platform managed”选项无法通过 API 使用。

5a — 获取 Let's Encrypt 证书(certbot)

# Install once
brew install certbot

# Request cert — certbot will print a DNS TXT challenge value
mkdir -p ~/certbot/{config,work,logs}
/opt/homebrew/bin/certbot certonly --manual --preferred-challenges dns \
  -d <your-domain> --agree-tos --no-eff-email --email [email protected] \
  --config-dir ~/certbot/config --work-dir ~/certbot/work --logs-dir ~/certbot/logs

Certbot 会暂停并提示你添加 TXT 记录:

Add TXT record: _acme-challenge.<your-domain> = <challenge-value>

确认 DNS 记录已传播,然后按 Enter。Certbot 会写入:

  • ~/certbot/config/live/<your-domain>/fullchain.pem
  • ~/certbot/config/live/<your-domain>/privkey.pem

5b — 在 Code Engine 中创建 TLS 密钥

向你的助手提出请求:

Create a TLS secret called starwars-tls in project <project-id>
using cert ~/certbot/config/live/myapp.example.com/fullchain.pem
and key ~/certbot/config/live/myapp.example.com/privkey.pem

此操作会调用 ce_create_tls_secret_from_pem — 从磁盘读取 PEM 文件,并将其存储为 Code Engine tls 密钥。

MCP 响应 — ce_create_tls_secret_from_pem:

{
  "name": "my-tls",
  "format": "tls",
  "resource_type": "secret_tls_v2",
  "created_at": "2026-05-08T22:30:00Z",
  "project_id": "<your-project-id>"
}

5c — 创建域名映射

向你的助手提出请求:

Map domain myapp.example.com to app my-app
in project <project-id> using TLS secret my-tls

此操作会调用 ce_create_domain_mapping 并返回 cname_target。

MCP 响应 — ce_create_domain_mapping:

{
  "name": "myapp.example.com",
  "status": "ready",
  "cname_target": "custom.<subdomain>.us-south.codeengine.appdomain.cloud",
  "component": {
    "resource_type": "app_v2",
    "name": "my-app"
  },
  "tls_secret": "my-tls",
  "region": "us-south"
}

5d — 更新 CNAME

在你的 DNS 服务商处设置:

myapp.example.com CNAME custom.<subdomain>.us-south.codeengine.appdomain.cloud

使用 5c 中返回的 cname_target 值(它使用 custom. 前缀,而不是应用名称)。

DNS 传播完成后,https://<your-domain> 将通过有效的 TLS 证书提供应用服务。

证书续期: Let's Encrypt 证书会在 90 天后过期。重新运行 certbot 获取更新后的 PEM 文件,然后让 Copilot 使用 mode renew 运行 ce_create_tls_secret_from_pem — 它会就地更新现有密钥,因此域名映射可继续正常工作,无需做任何更改。直接调用 ce_renew_tls_secret_from_pem 仍然可用。

完整的一次性提示词
I have a Star Wars splash page in examples/starwars-splash.
Build it for linux/amd64 as us.icr.io/my-namespace/starwars-splash:v1.0.0,
push it, then deploy it to Code Engine project <project-id> with pull secret icr-pull-secret.
Tell me the public URL and confirm the instance is running.

🔒 安全与传输模型

两种凭据
  • IBM Cloud API 密钥(IBMCLOUD_API_KEY):服务器用于与 IBM Cloud 通信的凭据。它保留在服务器进程中,调用方永远不会收到它。

  • MCP 调用方凭据:用于确定谁可以调用此服务器上的工具。它们不会发送到 IBM Cloud。

    • Web 管理员会话(/admin,内置用户 admin,使用 ADMIN_PASSWORD),
    • 用户凭据,以 Authorization: Basic user:password 形式发送(server_users),
    • MCP API 密钥,以 Authorization: Bearer cemcp_… 形式发送(server_api_keys;密钥仅显示一次)。

    每种凭据都具有 read、write、admin 作用域。通过 stdio 通信时没有请求头;请在服务器环境中设置 MCP_API_KEY,或设置 MCP_USERNAME 和 MCP_PASSWORD。详情请参阅:工具作用域和身份验证。

传输方式
模式启动方式端点
stdio(默认)MCP 客户端启动 node build/index.js无;客户端拥有 stdin 和 stdout
HTTPMCP_MODE=http PORT=8787 HOST=127.0.0.1 node build/index.jsPOST/GET/DELETE /mcp(Streamable HTTP)、GET /sse 和 POST /messages(旧版 SSE)、/health、/admin、/test、/tools、/log、/docs

运行一个服务比运行多个更好。 每个客户端都会启动一个 stdio 服务,因此每个 IDE 窗口都有自己的进程和内存。一个进程的审计跟踪、速率限制、会话和运行时设置,对另一个进程的 Web UI 不可见。如果你希望跟踪记录、日志、用户、密钥和设置保持一致,请运行一个 HTTP 服务并让所有客户端都连接到它。VS Code 扩展默认就是这样做的。

本地服务加固
  • 除非服务需要远程访问,否则请绑定到 127.0.0.1。在公共地址上绑定(HOST=0.0.0.0、容器)时,内置的 admin 会被禁用,直到设置 ADMIN_PASSWORD。
  • MCP_LOCAL_ONLY=true 会让服务仅响应 Host 为 localhost、127.0.0.1 或 [::1] 的请求,因此,将自身名称重新绑定到 127.0.0.1 的网页无法访问该服务。VS Code 扩展会为其启动的服务设置此项。使用反向代理时请将其关闭。
  • 管理员 Cookie 设置了 HttpOnly 和 SameSite=Strict;连续五次登录失败后,该地址会被锁定十分钟;导出的设置不包含机密信息。

🌐 在 Code Engine 上托管任意 MCP 服务

你可以使用此 MCP 服务将另一个 MCP 服务部署到 Code Engine——无需 CLI、Dockerfile 或 YAML。关键组件是 supergateway:一个轻量级桥接工具,可将任意基于 STDIO 的 MCP 服务封装为 HTTP + SSE 端点,使其可供任何远程客户端访问。

致谢:Jeremias Werner 和 Enrico Regge — IBM Cloud Code Engine

Your AI Assistant
    │  MCP JSON-RPC (STDIO, local)
    ▼
code-engine-mcp-server  ──► ce_create_application
                                     │
                                     ▼
                         Code Engine App
                         image: docker.io/supercorp/supergateway
                         args:  --stdio "npx -y <any-mcp-server>"
                                --outputTransport sse
                                     │  HTTPS + SSE  (public URL)
                                     ▼
                         Any remote MCP client
                         (Claude Desktop, Cursor, VS Code, …)

任何基于 STDIO 的 MCP 服务都能成为可远程访问、自动扩缩的云服务,无需自定义基础设施。

此示例部署 @tokenizin/mcp-npx-fetch,这是一个可让 AI 助手从公共 URL 获取内容的 MCP 服务。

示例文件位于 examples/mcp-server-supergateway/。

步骤 1 — 部署托管的 MCP 服务

向你的助手提问:

Deploy a hosted MCP fetch server to my Code Engine project <project-id>.
Use image docker.io/supercorp/supergateway on port 8000.
Startup args: --stdio "npx -y @tokenizin/mcp-npx-fetch" --outputTransport sse
Name it "mcp-fetch-server". No pull secret needed.

这会调用 ce_create_application:

{
  "project_id": "<your-project-id>",
  "name": "mcp-fetch-server",
  "image": "docker.io/supercorp/supergateway",
  "port": 8000,
  "run_args": ["--stdio", "npx -y @tokenizin/mcp-npx-fetch", "--outputTransport", "sse"]
}

MCP 响应 — ce_create_application:

{
  "name": "mcp-fetch-server",
  "resource_type": "app_v2",
  "status": "deploying",
  "image_reference": "docker.io/supercorp/supergateway",
  "image_port": 8000,
  "scale_min_instances": 0,
  "scale_max_instances": 10,
  "endpoint": "https://mcp-fetch-server.<subdomain>.<region>.codeengine.appdomain.cloud",
  "status_details": {
    "latest_created_revision": "mcp-fetch-server-00001",
    "latest_ready_revision": null
  }
}

无需拉取密钥——docker.io/supercorp/supergateway 是公共镜像。Code Engine 会在空闲时缩容至零;你只需为实际请求付费。

步骤 2 — 等待应用就绪

向你的助手提问:

Wait for mcp-fetch-server in project <project-id> to be ready

这会调用 ce_wait_for_app_ready:

{
  "project_id": "<your-project-id>",
  "app_name": "mcp-fetch-server",
  "timeout_seconds": 120
}

MCP 响应 — ce_wait_for_app_ready:

{
  "app_name": "mcp-fetch-server",
  "status": "ready",
  "endpoint": "https://mcp-fetch-server.<subdomain>.<region>.codeengine.appdomain.cloud",
  "elapsed_seconds": 34,
  "poll_history": [
    { "attempt": 1, "status": "deploying", "elapsed_seconds": 10 },
    { "attempt": 2, "status": "deploying", "elapsed_seconds": 20 },
    { "attempt": 3, "status": "ready",     "elapsed_seconds": 34 }
  ]
}
步骤 3 — 验证运行中的实例

向你的助手提问:

List the running instances of mcp-fetch-server in project <project-id>

这会调用 ce_list_app_instances:

MCP 响应 — ce_list_app_instances:

{
  "instances": [
    {
      "name": "mcp-fetch-server-00001-deployment-abc123",
      "revision": "mcp-fetch-server-00001",
      "status": "running",
      "restart_count": 0,
      "started_at": "2026-05-09T12:01:44Z"
    }
  ]
}
步骤 4 — 连接 MCP 客户端

使用 mcp-remote 将 HTTP+SSE 端点桥接回 STDIO,供本地客户端使用。

VS Code mcp.json:

{
  "servers": {
    "fetch": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-fetch-server.<subdomain>.<region>.codeengine.appdomain.cloud/sse"
      ]
    }
  }
}

Claude Desktop claude_desktop_config.json:

{
  "mcpServers": {
    "fetch": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-fetch-server.<subdomain>.<region>.codeengine.appdomain.cloud/sse"
      ]
    }
  }
}
步骤 5 — 测试端点

验证服务是否正常运行并持续传输:

curl -N https://mcp-fetch-server.<subdomain>.<region>.codeengine.appdomain.cloud/sse

或者在 MCP Inspector 中打开:

npx @modelcontextprotocol/inspector
# Connect via SSE → paste the Code Engine URL

连接后,你会看到列出的 fetch 工具,并可直接从 Inspector 调用它。

完整的一次性提示词
Deploy a hosted MCP fetch server to my Code Engine project <project-id>.
Use image docker.io/supercorp/supergateway on port 8000 with no pull secret.
run_args: --stdio "npx -y @tokenizin/mcp-npx-fetch" --outputTransport sse
Name it "mcp-fetch-server", wait for it to be ready, and give me the /sse URL
so I can add it to my mcp.json.

请参阅 examples/mcp-server-supergateway/,获取可直接使用的客户端配置文件。

部署其他任意 STDIO MCP 服务

同样的模式适用于任何可通过 npx 运行的 MCP 服务——只需替换 --stdio 参数:

MCP 服务--stdio 参数
Fetchnpx -y @tokenizin/mcp-npx-fetch
Filesystemnpx -y @modelcontextprotocol/server-filesystem /data
Brave Searchnpx -y @modelcontextprotocol/server-brave-search
你自己的服务node /app/server.js

文档

🗂️ 项目结构

code-engine-mcp-server/
├── build/                            # Compiled JavaScript output (dev repo)
├── docs/                             # API references, client guides, community files
│   ├── API_CALL_SCENARIOS.md
│   ├── CODE_ENGINE_API_REFERENCE.md
│   ├── MCP_INSPECTOR_TROUBLESHOOTING.md
│   ├── SETUP_INSTRUCTIONS.md
│   ├── TOOL_ACCESS.md
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   └── MAINTAINERS.md
├── examples/
│   ├── developer-splash/             # nginx static container example
│   ├── starwars-splash/              # nginx Star Wars crawl example
│   ├── startrek-splash/              # nginx Star Trek splash example
│   ├── deploy-mcp-server-to-code-engine/  # Deploy this MCP server onto Code Engine
│   └── mcp-server-supergateway/      # Host any MCP server on Code Engine via supergateway
├── dashboard/                        # MCP Activity Dashboard (dev repo) — npm run dashboard
│   ├── index.html                    # Activity + Deployments UI
│   ├── serve-dashboard.mjs           # Local server on port 8767
│   └── activity/live/events.jsonl    # Live tool-call log (gitignored runtime file)
├── internal/                         # Internal release notes
├── src/                              # Main TypeScript source code
├── CHANGELOG.md                      # Release history
├── LICENSE                           # Project license
├── README.md                         # Project overview and usage
├── mcp.example.json                  # Example MCP client configuration
├── vscode-extension/                 # Optional VS Code extension
├── package.json                      # npm package metadata and scripts
├── server.json                       # MCP Registry metadata
└── tsconfig.json                     # TypeScript configuration

🧩 功能

工具(28 个)
  • 本地容器: 检测 Docker 或 Podman、构建、标记、推送、运行、检查、清理(local_container);检查或创建 Dockerfile(dockerfile)
  • IBM Container Registry: 命名空间和镜像(icr)
  • Code Engine: 项目(状态、配额、出口 IP)、应用(创建、更新、等待、重启、回滚、同步 .env、查找闲置应用)、应用诊断(实例、日志、事件、修订版)、作业和作业运行、构建和构建运行、密钥(通用、注册表、TLS,支持原位更新和 ICR 拉取密钥刷新)、配置映射、域映射、服务绑定、函数、舰队
  • 流程: proc_build_push_deploy、proc_setup_custom_domain、proc_apply_manifest
  • 发现: describe_server、list_schemas、get_schema
  • 本服务: server_settings、server_access、server_users、server_api_keys、server_log
  • 工作区: write_or_modify_file

每个工具都有一个 outputSchema,每个结果都有一个 next 提示,错误调用会说明需要修正的内容。请参阅可用工具和工具参考。

Web 管理界面和运维
  • 在 /admin 登录:概览、远程客户端(通过架构驱动的表单调用任意工具、开启活动日志和审计跟踪、创建用户和 MCP API 密钥、监听事件)、活动、事件、用户、API 密钥、运行时
  • 每个工具的工具范围与身份验证、速率限制、协议开关、设置和日志导出(不含密钥)
VS Code 扩展
  • 设置与诊断侧边栏、适用于每种 IDE 的 Configure MCP、MCP Remote Config 面板、活动仪表板、收据可视化工具
  • 可选择 共享 HTTP 服务(默认)、stdio 或远程服务 URL,并检查该服务是否为 code-engine MCP 服务
  • 详情:vscode-extension/README.md
开发者体验
  • MCP 活动仪表板 — 会话时间线、空闲间隔可视化、部署结果横幅、部署清单选项卡
  • 实时活动日志记录 — JSONL 事件流,包含输入摘要、流水线子步骤和 HTTP 探测重点信息

⚙️ 配置

获取 IBM Cloud API 密钥

所有 Code Engine 和 ICR 操作都需要 IBM Cloud API 密钥。请前往此处获取: IBM Cloud IAM → API keys → Create an IBM Cloud API key。

请将密钥保存在安全的地方(密码管理器)。你需要将它粘贴到以下某种配置方式中。


方式 A — VS Code 扩展(推荐)

IBM Code Engine MCP 扩展会处理所有事项:启动服务、存储 API 密钥以及注册 MCP,无需手动编辑 mcp.json。

从 Marketplace 安装:

IDE / 平台安装链接
VS Codemarketplace.visualstudio.com
Cursor / Theia / Gitpod / Codiumopen-vsx.org
从本地 .vsix 安装命令面板 → 扩展:从 VSIX 安装…

设置 API 密钥(使用任何工具前都必须完成):

  1. 打开 IBM Code Engine MCP 侧边栏面板(活动栏中的云图标)
  2. 粘贴 IBM Cloud API 密钥并点击 Save
    (密钥存储在 VS Code SecretStorage 中,绝不会保存在纯文本文件里)
  3. 可在同一面板中更改区域(默认值:us-south)
  4. 在 Server connection → This computer 下选择服务运行方式:
    • 共享 HTTP 服务(默认):扩展会在 127.0.0.1:8787 上启动一个服务,聊天、IDE MCP 列表、Web UI 和 MCP Remote Config 都会使用它。请以 admin / admin 身份登录 Web UI(使用设置 codeEngineMcp.localAdminPassword 更改密码)。
    • stdio:每个 IDE 窗口都会启动自己的进程。
    • 或者 远程服务:任意主机上共享服务的 URL。
  5. 点击 Configure MCP — 这会将 code-engine 条目(即扩展使用的同一连接)写入 VS Code、Cursor、Bob、Windsurf、Cline、Antigravity 和 Claude Desktop 的配置。保留这些文件中的其他服务。
  6. 点击 Run Diagnostics,确认所有配置均已就绪:
    • ✅ 已在 PATH 中找到 Node.js
    • ✅ 已配置 API 密钥
    • ✅ 已注册 MCP 服务
    • ✅ 已发现工具列表(标题会显示数量,例如 Discovered Tools (28))

完成第 5 步后,你可以打开 GitHub Copilot Chat 并立即询问:

“列出我所有的 Code Engine 项目”

提示: 如果安装后 Copilot 看不到这些工具,请运行一次 命令面板 → 重新加载窗口。

更多详情:vscode-extension/README.md。


方式 B — 纯 MCP 配置(不使用扩展)

适用于任何支持 MCP 的客户端:不使用扩展的 GitHub Copilot、Cline、Bob、Claude Desktop、Cursor 等。

API 密钥的放置位置(选择一种方式)

选项 1 — Shell 环境变量(最安全)

复制提供的模板并填入密钥:

cp .env.example .env          # copy template (already in .gitignore)
# edit .env → set IBMCLOUD_API_KEY=your-key
source .env                   # load into current shell session

或者将导出命令永久添加到 shell 配置文件中,这样每个新终端都会设置该变量:

# ~/.zshrc or ~/.bash_profile
export IBMCLOUD_API_KEY="your-ibm-cloud-api-key-here"

查看 .env.example,了解所有可用变量(IBMCLOUD_REGION、CONTAINER_RUNTIME、DEBUG)。

然后在 MCP 配置中引用该变量,而不嵌入其值:

{
  "servers": {
    "code-engine": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "code-engine-mcp-server@latest"],
      "env": {
        "IBMCLOUD_API_KEY": "${env:IBMCLOUD_API_KEY}",
        "IBMCLOUD_REGION": "us-south"
      }
    }
  }
}

${env:VARIABLE} 是 VS Code 的输入替换语法 — 它会在启动时读取 shell 环境中的值,因此 API 密钥不会存储在文件中。

选项 2 — VS Code 输入变量(连接时提示)

VS Code 可以在启动服务时提示你输入 API 密钥 — 非常适合共用设备:

{
  "inputs": [
    {
      "id": "ibmcloud-api-key",
      "type": "promptString",
      "description": "IBM Cloud API key",
      "password": true
    }
  ],
  "servers": {
    "code-engine": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "code-engine-mcp-server@latest"],
      "env": {
        "IBMCLOUD_API_KEY": "${input:ibmcloud-api-key}",
        "IBMCLOUD_REGION": "us-south"
      }
    }
  }
}

选项 3 — 内联值(最简单,安全性最低)

直接粘贴密钥。切勿将此文件提交到 git。

{
  "servers": {
    "code-engine": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "code-engine-mcp-server@latest"],
      "env": {
        "IBMCLOUD_API_KEY": "your-ibm-cloud-api-key-here",
        "IBMCLOUD_REGION": "us-south"
      }
    }
  }
}

**安全性:**将配置文件添加到 .gitignore。对于工作区配置,请使用 ${env:...} 或 ${input:...},不要使用内联值。


1) GitHub Copilot(VS Code)— 工作区 mcp.json

在工作区根目录中创建 .vscode/mcp.json(或复制 mcp.example.json):

cp mcp.example.json .vscode/mcp.json
echo '.vscode/mcp.json' >> .gitignore

粘贴上面其中一种 API 密钥配置方式。然后重启服务: Cmd+Shift+P → MCP:重启服务 → code-engine。

或者,使用全局 MCP 配置 ~/Library/Application Support/Code/User/mcp.json(macOS),这样所有工作区都能使用该服务,而无需为每个项目单独创建文件。


2) Cline(VS Code 扩展)
  1. 打开 VS Code 设置(Cmd+,)
  2. 搜索 Cline: MCP Settings → Edit in settings.json
  3. 添加:
{
  "cline.mcpServers": {
    "code-engine": {
      "command": "npx",
      "args": ["-y", "code-engine-mcp-server@latest"],
      "env": {
        "IBMCLOUD_API_KEY": "your-api-key-here",
        "IBMCLOUD_REGION": "us-south"
      }
    }
  }
}

3) Bob(VS Code 扩展)

Bob 使用相同的 cline.mcpServers 配置格式:

  1. 打开 VS Code 设置(Cmd+,)
  2. 搜索 Cline: MCP Settings → Edit in settings.json
  3. 添加:
{
  "cline.mcpServers": {
    "code-engine": {
      "command": "npx",
      "args": ["-y", "code-engine-mcp-server@latest"],
      "env": {
        "IBMCLOUD_API_KEY": "your-api-key-here",
        "IBMCLOUD_REGION": "us-south"
      }
    }
  }
}

路径 C — 共享 HTTP 服务(本地或远程)

以 HTTP 模式运行一次服务,然后让每个客户端连接到它。同样的步骤适用于笔记本电脑以及 IBM Code Engine、Render、Fly.io、VM 或任何容器主机。该服务是一个普通的 Node HTTP 应用。

1. 启动服务
IBMCLOUD_API_KEY=<key> MCP_MODE=http PORT=8787 HOST=127.0.0.1 \
ADMIN_PASSWORD=<choose one> npx -y code-engine-mcp-server

在公共主机上使用 HOST=0.0.0.0,并始终设置 ADMIN_PASSWORD(未设置该变量时,内置的 admin 会被禁用)。在服务前端配置 TLS。

2. 安全模型
  • IBM Cloud API 密钥保存在服务端(环境变量中,或存储在 server_settings secrets 中)。调用方不会发送或接收该密钥。
  • 调用方使用用户身份(Authorization: Basic …)、MCP API 密钥(Authorization: Bearer cemcp_…)或管理员会话 Cookie 向服务进行身份验证。通过 /admin 或使用 server_users 和 server_api_keys 创建这些凭证。
  • read、write、admin 作用域和身份验证模式(open、writes、all)决定每个调用方可以执行哪些操作:docs/TOOL_ACCESS.md。
3. 客户端配置

VS Code、Cursor、Windsurf 及其他支持 Streamable HTTP 的工具(mcp.json):

{
  "servers": {
    "code-engine": {
      "type": "http",
      "url": "https://your-server.example/mcp",
      "headers": { "Authorization": "Bearer cemcp_…" }
    }
  }
}

仅支持 stdio 的客户端可以使用 mcp-remote:

{
  "mcpServers": {
    "code-engine-remote": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://your-server.example/mcp",
               "--header", "Authorization: Bearer ${CODE_ENGINE_MCP_API_KEY}"],
      "env": { "CODE_ENGINE_MCP_API_KEY": "cemcp_…" }
    }
  }
}

VS Code 扩展会为你写入这些条目(Setup → Server connection,然后选择 Configure MCP)。有关每种 IDE 的说明,请参阅 docs/REMOTE_MCP_CONNECTION.md。

4. 检查服务

GET /health 无需凭证即可响应(脚本可使用 ?format=json;JSON 中的服务名称为 code-engine-mcp-server)。打开 /admin,查看工具数量、调用日志和设置。


如果你的 shell 已导出密钥,建议使用 ${env:IBMCLOUD_API_KEY},这样密钥就不会出现在 settings.json 中。


3) Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "code-engine": {
      "command": "npx",
      "args": ["-y", "code-engine-mcp-server@latest"],
      "env": {
        "IBMCLOUD_API_KEY": "your-api-key-here",
        "IBMCLOUD_REGION": "us-south"
      }
    }
  }
}

保存后重启 Claude Desktop。Claude 需要使用工具时,服务会按需启动。

安装与注册表链接

平台链接
npm(MCP 服务包)code-engine-mcp-server
VS Code Marketplace(扩展)MarkusvanKempen.code-engine-mcp
Open VSX Registry(Theia / Gitpod / Cursor)markusvankempen.code-engine-mcp
MCP Registryio.github.markusvankempen/code-engine-mcp-server

VS Code 扩展是最简单的入门方式——它会自动处理服务启动、API 密钥存储和 MCP 注册。如果你更喜欢手动配置 MCP(用于 Cline、Claude Desktop、Cursor 或任何其他客户端),可直接使用 npm 包。

💬 示例提示词

检测容器运行时

向助手提问:

Can you detect which container runtime I have installed?
构建容器镜像

向助手提问:

Build a container image from ./Dockerfile with the name myapp:latest
在本地测试容器

向助手提问:

Test the myapp:latest image locally on port 8080
推送到注册表

向助手提问:

Push myapp:latest to icr.io/my-namespace/myapp:latest
列出 Code Engine 项目

向助手提问:

List all my Code Engine projects
完整工作流

向助手提问:

I have a Node.js app in ./my-app with a Dockerfile. Can you:
1. Build it as myapp:v1.0.0
2. Test it locally on port 3000
3. Push it to icr.io/my-namespace/myapp:v1.0.0
4. Deploy it to my Code Engine project "production"
5. Show me the application URL
自定义域名

向助手提问:

Create a TLS secret called my-tls in project <project-id>
using cert ~/certbot/config/live/example.com/fullchain.pem
and key ~/certbot/config/live/example.com/privkey.pem.
Then map domain example.com to app my-app using that secret.
Tell me what CNAME value to set in DNS.

🛠️ 可用工具

该服务发布了 28 个工具。资源工具(ce_app、ce_job、ce_secret、……)接受一个 action 字段,因此一个工具即可涵盖该资源的列出、获取、创建、更新、删除及其他操作。此前的 112 个单一用途工具名称(ce_list_applications、ce_create_job、……)仍可按名称调用;它们只是在 tools/list 中隐藏起来,以缩短模型的工具菜单。

不确定时,先调用 describe_server;如需查看各操作的确切字段,可使用工具名称调用 get_schema。所有操作及其必填字段的完整列表见 工具参考。

{ "name": "ce_app", "arguments": { "action": "list", "project_id": "<project-id>" } }

用于项目发现的区域:us-south、us-east、eu-de、eu-gb、eu-es、jp-tok、jp-osa、au-syd、ca-tor、br-sao。

过程(proc_*)会将多个步骤打包为一次调用,例如构建、推送、等待镜像并部署。 | 工具 | 类型 | 用途 | |---|---|---| | describe_server | 只读 | 发现工具:服务器版本、IBM Cloud API 密钥状态、支持的 CE 区域以及已发布的工具目录 | | list_schemas | 只读 | 列出所有架构 ID:数据架构(服务器、设置、日志、错误),以及每个工具名称对应的架构 | | get_schema | 只读 | 从 list_schemas 获取一个架构 | | local_container | 可删除或停止 | 本机上的 Docker 或 Podman:检测运行时、构建、标记、推送、运行、检查并清理镜像和容器 | | dockerfile | 写入 | 检查或创建适用于 Code Engine 的 Dockerfile(linux/amd64、端口 8080、非 root) | | icr | 可删除或停止 | IBM Container Registry:命名空间及其中的镜像 | | ce_project | 可删除或停止 | Code Engine 项目 | | ce_app | 可删除或停止 | Code Engine 应用(始终运行或缩容至零的 HTTP 服务) | | ce_app_inspect | 只读 | 对单个 Code Engine 应用进行只读诊断:运行中的实例、日志、Kubernetes 事件(无法启动的原因)以及修订版本(可回滚到的版本) | | ce_job | 可删除或停止 | Code Engine 作业定义(运行至完成的批处理任务) | | ce_job_run | 可删除或停止 | Code Engine 作业的运行记录 | | ce_build | 可删除或停止 | Code Engine 构建配置:在 IBM Cloud 中从 Git 构建容器镜像(无需本地 Docker) | | ce_build_run | 写入 | Code Engine 构建的运行记录 | | ce_secret | 可删除或停止 | Code Engine 密钥:通用键/值、镜像仓库拉取凭据、TLS、SSH | | ce_config_map | 可删除或停止 | Code Engine 配置映射:适用于应用和作业的非敏感键/值设置 | | ce_domain_mapping | 可删除或停止 | Code Engine 应用的自定义域名 | | ce_binding | 可删除或停止 | 服务绑定:通过 service_access 密钥将 IBM Cloud 服务实例连接到 Code Engine 应用或作业 | | ce_function | 可删除或停止 | Code Engine 无服务器函数(代码,而非容器镜像) | | ce_fleet | 可删除或停止 | Code Engine Fleet:处理任务队列的大型工作进程池 | | proc_build_push_deploy | 写入 | 流程:一步完成完整容器流水线——自动检测 Podman 或 Docker,为 linux/amd64 构建,推送到 IBM Container Registry(ICR),创建或更新 Code Engine 应用,等待其就绪,并返回公共 URL | | proc_setup_custom_domain | 写入 | 流程:一步完成自定义域名设置——从磁盘读取 TLS 证书 PEM 文件(例如 | | proc_apply_manifest | 写入 | 将声明式 JSON 部署清单(ce-deploy.json)应用到 Code Engine | | write_or_modify_file | 写入 | 在工作区中写入或更新文本文件 | | server_settings | 写入 | 此 MCP 服务保存的设置 | | server_access | 写入 | 谁以及什么可以访问此 MCP 服务 | | server_users | 可删除或停止 | 管理员 | | server_api_keys | 可删除或停止 | 管理员 | | server_log | 写入 | 此 MCP 服务自身的调用日志和出站事件订阅 | 类型: 只读 工具只查看;写入 会创建或更改内容;可以删除或停止 表示至少有一项操作会删除或停止某些内容,因此助手应先征求确认。

🔐 环境变量

IBM Cloud

  • IBMCLOUD_API_KEY:IBM Cloud API 密钥(Code Engine 和注册表操作必需)
  • IBMCLOUD_REGION:默认 IBM Cloud 区域(可选,默认为 us-south)
  • CONTAINER_RUNTIME:强制使用 docker 或 podman

HTTP 模式和 Web UI

变量默认值用途
MCP_MODEstdio设为 http 以提供 /mcp、/sse 和 Web UI
PORT8787监听端口
HOST127.0.0.1绑定地址;0.0.0.0 表示公开访问
ADMIN_USERadmin内置管理员名称
ADMIN_PASSWORD本地为 admin管理员密码;绑定到公开地址时必需
MCP_LOCAL_ONLY关闭true:仅响应发往 localhost、127.0.0.1、[::1] 的请求
CORS_ORIGINS无额外允许的 CORS 来源,以逗号分隔
RATE_LIMIT_ENABLED、RATE_LIMIT、RATE_LIMIT_WINDOW_SECONDS开启、60、60每个调用方在每个时间窗口内的调用次数
USER_STORE_PATH、TOOL_POLICY_PATH、DASHBOARD_CONFIG_PATH~/.code-engine-mcp/…用户和密钥、工具策略及设置的保存位置

通过 stdio 传递调用方身份

  • MCP_API_KEY,或 MCP_USERNAME 和 MCP_PASSWORD:stdio 进程使用的凭据(stdio 没有请求头)

活动仪表板(自 v1.6.0 起默认开启): 工具调用记录在 ~/.code-engine-mcp/activity/events.jsonl 中;设置 MCP_ACTIVITY_ENABLED=false 可将其关闭。请参阅 MCP 活动仪表板 和 .env.example。

可选附加组件: PROVENANCE_* 变量可启用签名回执(默认关闭)。请参阅本 README 末尾的可选附加组件:Provenance。

📋 前置条件

  • Node.js v18 或更高版本
  • 已安装 Docker 或 Podman(用于容器构建/推送工具)
  • IBM Cloud API 密钥(用于所有 Code Engine 和 ICR 操作)

MCP 服务直接与 IBM Cloud REST API 和 ICR API 通信。无需 IBM Cloud CLI 或 Code Engine 插件。

👩‍💻 开发

# Install, build, and test (mise loads Node from mise.toml)
mise run install
mise run test-all          # server unit tests, every tool smoke call, extension tests
mise run test-extension    # extension typecheck + IDE config tests

# Run in development mode
npm run dev

🧪 故障排除

服务无法连接
  1. 确认配置中的路径是绝对路径
  2. 检查 Node.js 是否位于 PATH 中:node --version
  3. 确认构建输出存在:ls build/index.js
  4. 手动测试:node build/index.js
Docker/Podman 命令失败
  1. 确认已安装:docker --version 或 podman --version
  2. 检查 Docker 守护进程是否正在运行
  3. 确认权限(如有需要,将用户添加到 docker 组)
Code Engine 命令失败
  1. 确认已设置 API 密钥:检查 MCP 客户端配置中的 IBMCLOUD_API_KEY
  2. 确认区域正确(默认为 us-south;也包含 eu-es)。如有需要,请设置 IBMCLOUD_REGION
  3. 确认项目 ID 有效:使用 ce_list_projects 查找
  4. 检查令牌是否过期——服务会自动重新获取 IAM 令牌;如果错误仍然存在,请在 IBM Cloud IAM → API keys 重新生成 API 密钥

🛡️ 安全

  • 切勿将 API 密钥提交到版本控制系统
  • 使用环境变量存储敏感数据
  • 考虑使用 IBM Cloud IAM 进行身份验证
  • 根据需要限制 MCP 服务权限

📄 许可证

Apache License 2.0 · opensource.org/licenses/Apache-2.0

🤝 参与贡献

欢迎参与贡献!请提交 issue 或 pull request(参阅贡献指南)。

🙋 支持

如有问题或疑问:


可选:MCP 活动仪表板

MCP 工作流的核心可观测性功能。 与来源证明(签名回执)不同,活动日志记录轻量且默认启用(机密信息会被隐去)。设置 MCP_ACTIVITY_ENABLED=false 即可关闭。

界面命令 / URL
VS Code / Cursor 扩展IBM Code Engine MCP: Open MCP Activity Dashboard
浏览器(开发仓库)npm run dashboard → http://localhost:8767/
事件日志文件~/.code-engine-mcp/activity/events.jsonl

无需配置环境变量。服务会在首次调用工具时创建事件文件。使用 MCP_ACTIVITY_SESSION_ID 和 MCP_ACTIVITY_CHAT_LABEL 为仪表板下拉菜单中的会话添加标签。

故障排查: 如果仪表板没有显示新会话,请检查 MCP 服务环境中 MCP_ACTIVITY_ENABLED 是否为 false,并确认 MCP_ACTIVITY_EVENTS_PATH(若已设置)与仪表板读取的文件一致。重启 MCP 服务;如果之前清除了视图,请点击 Show all activity。


可选插件:来源证明

不属于 MCP 核心功能。 Code Engine MCP 服务无需来源证明即可部署、构建和管理应用。来源证明插件是一个实验性的可选层,可为选定的工具操作生成签名回执(默认:关闭)。

文档用途
provenance-addon/README.md回执可以(以及不可以)证明什么
PROVENANCE-CHAT-COMMANDS.md选择启用时使用的聊天提示词
PROVENANCE-E2E-FLOW.md技术端到端流程
examples/startrek-splash/README.md有文档说明的 MCP 部署及可选回执

在 code-engine-mcp-server/.env 中启用(PROVENANCE_ENABLED=true),然后重启 MCP。启用来源证明后,proc_build_push_deploy 会在其 JSON 响应中返回 provenance_receipts。

聊天提示词示例(插件):

Using only Code Engine MCP tools, deploy examples/startrek-splash.
Provenance on — show provenance_receipts, verify with verify-receipt.mjs, and give me the live URL.

主题与关键词

code-engine · code-engine-mcp · code-engine-mcp-server · ibm-code-engine · ibm-cloud · ibm-container-registry · icr · serverless · knative · container-deployment · cloud-native · mcp · mcp-server · model-context-protocol · stdio · npx · cursor · vscode · openvscode · claude-desktop · github-copilot · cline · bob-ide · ai-agent · ai-agents · tool-calling · llm-tools · automation · typescript · nodejs · docker · podman · kubernetes · containers · deploy · devops · ci-cd · watsonx-orchestrate · ibm


作者: Markus van Kempen 邮箱: [email protected] · [email protected] 网站: markusvankempen.github.io 没有小到不值得修复的 Bug,也没有怪到无法理解的语法。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。