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 のコンテナデプロイを管理するサーバーです。ローカルでのイメージビルド、レジストリへの push、クラウドリソース操作に加え、アクティビティダッシュボードと管理 UI を備えています。

主な機能

  1. 01Docker または Podman でのビルド
  2. 02IBM Container Registry へのイメージ push
  3. 03Code Engine リソースの管理
  4. 04ビルド、push、デプロイの一括実行
  5. 05ツール呼び出しとデプロイ状況の追跡
  6. 06Web 管理 UI による設定

活用シーン

  1. 01ローカルプロジェクトからのビルドとデプロイ
  2. 02Code Engine のアプリ、ジョブ、シークレットの管理
  3. 03デプロイ状態とツール呼び出し履歴の確認
  4. 04複数の MCP クライアントでのサーバー共有

MCP 対応

コンテナのビルド、IBM Container Registry、Code Engine 操作用のツールを MCP クライアントに公開します。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 サーバー

Code Engine MCP サーバー — IBM Cloud のロケットとコンテナのロゴ

IBM Code Engine 向け MCP サーバー — 自然言語を使って、Cursor、Copilot、Claude、Cline からコンテナをビルド、プッシュ、デプロイできます。

現在のリリース:v1.7.8 — 112 個ではなく 28 個のツール(リソースごとに 1 つのツールを用意し、action フィールドを使用します。機能は同じで、従来の名前も引き続き使用できます)、VS Code 拡張機能向けの共有ローカル HTTP サーバー、Remote client タブを備えたウェブ管理 UI(ツールのテスト、ログ記録、ユーザーと 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 どんなに小さなバグも、どんなに奇妙な構文も見逃しません。


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

✨ 提供する機能

  • リソースごとに 1 つ、合計 28 個のツール。 ce_app、ce_job、ce_secret、…はそれぞれ action(list、get、create、delete、…)を受け取ります。以前の機能はすべて引き続き利用できます。ツールリファレンスをご覧ください。
  • Docker または Podman 向けのコンテナワークフローツール(local_container、dockerfile)
  • IBM Container Registry(icr)と Code Engine の全機能:プロジェクト、アプリ、ジョブ、ビルド、シークレット、構成マップ、ドメイン、バインディング、関数、フリート
  • 複数ステップの手順:1 回の呼び出しでビルド、プッシュ、デプロイ(proc_build_push_deploy)、カスタムドメイン、宣言型マニフェスト
  • 1 つのサーバーを複数のクライアントで共有。 stdio 経由で実行するか、IDE、アシスタント、ウェブ UI、VS Code 拡張機能がすべて共有する HTTP サーバーとして実行できます
  • ウェブ管理 UI(/admin):概要、アクティビティ、ユーザー、API キー、ランタイム設定、およびツールのテストとサーバー設定(ログ記録、ユーザーとキー、イベント)を行う Remote client タブ
  • GitHub Copilot、Cursor、Cline、Bob、Windsurf、Antigravity、Claude Desktop、および vscode-extension/ にある VS Code 拡張機能(MCP Remote Config を含む)向けの MCP 対応セットアップ
  • MCP アクティビティダッシュボード — ツール呼び出しのライブタイムライン、セッションのグループ化、デプロイ結果のハイライト、デプロイ一覧タブ
  • ライブアクティビティログ記録 — 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 クライアントを設定します。

🤖 エージェントによる操作体験(Docker/Code Engine の用語を知らなくても大丈夫です)

この MCP サーバーの真価は、Docker や Code Engine のコマンドを知っている必要がないことです。目標を伝えるだけで、LLM が環境を調べ、パイプラインを実行し、問題を自律的に解決します。

実際のセッションでのやり取りの例を紹介します。

ユーザー:

「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. 完了: 「アプリが公開されました!🎉 ステータス:準備完了。」

アシスタントからユーザーへの返答:

「アプリがデプロイされ、次の URL で公開されています:https://developer-splash.<subdomain>.<region>.codeengine.appdomain.cloud。Dockerfile のポート設定に小さな問題があったため修正しましたが、現在は正常に稼働しています!」

この MCP サーバーを使うと、AI が専門の DevOps エンジニアとしてあなたと協力します。

📊 MCP アクティビティダッシュボード(v1.4.0)

ツール呼び出し、各ステップ間のアイドル時間、デプロイ結果、アプリのライブ URL など、AI アシスタントの動作をリアルタイムで確認できます。

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: Open MCP Activity Dashboard
ブラウザー(開発リポジトリ)npm run dashboard → http://localhost:8767/
ライブ更新ブラウザーではデフォルトで有効です。パネル内で切り替えるか、codeEngineMcp.activityLiveRefresh(拡張機能)を設定してください

アクティビティタブには、ツールの所要時間、アイドル時間、タスク結果のバナー(ステータス、イメージ、ライブ URL)を含むセッションのタイムラインが表示されます。デプロイタブには、Code Engine のプロジェクトとアプリが一覧表示され、MCP ツールを使った詳細の取得、再デプロイ、削除ができます。

チャットプロンプトの例:

「examples/starwars-splash にある Star Wars のスプラッシュページを、MCP ツールだけを使って Code Engine にデプロイしてください。linux/amd64 向けにビルドし、ICR 名前空間にプッシュして、Code Engine プロジェクトにデプロイします。準備ができたらライブ URL を教えてください。」

アシスタントの実行中にアクティビティダッシュボードを開くと、proc_build_push_deploy の進行状況をステップごとに確認できます。

最初のアプリをデプロイする

このガイドでは、付属の Star Wars スプラッシュページの例(静的な nginx コンテナー)を、すべて MCP サーバー経由でデプロイします。

**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 — レジストリのプルシークレットを作成する

アシスタントに依頼します(プロジェクトごとに 1 回)。

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 を呼び出し(1 つのインスタンスには 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>

伝播を確認してから、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.

🔒 セキュリティとトランスポートモデル

2 種類の認証情報
  • 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

複数のサーバーより、1 つのサーバーが適しています。 stdio サーバーはクライアントごとに起動されるため、IDE のウィンドウごとに専用のメモリを持つプロセスが作成されます。監査トレース、レート制限、セッション、ランタイム設定は、別のプロセスの Web UI からは参照できません。トレース、ログ記録、ユーザー、キー、設定を一元化したい場合は、HTTP サーバーを 1 つ起動し、すべてのクライアントをそこに接続してください。VS Code 拡張機能はデフォルトでこの方法を使用します。

ローカルサーバーのセキュリティ強化
  • サーバーをリモートで使用するのでなければ、127.0.0.1 にバインドしてください。パブリックなアドレス(HOST=0.0.0.0、コンテナー)にバインドすると、ADMIN_PASSWORD が設定されるまで組み込みの admin は無効になります。
  • MCP_LOCAL_ONLY=true を設定すると、Host が localhost、127.0.0.1、[::1] のいずれかであるリクエストにのみサーバーが応答します。これにより、名前を 127.0.0.1 に再バインドする Web ページからアクセスできなくなります。VS Code 拡張機能は、起動するサーバーにこの設定を適用します。リバースプロキシの背後では無効のままにしてください。
  • 管理者用 Cookie は HttpOnly と SameSite=Strict に設定されています。サインインに 5 回失敗すると、そのアドレスは 10 分間ロックアウトされます。設定のエクスポートにはシークレットは含まれません。

🌐 Code Engine であらゆる MCP サーバーをホスト

この MCP サーバーを使うと、CLI、Dockerfile、YAML を使わずに、別の MCP サーバーを Code Engine にデプロイできます。重要な役割を果たすのは 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 サーバーをリモートからアクセス可能な自動スケーリング対応のクラウドサービスにできます。

この例では、公開 URL からコンテンツを取得できる AI アシスタント向けの MCP サーバー、@tokenizin/mcp-npx-fetch をデプロイします。

サンプルファイルは 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 クライアントを接続する

ローカルクライアント向けに HTTP+SSE エンドポイントを STDIO に戻すブリッジとして、mcp-remote を使用します。

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 ツールが一覧に表示され、インスペクターから直接呼び出せます。

すべてをまとめたプロンプト
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 管理 UI と運用
  • /admin でサインイン:概要、リモートクライアント(スキーマ駆動型フォームから任意のツールを呼び出し、アクティビティログと監査トレースのオン/オフを切り替え、ユーザーと MCP API キーを作成し、イベントを待ち受けます)、アクティビティ、イベント、ユーザー、API キー、ランタイム
  • ツールごとのスコープと認証、レート制限、プロトコルの切り替え、設定、ログのエクスポート(シークレットを含みません)
VS Code 拡張機能
  • セットアップと診断のサイドバー、すべての IDE 向けの Configure MCP、MCP Remote Config パネル、アクティビティダッシュボード、レシートビジュアライザー
  • 共有 HTTP サーバー(デフォルト)または stdio、あるいはリモートサーバーの URL を選択でき、サーバーが code-engine MCP サーバーであることを確認します
  • 詳細:vscode-extension/README.md
開発者エクスペリエンス
  • MCP アクティビティダッシュボード — セッションのタイムライン、アイドル時間の可視化、デプロイ結果バナー、デプロイメントの一覧タブ
  • ライブアクティビティログ — 入力の概要、パイプラインのサブステップ、HTTP プローブのハイライトを含む JSONL イベントストリーム

⚙️ 設定

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 からコマンドパレット → Extensions: Install from 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 でサーバーを 1 つ起動し、チャット、IDE の MCP リスト、ウェブ UI、MCP Remote Config がすべてそれを使用します。ウェブ UI には admin / admin でサインインしてください(設定 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 からツールが見えない場合は、一度 コマンドパレット → Reload Window を実行してください。

詳細:vscode-extension/README.md。


方法 B — MCP 設定のみ(拡張機能なし)

この方法は、MCP 対応のあらゆるクライアントで使用できます。拡張機能なしの GitHub Copilot、Cline、Bob、Claude Desktop、Cursor などに対応しています。

API キーの設定場所(いずれか1つを選択)

オプション1 — シェル環境変数(最も安全)

用意されているテンプレートをコピーし、キーを入力します。

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

または、すべての新しいターミナルでキーを使えるように、シェルのプロファイルに export を追加します。

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

使用可能なすべての変数(IBMCLOUD_REGION、CONTAINER_RUNTIME、DEBUG)については、.env.example をご覧ください。

値を埋め込まずに、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 の入力置換構文です。起動時にシェル環境から値を読み取るため、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 キーの設定方法から1つ選んで貼り付けます。その後、サーバーを再起動します。 Cmd+Shift+P → MCP: Restart Server → 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 モードで一度起動し、各クライアントから接続します。同じ手順で、ノート PC、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. クライアントの設定

Streamable HTTP に対応する VS Code、Cursor、Windsurf など(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 を開くと、ツール数、呼び出しログ、設定を確認できます。


シェルでキーをエクスポートしている場合は ${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 設定を行いたい場合は、npm パッケージを直接使用してください(Cline、Claude Desktop、Cursor、その他のクライアントに対応しています)。

💬 プロンプトの例

コンテナランタイムの検出

アシスタントに次のように尋ねます:

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 フィールドを受け取るため、1 つのツールでそのリソースの一覧表示、取得、作成、更新、削除、その他の操作を実行できます。以前の 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_*)は複数のステップを 1 回の呼び出しにまとめます。たとえば、ビルド、プッシュ、イメージの待機、デプロイを実行します。 | ツール | 種類 | 用途 | |---|---|---| | describe_server | 読み取り専用 | 検出ツール:サーバーのバージョン、IBM Cloud API キーの状態、サポート対象の CE リージョン、公開されているツールカタログ | | list_schemas | 読み取り専用 | すべてのスキーマ ID を一覧表示します。データスキーマ(server、settings、log、error)と、ツール名ごとに 1 つのスキーマが含まれます | | get_schema | 読み取り専用 | list_schemas から 1 つのスキーマを取得します | | 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 | 読み取り専用 | 1 つの Code Engine アプリに関する読み取り専用の診断:実行中のインスタンス、ログ、Kubernetes イベント(起動しない理由)、リビジョン(ロールバック先) | | ce_job | 削除または停止の可能性あり | Code Engine ジョブ定義(処理が完了するまで実行されるバッチ処理) | | ce_job_run | 削除または停止の可能性あり | Code Engine ジョブの実行 | | ce_build | 削除または停止の可能性あり | Code Engine ビルド構成:Git から IBM Cloud 上でコンテナイメージをビルドします(ローカルの Docker は不要) | | ce_build_run | 書き込み | Code Engine ビルドの実行 | | ce_secret | 削除または停止の可能性あり | Code Engine シークレット:汎用のキー/値、レジストリのプル認証情報、TLS、SSH | | ce_config_map | 削除または停止の可能性あり | Code Engine ConfigMap:アプリとジョブ向けの、シークレットではないキー/値設定 | | ce_domain_mapping | 削除または停止の可能性あり | Code Engine アプリ向けのカスタムドメイン | | ce_binding | 削除または停止の可能性あり | サービスバインディング:IBM Cloud サービスインスタンスを(その service_access シークレットを介して)Code Engine アプリまたはジョブに接続します | | ce_function | 削除または停止の可能性あり | Code Engine のサーバーレス関数(コンテナイメージではなくコード) | | ce_fleet | 削除または停止の可能性あり | Code Engine フリート:タスクキューを処理する大規模なワーカープール | | proc_build_push_deploy | 書き込み | 手順:コンテナパイプライン全体を 1 ステップで実行します — Podman または Docker を自動検出し、linux/amd64 向けにビルドし、IBM Container Registry(ICR)にプッシュし、Code Engine アプリを作成または更新して、準備完了まで待機し、公開 URL を返します | | proc_setup_custom_domain | 書き込み | 手順:カスタムドメインを 1 ステップで設定します — ディスクから 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 サーバー自身の呼び出しログと送信イベントのサブスクリプション | 種類: 読み取り専用ツールは参照のみを行います。書き込みツールは何かを作成または変更します。削除または停止可能とは、少なくとも1つのアクションで何かを削除または停止することを意味するため、アシスタントは確認を求める必要があります。

🔐 環境変数

IBM Cloud

  • IBMCLOUD_API_KEY:IBM Cloud API キー(Code Engine とレジストリーの操作に必須)
  • IBMCLOUD_REGION:デフォルトの IBM Cloud リージョン(省略可、デフォルトは us-south)
  • CONTAINER_RUNTIME:docker または podman を強制的に使用します

HTTP モードとウェブ UI

変数デフォルト用途
MCP_MODEstdio/mcp、/sse、ウェブ UI を提供するには http に設定します
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 Activity Dashboard と .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

🤝 貢献

貢献を歓迎します。イシューを作成するか、プルリクエストを送信してください(貢献ガイドを参照してください)。

🙋 サポート

問題や質問がある場合:


オプション: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技術的な E2E フロー
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 小さなバグも、奇妙な構文も見逃しません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。