자연어를 사용하여 AI 클라이언트가 IBM Cloud Code Engine에 컨테이너를 빌드, 푸시 및 배포할 수 있도록 지원합니다.
다른 이름 markusvankempen/code-engine-mcp-server, code-engine-mcp-server
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 1.4.2
- 마지막 커밋
- 2026년 10월 1일
- 라이선스
- Apache-2.0
IBM Code Engine MCP란?
IBM Code Engine은(는) MCP server입니다. 자연어를 사용하여 AI 클라이언트가 IBM Cloud Code Engine에 컨테이너를 빌드, 푸시 및 배포할 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
IBM Code Engine MCP server 정보
이 MCP server는 개발자가 자연어를 사용하여 IBM Cloud Code Engine에 컨테이너를 배포할 수 있게 해줍니다. Claude, Cursor, GitHub Copilot과 같은 AI 어시스턴트가 이미지 빌드 및 푸시부터 최종 배포에 이르기까지 컨테이너화된 애플리케이션의 전체 라이프사이클을 관리할 수 있습니다. 이 server는 Docker 또는 Podman과 같은 로컬 컨테이너 런타임 및 IBM Container Registry를 연결하여 고수준의 의도와 복잡한 DevOps 명령어 사이의 간극을 메워줍니다.
사용자는 VS Code 확장 프로그램 또는 데스크톱 AI 에이전트를 포함한 다양한 클라이언트를 통해 server와 상호작용합니다. 이 server는 프로젝트, 앱, 작업, secret 및 도메인을 관리하기 위한 28개의 특화된 도구를 제공합니다. 또한 활동 모니터링, API 키 관리 및 원격 클라이언트 탭을 통한 도구 테스트를 위한 웹 관리 UI도 포함되어 있습니다. 이러한 설정을 통해 AI 에이전트는 DevOps 엔지니어처럼 동작하며, 환경을 자율적으로 탐색하고, registry pull secret을 생성하며, 배포 파이프라인 도중 Dockerfile 설정 오류를 스스로 수정할 수도 있습니다.
활용 사례
- 1자동화된 컨테이너 배포 파이프라인AI 어시스턴트에게 특정 애플리케이션 폴더를 Code Engine 프로젝트로 빌드, 푸시 및 배포하도록 한 번에 요청합니다.
- 2자동화된 registry secret 관리IBM Container Registry에서 이미지를 가져오는 데 필요한 인증 정보를 설정하도록 AI에게 요청합니다.
- 3실시간 배포 모니터링시각적 대시보드를 통해 컨테이너 빌드 및 배포 단계의 진행 상황을 확인합니다.
- 4자율적인 DevOps 트러블슈팅배포 실패 시 AI 에이전트가 Dockerfile의 설정 오류를 식별하고 수정하도록 합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
IBM Code Engine MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 IBM Code Engine MCP 설치
$ claude mcp add --env 'IBMCLOUD_API_KEY=<YOUR_IBMCLOUD_API_KEY>' code-engine-mcp-server -- npx -y code-engine-mcp-serverCursor에 IBM Code Engine MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"code-engine-mcp-server": {
"command": "npx",
"args": [
"-y",
"code-engine-mcp-server"
],
"env": {
"IBMCLOUD_API_KEY": "<YOUR_IBMCLOUD_API_KEY>"
}
}
}
}VS Code에 IBM Code Engine MCP 설치
.vscode/mcp.json
{
"servers": {
"code-engine-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"code-engine-mcp-server"
],
"env": {
"IBMCLOUD_API_KEY": "<YOUR_IBMCLOUD_API_KEY>"
}
}
}
}VS Code CLI에 IBM Code Engine MCP 설치
$ code --add-mcp '{"name":"code-engine-mcp-server","type":"stdio","command":"npx","args":["-y","code-engine-mcp-server"],"env":{"IBMCLOUD_API_KEY":"<YOUR_IBMCLOUD_API_KEY>"}}'Claude Desktop에 IBM Code Engine MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"code-engine-mcp-server": {
"command": "npx",
"args": [
"-y",
"code-engine-mcp-server"
],
"env": {
"IBMCLOUD_API_KEY": "<YOUR_IBMCLOUD_API_KEY>"
}
}
}
}Codex에 IBM Code Engine MCP 설치
$ codex mcp add code-engine-mcp-server --env 'IBMCLOUD_API_KEY=<YOUR_IBMCLOUD_API_KEY>' -- npx -y code-engine-mcp-serverCodex config.toml에 IBM Code Engine MCP 설치
~/.codex/config.toml
[mcp_servers.code-engine-mcp-server] command = "npx" args = ["-y", "code-engine-mcp-server"] [mcp_servers.code-engine-mcp-server.env] IBMCLOUD_API_KEY = "<YOUR_IBMCLOUD_API_KEY>"
Gemini CLI에 IBM Code Engine MCP 설치
$ gemini mcp add -s user -e 'IBMCLOUD_API_KEY=<YOUR_IBMCLOUD_API_KEY>' code-engine-mcp-server npx -- -y code-engine-mcp-serverGemini settings.json에 IBM Code Engine MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"code-engine-mcp-server": {
"command": "npx",
"args": [
"-y",
"code-engine-mcp-server"
],
"env": {
"IBMCLOUD_API_KEY": "<YOUR_IBMCLOUD_API_KEY>"
}
}
}
}구성
IBMCLOUD_API_KEY필수비밀IBM Cloud API key used to authenticate and call Code Engine APIs
ADMIN_PASSWORDCODE_ENGINE_MCP_API_KEYCONTAINER_RUNTIMEOptional container runtime override: docker or podman
IBMCLOUD_REGIONDefault IBM Cloud region (for example: us-south)
MCP_ACTIVITY_CHAT_LABELMCP_ACTIVITY_ENABLEDMCP_ACTIVITY_EVENTS_PATHMCP_ACTIVITY_SESSION_ID
| 이름 | 설명 | 유형 |
|---|---|---|
| IBMCLOUD_API_KEY | IBM Cloud API key used to authenticate and call Code Engine APIs | 필수비밀 |
| ADMIN_PASSWORD | — | |
| CODE_ENGINE_MCP_API_KEY | — | |
| CONTAINER_RUNTIME | Optional container runtime override: docker or podman | |
| IBMCLOUD_REGION | Default IBM Cloud region (for example: us-south) | |
| MCP_ACTIVITY_CHAT_LABEL | — | |
| MCP_ACTIVITY_ENABLED | — | |
| MCP_ACTIVITY_EVENTS_PATH | — | |
| MCP_ACTIVITY_SESSION_ID | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능markusvankempen/code-engine-mcp-server is public and reachablegithub.com/markusvankempen/code-engine-mcp-server ↗통과
- 패키지가 이 저장소를 소스로 명시code-engine-mcp-server names markusvankempen/code-engine-mcp-server as sourcenpmjs.com/package/code-engine-mcp-server ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-01github.com/markusvankempen/code-engine-mcp-server ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from code-engine-mcp-server통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음113 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기IBM Code Engine MCP Server

MCP server for IBM Code Engine — build, push, and deploy containers from Cursor, Copilot, Claude, and Cline using natural language.
Current release: v1.7.8 — 28 tools instead of 112 (one tool per resource with an
actionfield, same capability, old names still work), a shared local HTTP server for the VS Code extension, a web admin UI with a Remote client tab (test tools, logging, users and API keys, events), MCP Remote Config inside VS Code, and a check that the server you point at really is a code-engine MCP server. See CHANGELOG.md and the tool reference.
Search terms: 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
Author: Markus van Kempen | markus.van.kempen@gmail.com · markusvankempen.github.io No bug too small, no syntax too weird.
How It Works
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
✨ What You Get
- 28 tools, one per resource.
ce_app,ce_job,ce_secret, … each take anaction(list,get,create,delete, …). Every earlier capability is still there; see the tool reference. - Container workflow tools for Docker or Podman (
local_container,dockerfile) - IBM Container Registry (
icr) and the whole Code Engine surface: projects, apps, jobs, builds, secrets, config maps, domains, bindings, functions, fleets - Multi-step procedures: build, push and deploy in one call (
proc_build_push_deploy), custom domains, declarative manifests - One server, many clients. Run it over stdio, or as an HTTP server that your IDE, assistants, the web UI and the VS Code extension all share
- Web admin UI (
/admin): overview, activity, users, API keys, runtime settings, and a Remote client tab that tests the tools and configures the server (logging, users and keys, events) - MCP-ready setup for GitHub Copilot, Cursor, Cline, Bob, Windsurf, Antigravity, Claude Desktop, and the VS Code extension in
vscode-extension/(including MCP Remote Config) - MCP Activity Dashboard — live timeline of tool calls, session grouping, deploy outcome highlights, and a Deployments inventory tab
- Live activity logging — optional JSONL event stream for every MCP tool call (
MCP_ACTIVITY_*env vars)
🚀 Quick Start
# 1) Install dependencies
npm install
# 2) Build the server
npm run build
# 3) Run once to verify
node build/index.js
Then configure your MCP client using one of the examples in the Configuration section below.
🤖 The Agentic Experience (No Docker/Code Engine Lingo Needed)
The true power of this MCP server is that you don't need to know Docker or Code Engine commands. You can simply state your goal, and the LLM will discover the environment, run the pipeline, and fix issues autonomously.
Here is an example interaction from a real session:
User:
"I have an app in the
developer-splashfolder. Deploy it to my Code Engine project."
Assistant's Autonomous Thought Process:
- Discovery: "Let me check what projects and namespaces exist... Found project
my-projectand namespacemy-namespace." - Prerequisites: "No pull secret in this project yet. I'll get the API key from the
.envfile and create the secreticr-pull-secret." - Execution: "Now I'll run the full pipeline: build → push → deploy → wait."
- Validation: "It's deployed but stuck at 'deploying'. Let me check the logs... The container is running but the readiness probe is failing."
- Self-Correction: "Ah, the
sedpattern in the Dockerfile didn't match nginx alpine's default config format for port 80. I'll fix the Dockerfile with a regex-safesedand rebuild." - Completion: "App is live! 🎉 Status: ready."
Assistant Response to User:
"Your app is deployed and live at:
https://developer-splash.<subdomain>.<region>.codeengine.appdomain.cloud. I had to fix a minor port configuration issue in your Dockerfile, but it is successfully running now!"
With this MCP server, the AI acts as an expert DevOps engineer pairing with you.
📊 MCP Activity Dashboard (v1.4.0)
See what your AI assistant is doing in real time — tool calls, idle gaps between steps, deploy outcomes, and live app URLs.
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]
Activity logging (on by default)
Since v1.6.0 the server logs every tool start/finish to ~/.code-engine-mcp/activity/events.jsonl — input summaries, pipeline sub-steps (proc_build_push_deploy), result highlights, and optional HTTP smoke-test labels. API keys, passwords, TLS keys, env var values, and secret payloads are redacted. The file rotates at 5 MB.
Optional env in your MCP client config:
"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"
In the VS Code extension, turn logging off with codeEngineMcp.activityEnabled. Restart the MCP server after changing env.
See .env.example for all MCP_ACTIVITY_* variables.
Open the dashboard
| Method | How |
|---|---|
| VS Code extension | Command Palette → IBM Code Engine MCP: Open MCP Activity Dashboard |
| Browser (dev repo) | npm run dashboard → http://localhost:8767/ |
| Live refresh | On by default in the browser; toggle in-panel or set codeEngineMcp.activityLiveRefresh (extension) |
The Activity tab shows a session timeline with tool duration, idle gaps, and a task-outcome banner (status, image, live URL). The Deployments tab lists projects and apps from Code Engine and supports get-details, redeploy, and delete via MCP tools.
Example chat prompt:
"I have a Star Wars splash page in examples/starwars-splash. Deploy it to Code Engine using only MCP tools — build for linux/amd64, push to my ICR namespace, and deploy to my Code Engine project. Show me the live URL when ready."
Open the Activity Dashboard while the assistant runs to watch proc_build_push_deploy progress step by step.
Deploy Your First App
This walks through deploying the included Star Wars splash page example — a static nginx container — entirely through the MCP server.
Apple Silicon users: always build with
--platform linux/amd64. Code Engine runs amd64 only.
Step 1 — Build and push the image
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
Or ask your assistant:
Build examples/starwars-splash as us.icr.io/my-namespace/starwars-splash:v1.0.0 for linux/amd64 and push it
MCP response — 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"
}
Note: Container runtimes (Podman/Docker) write build progress to stderr. The
build_outputfield combines stdout and stderr so you see the full build log.
MCP response — 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"
}
Step 2 — Create a registry pull secret
Ask your assistant (once per project):
Create a registry secret called icr-pull-secret in project <project-id> for us.icr.io using my IBM Cloud API key
Or use the ce_create_secret tool directly:
{
"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": "user@example.com"
}
}
MCP response — 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>"
}
Step 3 — Deploy the application
Ask your assistant:
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
Or use the ce_create_application tool:
{
"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 response — 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
}
}
Step 4 — Check deployment status
Get details for the starwars-splash app in project <project-id>
This calls ce_get_application and returns the public URL once the app reaches ready status.
List the running instances of starwars-splash in project <project-id>
This calls ce_list_app_instances (pass instance_name for one instance; ce_get_app_instance still works) and shows:
- Instance name and revision
- Container status (
running/pending/failed) - Restart count
- Started-at timestamp
- CPU and memory allocation
MCP response — ce_get_application (once ready):
{
"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"
}
}
Step 5 — Map a custom domain (optional)
To serve the app at your own domain (e.g. myapp.example.com) you need a TLS certificate. The IBM Code Engine REST API always requires a real certificate — IBM's Console "Platform managed" option is not available via the API.
5a — Get a Let's Encrypt certificate (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 you@example.com \
--config-dir ~/certbot/config --work-dir ~/certbot/work --logs-dir ~/certbot/logs
Certbot will pause and ask you to add a TXT record:
Add TXT record: _acme-challenge.<your-domain> = <challenge-value>
Verify propagation, then press Enter. Certbot writes:
~/certbot/config/live/<your-domain>/fullchain.pem~/certbot/config/live/<your-domain>/privkey.pem
5b — Create the TLS secret in Code Engine
Ask your assistant:
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
This calls ce_create_tls_secret_from_pem — reads the PEM files from disk and stores them as a Code Engine tls secret.
MCP response — 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 — Create the domain mapping
Ask your assistant:
Map domain myapp.example.com to app my-app
in project <project-id> using TLS secret my-tls
This calls ce_create_domain_mapping and returns the cname_target.
MCP response — 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 — Update your CNAME
In your DNS provider, set:
myapp.example.com CNAME custom.<subdomain>.us-south.codeengine.appdomain.cloud
Use the cname_target value returned in 5c (it uses the custom. prefix, not the app name).
Once DNS propagates, https://<your-domain> serves the app with a valid TLS certificate.
Certificate renewal: Let's Encrypt certs expire after 90 days. Re-run certbot to get updated PEM files, then ask Copilot to run
ce_create_tls_secret_from_pemwithmoderenew— it patches the existing secret in-place so your domain mapping continues working without any changes.ce_renew_tls_secret_from_pemstill works if called directly.
Full one-shot prompt
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.
🔒 Security & Transport Model
Two kinds of credential
-
IBM Cloud API key (
IBMCLOUD_API_KEY): how the server talks to IBM Cloud. It stays on the server process. Callers never receive it. -
MCP caller credentials: who may call a tool on this server. They are never sent to IBM Cloud.
- the web admin session (
/admin, built-in useradminwithADMIN_PASSWORD), - a user, sent as
Authorization: Basic user:password(server_users), - an MCP API key, sent as
Authorization: Bearer cemcp_…(server_api_keys; the secret is shown once).
Each credential has the scopes
read,write,admin. Over stdio there are no headers; setMCP_API_KEY, orMCP_USERNAMEandMCP_PASSWORD, in the server environment. Details: Tool scope and authentication. - the web admin session (
Transports
| Mode | How to start | Endpoints |
|---|---|---|
| stdio (default) | the MCP client spawns node build/index.js |
none; the client owns stdin and stdout |
| HTTP | MCP_MODE=http PORT=8787 HOST=127.0.0.1 node build/index.js |
POST/GET/DELETE /mcp (Streamable HTTP), GET /sse and POST /messages (legacy SSE), /health, /admin, /test, /tools, /log, /docs |
One server is better than several. A stdio server is started by each client, so every IDE window gets its own process with its own memory. Its audit trace, rate limits, sessions and runtime settings are not visible to the web UI of another process. Run one HTTP server and point every client at it when you want the trace, logging, users, keys and settings to line up. The VS Code extension does exactly that by default.
Local server hardening
- Bind to
127.0.0.1unless the server is meant to be remote. On a public bind (HOST=0.0.0.0, a container) the built-inadminis disabled untilADMIN_PASSWORDis set. MCP_LOCAL_ONLY=truemakes the server answer only requests whoseHostislocalhost,127.0.0.1or[::1], so a web page that rebinds its own name to127.0.0.1cannot reach it. The VS Code extension sets it for the server it starts. Leave it off behind a reverse proxy.- The admin cookie is
HttpOnlyandSameSite=Strict; five failed sign-ins lock an address out for ten minutes; the settings export leaves secrets out.
🌐 Host Any MCP Server on Code Engine
You can use this MCP server to deploy another MCP server to Code Engine — no CLI, no Dockerfile, no YAML. The key ingredient is supergateway: a tiny bridge that wraps any STDIO-based MCP server as an HTTP + SSE endpoint, making it accessible to any remote client.
Credit: 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, …)
Any STDIO MCP server becomes a remotely accessible, auto-scaling cloud service — with no custom infrastructure.
This example deploys @tokenizin/mcp-npx-fetch, an MCP server that lets an AI assistant fetch content from public URLs.
The example files live in examples/mcp-server-supergateway/.
Step 1 — Deploy the hosted MCP server
Ask your assistant:
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.
This calls 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 response — 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
}
}
No pull secret is needed —
docker.io/supercorp/supergatewayis a public image. Code Engine scales to zero when idle; you pay only for actual requests.
Step 2 — Wait for the app to be ready
Ask your assistant:
Wait for mcp-fetch-server in project <project-id> to be ready
This calls ce_wait_for_app_ready:
{
"project_id": "<your-project-id>",
"app_name": "mcp-fetch-server",
"timeout_seconds": 120
}
MCP response — 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 }
]
}
Step 3 — Verify the running instance
Ask your assistant:
List the running instances of mcp-fetch-server in project <project-id>
This calls ce_list_app_instances:
MCP response — 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"
}
]
}
IBM Code Engine MCP 질문
IBM Code Engine MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'IBMCLOUD_API_KEY=<YOUR_IBMCLOUD_API_KEY>' code-engine-mcp-server -- npx -y code-engine-mcp-server를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
IBM Code Engine MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Docker 또는 Code Engine 명령어를 알아야 하나요?
아니요, AI 어시스턴트가 환경을 탐색하고 파이프라인을 실행하며, 사용자가 특정 명령어를 알 필요 없이 문제를 자율적으로 해결합니다.
배포 프로세스를 모니터링할 수 있나요?
네, MCP Activity Dashboard를 사용하여 도구 호출, 세션 타임라인 및 배포 결과를 실시간으로 확인할 수 있습니다.