IBM Code Engine MCP Server について
IBM Code Engine MCP Server は、MCP クライアントから IBM Code Engine のコンテナデプロイを管理するサーバーです。ローカルでのイメージビルド、レジストリへの push、クラウドリソース操作に加え、アクティビティダッシュボードと管理 UI を備えています。
主な機能
- 01Docker または Podman でのビルド
- 02IBM Container Registry へのイメージ push
- 03Code Engine リソースの管理
- 04ビルド、push、デプロイの一括実行
- 05ツール呼び出しとデプロイ状況の追跡
- 06Web 管理 UI による設定
活用シーン
- 01ローカルプロジェクトからのビルドとデプロイ
- 02Code Engine のアプリ、ジョブ、シークレットの管理
- 03デプロイ状態とツール呼び出し履歴の確認
- 04複数の MCP クライアントでのサーバー共有
MCP 対応
コンテナのビルド、IBM Container Registry、Code Engine 操作用のツールを MCP クライアントに公開します。stdio または HTTP で実行でき、複数クライアントで共有できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y code-engine-mcp-serverIBMCLOUD_API_KEYシークレットIBM Cloud API key used to authenticate and call Code Engine APIsIBMCLOUD_REGIONDefault IBM Cloud region (for example: us-south)CONTAINER_RUNTIMEOptional container runtime override: docker or podmanローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
65掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
IBM Code Engine MCP サーバー

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 どんなに小さなバグも、どんなに奇妙な構文も見逃しません。
仕組み
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 プロジェクトにデプロイしてください。」
アシスタントの自律的な思考プロセス:
- 調査: 「存在するプロジェクトと名前空間を確認します……プロジェクト
my-projectと名前空間my-namespaceが見つかりました。」 - 前提条件: 「このプロジェクトには、まだプルシークレットがありません。
.envファイルから API キーを取得して、シークレットicr-pull-secretを作成します。」 - 実行: 「それでは、ビルド → プッシュ → デプロイ → 待機という一連のパイプラインを実行します。」
- 検証: 「デプロイされていますが、『デプロイ中』のままです。ログを確認します……コンテナーは実行されていますが、レディネスプローブに失敗しています。」
- 自己修正: 「なるほど、Dockerfile の
sedパターンが nginx alpine のデフォルト設定形式(ポート 80)と一致していません。正規表現に対応したsedを使うように Dockerfile を修正して、再ビルドします。」 - 完了: 「アプリが公開されました!🎉 ステータス:準備完了。」
アシスタントからユーザーへの返答:
「アプリがデプロイされ、次の 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を設定してください。詳細:ツールのスコープと認証。 - Web 管理者セッション(
トランスポート
| モード | 起動方法 | エンドポイント |
|---|---|---|
| stdio(デフォルト) | MCP クライアントが node build/index.js を起動します | なし。stdin と stdout はクライアントが管理します |
| HTTP | MCP_MODE=http PORT=8787 HOST=127.0.0.1 node build/index.js | POST/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 エンドポイントとしてラップする小さなブリッジで、あらゆるリモートクライアントからアクセスできるようにします。
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 引数 |
|---|---|
| Fetch | npx -y @tokenizin/mcp-npx-fetch |
| Filesystem | npx -y @modelcontextprotocol/server-filesystem /data |
| Brave Search | npx -y @modelcontextprotocol/server-brave-search |
| 独自のサーバー | node /app/server.js |
ドキュメント
- セットアップ手順
- ツールリファレンス(28 個のツール、すべてのアクション)
- リモートサーバーまたは共有サーバーへの接続
- ツールのスコープと認証 — 読み取り専用、書き込み、破壊的操作の意味と、呼び出しに管理者サインインが必要となる場合
- MCP Inspector のトラブルシューティング
- VS Code MCP 拡張機能 — アクティビティダッシュボード、レシートビジュアライザー、セットアップと診断
- IBM Code Engine API(IBM Cloud)
- クライアントの例 — Cursor、VS Code、Claude、Windsurf、
mcp>CLI、ブラウザページ - クライアント README
- Cline MCP 設定例
- 行動規範
- 貢献ガイド
- メンテナー
🗂️ プロジェクト構成
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 Code | marketplace.visualstudio.com |
| Cursor / Theia / Gitpod / Codium | open-vsx.org |
ローカルの .vsix から | コマンドパレット → Extensions: Install from VSIX… |
API キーを設定する(いずれかのツールを使う前に必須):
- IBM Code Engine MCP サイドバーパネルを開きます(アクティビティバーのクラウドアイコン)
- IBM Cloud API キーを貼り付けて、Save をクリックします
(キーは VS Code SecretStorage に保存され、プレーンテキストファイルには保存されません) - 必要に応じて、同じパネルでリージョンを変更します(デフォルト:
us-south) - 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 を指定します。
- 共有 HTTP サーバー(デフォルト):拡張機能が
- Configure MCP をクリックします。これにより、
code-engineエントリ(拡張機能と同じ接続)が VS Code、Cursor、Bob、Windsurf、Cline、Antigravity、Claude Desktop の設定に書き込まれます。これらのファイルにある他のサーバー設定は保持されます。 - 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 拡張機能)
- VS Code の設定を開きます(
Cmd+,)。 - Cline: MCP Settings を検索し、Edit in settings.json を選択します。
- 次を追加します。
{
"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 と同じ設定形式を使用します。
- VS Code の設定を開きます(
Cmd+,)。 - Cline: MCP Settings を検索し、Edit in settings.json を選択します。
- 次を追加します。
{
"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 Registry | io.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_MODE | stdio | /mcp、/sse、ウェブ UI を提供するには http に設定します |
PORT | 8787 | リッスンするポート |
HOST | 127.0.0.1 | バインドアドレス。0.0.0.0 にすると公開されます |
ADMIN_USER | admin | 組み込みの管理者名 |
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
🧪 トラブルシューティング
サーバーが接続されない
- 設定内のパスが絶対パスであることを確認します
- Node.js が PATH に含まれていることを確認します:
node --version - ビルド出力が存在することを確認します:
ls build/index.js - 手動でテストします:
node build/index.js
Docker/Podman コマンドが失敗する
- インストールを確認します:
docker --versionまたはpodman --version - Docker デーモンが実行中であることを確認します
- 権限を確認します(必要に応じてユーザーを docker グループに追加します)
Code Engine コマンドが失敗する
- API キーが設定されていることを確認します:MCP クライアントの設定で
IBMCLOUD_API_KEYを確認します - リージョンが正しいことを確認します(デフォルトは
us-south、eu-esも含まれます)。必要に応じてIBMCLOUD_REGIONを設定します - プロジェクト ID が有効であることを確認します。
ce_list_projectsを使用して確認します - トークンの有効期限が切れていないか確認します。サーバーは IAM トークンを自動的に再取得します。エラーが続く場合は、IBM Cloud IAM → API keys で API キーを再生成します
🛡️ セキュリティ
- API キーをバージョン管理に絶対にコミットしないでください
- 機密データには環境変数を使用してください
- 認証には IBM Cloud IAM の使用を検討してください
- 必要に応じて MCP サーバーの権限を制限してください
📄 ライセンス
Apache License 2.0 · opensource.org/licenses/Apache-2.0
🤝 貢献
貢献を歓迎します。イシューを作成するか、プルリクエストを送信してください(貢献ガイドを参照してください)。
🙋 サポート
問題や質問がある場合:
- セットアップ手順とMCP Inspector のトラブルシューティングをご確認ください
- 再現手順とログを添えてissueを作成してください
オプション: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 小さなバグも、奇妙な構文も見逃しません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。