お使いの開発環境でサーバーをセットアップする
セットアップ用のプロンプトをすぐにコピーして使えるよう、お使いの AI コーディングアシスタントを選択してください。Kai は Kameleoon のアプリ内 AI アシスタントであり、これらと同じツールを別途の接続手順なしで標準搭載しています。IDE から Kameleoon プロジェクトを操作させたい AI コーディングアシスタントには、専用のセットアップ用プロンプトを代わりに使用してください。
IDE ではなく Claude または ChatGPT のチャット (Web 版またはデスクトップ版) からこれらのツールを使用したい場合は、Kameleoon を Claude と ChatGPT に接続する を参照してください。
機能
サーバーを接続すると、AI エージェントは Kameleoon と連携して次のタスクを実行できます。- 実験、フィーチャーフラグ、ゴール、セグメント、トリガー、ターゲティングルールを検索および確認する。
- 実験をエンドツーエンドで構築する: 作成、複製、設定とトラフィック分割の編集、独自のコードを持つバリエーションの追加、ライフサイクル全体 (開始、一時停止、再開、停止、削除) の実行。
- フィーチャーフラグを管理する: 作成、複製、削除、環境ごとの切り替え、変更履歴の確認。
- フラグの配信を構成する: ターゲット配信ルールや実験ルール、カスタムバリエーション、型付き変数の追加。
- ゴール、オーディエンスセグメント、トリガーを作成・保守し、実験のセグメントとトリガーを設定する。
- 実験およびフィーチャーフラグ実験の結果を分析し、バリエーションの生コード (JavaScript および CSS) を取得する。
- 勝ったバリエーションからゲートされた本番ロールアウトまで、実装ライフサイクル全体を自動化する。
独自のコードを持つバリエーションを作成する
AI アシスタントは、直接の API 呼び出しを使わずに、それぞれ独自のコードを持つ複数のバリエーションを含むテストを設定できます。アシスタントに変更するページの URL と要素のセレクターを渡し、次の手順に従うよう指示してください。experiment_createを使って実験を作成する。例えば、DEVELOPER実験として作成する。experiment_createのレスポンスに含まれる、自動作成された Variation 1 の ID を使用して、experiment_variation_updateでそのコードを設定する。このバリエーションのために、2つ目のバリエーションを追加しない。- 追加のバリエーションごとに
experiment_variation_createを使い、そのnameと、必要なjsCode、cssCode、customJson、redirectionを渡す。 - 実験の閲覧対象を制限するには、
targeting_rule_updateを使って実験のセグメントまたはトリガーを設定する。実験にはすでにターゲティングルールがあるため、別のルールは作成しない。 experiment_code_getを使って各バリエーションのコードを読み戻し、保存された内容を確認する。
experiment_traffic_allocation_set で配分を設定し、running の実験では Kameleoon app で設定します。
どちらのバリエーションツールも、まず実験を確認します。draft ではない実験 (running など) の場合、ツールは変更内容のプレビューを返し、確認した後にのみ変更を適用します。
例えば、次のプロンプトを使用できます:
“On site d1alzzxd7k, create a developer experiment for https://www.example.com/pricing with two variations. Make the #buy-now button red in the first variation and green in the second.”
実験、セグメント、トリガーを編集する
AI アシスタントは、Kameleoon app を開かなくても、既存の実験の設定とターゲティングを変更できます。たとえば、draft の実験は、開始する前にゴールとトラフィック分割が必要です。アシスタントは、ゴールを追加し、トラフィック分割を設定し、実験を対象とするセグメントまたはトリガーを指定できます。 すべての実験には、ターゲティングルールが1つ付いています。アシスタントはtargeting_rule_update を使って、そのルールのセグメントまたはトリガーを変更するため、2つ目のルールを作成する必要はありません。
ライブトラフィックに影響する変更には、確認が必要です。実験が draft 以外の状態にある場合、または draft の実験以外で使用されているセグメントやトリガーの条件を変更する場合、アシスタントはまず変更内容のプレビューを返します。変更を適用するのは、確認した後だけです。MCP サーバーでは、running、deviated、または stopped の実験、あるいはパーソナライゼーションに使われている実験のトラフィック分割は変更できません。その変更は Kameleoon app で行ってください。
例えば、次のプロンプトを使用できます:
“On site d1alzzxd7k, for the draft experiment Pricing test: attach goal Purchase, split traffic 50/50 between the original and the variation, and target it to phone visitors on /pricing.”
アシスタントは、実験とゴールを見つけ、ゴールを追加し、トラフィック分割を設定します。さらに、スマートフォンの訪問者向けのセグメントと /pricing 向けのトリガーを作成し、両方を実験に紐付けます。これで、実験を開始できる状態になります。
主要ワークフロー: 勝った実験から本番環境へ
Kameleoon MCP サーバーは、実装の「ラストマイル」を自動化します。transpose_winning_experiment は、勝った (または手動で選択された) バリエーションのコードを取得し、勝者判定ロジックを 1 回の呼び出しで適用するため、AI アシスタントは結果取得とコード取得のステップを個別に連結する必要がありません。IDE を離れることなく、AI アシスタントに次のワークフローを実行するよう指示できます。
transpose_winning_experimentを実行して、勝ったバリエーションのコードと実装手順を取得する。- コードを既存のコードベースに整合したネイティブで本番対応のコード (React コンポーネントなど) に変換する。
- Kameleoon でフィーチャーフラグを作成し、新しい実装をその背後にラップする。
- 本番環境で機能を有効化して検証する。
トークン使用量とプランの検討事項
Kameleoon MCP サーバーを AI アシスタントに接続すると、利用可能なアクションを記述するツールスキーマ分の、わずかで一定のオーバーヘッドが発生します。このオーバーヘッドは、アシスタントがどのプランで動作していても一定に保たれます。 ワークフローのトークンコストは、接続そのものではなく、実行する作業そのものから生じます。使用量を左右する要因は次のとおりです。- ワークフローが取得するデータの量。完全な実験構成、バリエーションコード、変更履歴など。
- アシスタントが生成または変換するコードの量。勝ったバリエーションをネイティブのアプリケーションコードに変換する場合など。
- 単一のワークフローが対象とするサイトまたはブランドの数。3つのサイトにまたがる実験の複製と監査は、1つのサイトで同じ操作を実行する場合に比べて、トークンを比例して多く消費する。
- 単一のプロンプトの対象範囲の広さ。1つのサイトに限定した簡単な確認は、すべてのサイトのすべての実験を確認するような際限のない依頼に比べて、消費量がはるかに少ない。
利用可能なツール
サーバーは以下のツールを領域別にグループ化して公開しています。各ツールは単一かつ明確に範囲が定められたアクションに対応しているため、より大きなワークフローに組み合わせることができます (例: 結果を読み取り、コードを取得し、フラグを作成し、ルールを追加し、有効化する)。experiment_results_get、feature_flag_experiment_results_get、および transpose_winning_experiment では、goalResults 配列に、実験に紐付けられたすべてのゴール (主要ゴールおよび副次ゴール) が含まれます。Kameleoon は主要ゴールに対してのみ勝者判定を計算します。副次ゴールは、判定なしでガードレールメトリクスと同じ統計値を返します。ライブトラフィックを変更するツールは、変更内容のプレビューを表示し、確認した後にのみ変更を適用します:
feature_flag_enable、feature_flag_disable、feature_flag_delete: 常に確認が必要です。feature_flag_rule_targeted_create、feature_flag_rule_progressive_create、feature_flag_rule_experimentation_create: フラグが対象の環境ですでに有効になっている場合。experiment_update、experiment_variation_create、experiment_variation_update、targeting_rule_update: 実験が draft でない場合。experiment_traffic_allocation_set: 実験が scheduled または paused の場合。segment_updateとtrigger_update: 条件を変更し、draft の実験以外がそのセグメントまたはトリガーを使用している場合。名前の変更には確認は不要です。experiment_lifecycle_update:stoppedとdeletedの場合。
segment_delete と trigger_delete は、force を指定しない限り、使用中の項目の削除を拒否します。MCP サーバーでは、running の実験のトラフィック分割を変更できません。Kameleoon app で変更してください。フィーチャーフラグのルールツールがタイムアウトしたりゲートウェイエラーを返したりした場合、ルールがすでに作成されている可能性があります。再試行する前に feature_flag_get で確認してください。確認せずに再試行すると、ルールが重複します。実験
A/B テスト (Web Experiments) を構築、確認、実行します。フィーチャーフラグ
フィーチャーフラグの作成と運用、環境ごとの切り替え、履歴と結果の読み取りを行います。ルール、バリエーション、および変数
フラグがユーザーに価値を届ける方法を形成します: 配信ルールと実験ルールを追加し、提供するバリエーションと型付き変数を定義します。ゴール
実験とフラグで使用されるコンバージョンゴールを作成・保守します。サイト
アクセス可能なプロジェクトを確認します。ほかのほとんどのツールはサイトコードを必要とするため、まずここから始めてください。セグメント
ターゲットとするオーディエンスを定義し、確認します。セグメントの条件は最大 2 階層までです。最上位の
AND または OR で結合された条件のグループで構成します。ツールは、2 階層より深い条件ツリーをフラット化せずに、説明を添えて拒否します。フラット化すると対象範囲が広がるおそれがあるためです。AI アシスタントに、条件ツリーを 2 階層で書き直すよう依頼してください。トリガー
キャンペーンがいつ実行されるかを定義します。トリガーは、いつ実行されるか (訪問者がページに到達したとき、イベントが発生したとき、訪問回数が設定した数を超えたときなど) を指定し、セグメントは誰を対象にするかを指定します。実験のターゲティングルールには、トリガーとセグメントが 1 つずつ含まれます。トリガーの条件では、ページ、訪問、時間、イベントの種類を指定できます。たとえば
PAGE_URL、VISITS、TIME_RANGE、EVENT です。DEVICE_TYPE、GEOLOCATION、BROWSER などの訪問者の属性はセグメントに含めるもので、トリガーではこれらを拒否します。これらのツールでは、実験のターゲティングルールに対して Kameleoon が作成したトリガーを編集できません。そのようなトリガーには targeting_rule_update を使用してください。ターゲティングルール
セグメント (誰が実験を見るか) とトリガー (いつ発火するか) を実験に紐付けます。Claude Code 連携
ステップ 1: サーバーの登録
サーバーをユーザープロファイル用に登録 (すべてのプロジェクトで利用可能) するには、ターミナルを開いて次のコマンドを実行します。.mcp.json ファイルがリポジトリに追加されます) する場合は、次を実行します。
kameleoon: ... - ✗ Failed to connect (まだ認証を完了していないため、ここでの接続失敗は正常です)。
ステップ 2: OAuth 認証の完了
同じターミナルで、ログインフローをトリガーします。- コマンドは自動的にブラウザタブを開きます。開かない場合は、ターミナルに表示された URL をコピーして手動で開きます。
- Kameleoon アカウントにサインインします。
- Authorize をクリックします。
- ブラウザに成功メッセージが表示されたら、ターミナルで
Ctrl+Cを押します。
kameleoon: ... - ✓ Connected
ステップ 3: 新しい Claude Code セッションを開始する
Claude Code は、サーバー登録後に開始したセッションでのみ、新しく追加された MCP サーバーのツールを利用可能にします。現在の Claude Code チャットを閉じて、新しいチャットを開きます。ステップ 4: 接続の確認
新しい Claude Code 会話で、次のプロンプトを試します。- “List the Kameleoon feature flags.”
- “What experiments are running on site X?”
- “Show the status of experiment Y.”
- “Show the code for variation 1 of experiment Z.”
Claude のトラブルシューティング
Antigravity 連携
クイックセットアップ
次のセルフスタータープロンプトを Antigravity チャットに直接貼り付けると、自動的に接続できます。手動構成
~/.gemini/antigravity/mcp_config.json の構成ファイルを編集し、次の JSON ブロックを追加します。
Codex 連携
クイックセットアップ
次のセルフスタータープロンプトを Codex チャットに貼り付けます。手動構成
次のブロックを~/.codex/config.toml に追加します。ファイルが存在しない場合は作成してください。
接続の認証
Kameleoon MCP サーバーは OAuth を使用します。ターミナルで次のコマンドを実行して、認可フローを開始します。- ブラウザが自動的にウィンドウを開きます。
- Kameleoon ログインページで Authorize をクリックします。
- Kameleoon がポート 35535 でローカルコールバックを完了します。
- ターミナルでプロキシが正常に接続されたことが確認されます。
ツール操作の確認
認証後、次のチェックを実行してツールが期待通りに動作することを確認します。- 利用可能なツールを一覧表示する:
tools/listが成功し、Kameleoon ツールを返すことを確認します。出力にツール表に記載されたツール (experiment_code_get、feature_flag_list、feature_flag_createなど) が含まれていることを確認します。 - フィーチャーフラグの取得:
feature_flag_list(siteCode = "d1alzzxd7k")を実行します。応答が成功すると、指定したサイトのフィーチャーフラグのリストが返されます。 - 実験結果の取得:
experiment_results_get(experimentId = 149640)を実行します。応答が成功すると、実験名、サイトコード、タイプ、ステータスが含まれます。
Cursor 連携
Cursor は、MCP ツールを IDE のチャットサイドバーに直接統合するため、コーディング中に利用できます。オプション 1: Cursor UI で構成 (推奨)
- Cursor の設定を開きます (macOS では
Cmd+Shift+J、Windows/Linux ではCtrl+Shift+J)。 - Features > MCP Servers > + Add New MCP Server に移動します。
- Name を
kameleoonに設定します。 - Type を
commandに設定します。 - 次の文字列を Command として入力します。
- 構成を保存します。
オプション 2: mcp.json で構成 (上級)
~/.cursor/mcp.json を開き (ファイルが存在しない場合は作成)、次のエントリを mcpServers オブジェクトに追加します。
ファイルを手動で編集した後は、Cursor を再起動してください。
開発者ワークフロー向けのサンプルプロンプト
Kameleoon MCP サーバーを接続したら、IDE で次のようなプロンプトを使用します。- “List the Kameleoon MCP tools available in this session.”
- “Show all feature flags for site code
d1alzzxd7k.” - “Get the details for feature flag new_search on site
d1alzzxd7k.” - “Fetch experiment results for experiment
149640and summarize the current status.” - “Pull the variation code for experiment
<experimentId>and variation<variationId>.”
- “Inspect feature flag new_search for site
d1alzzxd7kand explain what environments and variations it has.” - “Summarize experiment
149640for an engineer. Include status, site code, winner state, and whether any variation data is available.” - “List the active feature flags for site
d1alzzxd7kand point out any flags that look like stale candidates.” - “Retrieve the code for variation
<variationId>in experiment<experimentId>and explain what frontend behavior it changes.” - “Create a new feature flag named
<name>with key<featureKey>for sited1alzzxd7k.” - “Turn on feature flag
<featureKey>in the staging environment for sited1alzzxd7k.” - “Turn off feature flag
<featureKey>in the production environment for sited1alzzxd7k.”
高度なワークフロー: エンドツーエンドの自動化
transpose_winning_experiment は勝者チェックとコード取得を 1 回の呼び出しで賄いますが、そのコードを変換して展開する作業には、明示的なシステムプロンプトが引き続き役立ちます。次の例は React アプリケーション向けで、AI エージェントにそのツールを呼び出させた後、実装ライフサイクルを完了させます。すなわち、コードの変換、新しいフィーチャーフラグの背後へのゲート、そしてロールアウトまでを、すべて MCP ツールを介して行います。
次のプロンプトを AI アシスタントに貼り付けます。
ツールパラメータリファレンス
tools/list が返す正確なツール名とパラメータ名を使用してください。ライブ MCP スキーマは次のパラメータをサポートします。
実験
experiment_create は type の有効な値として MVT と SDK_HYBRID を受け付けますが、どちらもこのツールでは実際には作成できません。MVT は、API が作成時に mvtVariations(セクションとバリエーション)を必須としているにもかかわらず、それを指定できる MCP ツールがないため、常に失敗します。SDK_HYBRID は、送信するペイロードの内容に関わらず、常に「Incorrect Experiments type」エラーで失敗します。AI、CLASSIC、DEVELOPER、PROMPT はいずれも正常に作成できます。多変量テストの実験を作成するには、多変量テストの実験を作成する の手順に従って、Automation API を直接呼び出してください。バリエーションのツールは、stopped の実験、MVT 実験、フィーチャーフラグ実験をサポートしていません。フィーチャーフラグのバリエーションには、
feature_flag_variation_create を使用してください。MCP サーバーでは、running の実験、またはバンディットの配分方法を使用している実験のトラフィック分割は変更できません。フィーチャーフラグ
ルール、バリエーション、および変数
ゴール
サイト
セグメント
トリガー
保存済みトリガーを実験に紐付けるには、
targeting_rule_update を呼び出し、triggerConfiguration を SAVED_TEMPLATE、targetingConfigurationParam をトリガー ID に設定します。
ターゲティングルール
受け入れられる列挙値:
experiment_lifecycle_update.status は started、resumed、paused、stopped、または deleted です。実験の type は AI、CLASSIC、DEVELOPER、MVT、PROMPT、または SDK_HYBRID です。ゴールの type は CLICK、CUSTOM、SCROLL、PAGE_VIEWS、URL、TIME_SPENT、RETENTION_RATE、WAREHOUSE、または RATIO_METRICS です。variableType は BOOLEAN、NUMBER、STRING、JSON、JS、CSS、または ENUM です。trafficAllocations は、合計が 100 になる variationKey:percentage のカンマ区切り文字列です (例: off:50,on:50)。releaseDateTime はオフセットなしの ISO-8601 ローカル日時 (例: 2026-07-01T09:00:00) で、timeZone は IANA ゾーン (例: Europe/Paris または UTC) です。trafficAllocationMethod は MANUAL (既定値)、MULTI_ARMED_BANDIT、または CONTEXTUAL_BANDIT です。frequencyUnit は MINUTES、HOURS、または DAYS です。audienceBasis は VISITORS (既定値) または VISITS です。segmentConfiguration は ALL_VISITORS、AUTOPROMO_AUTODEFINED、GRAPHICAL_PAGES、HEAT_SLICE、PAGE、SAVED_TEMPLATE、SITE、または URL で、triggerConfiguration は ALL_VISITORS を除いて同じ値を取ります。targetingConfigurationParam の入力は、SAVED_TEMPLATE の場合は保存済みトリガーの ID、HEAT_SLICE の場合はセグメントの ID、PAGE の場合は完全な URL、URL の場合は URL フラグメントです。
プロンプトのヒント
- フィーチャーフラグを操作する際は、サイトコードを含めてください。
- 実験や実験結果を照会する際は、実験 ID を含めてください。
- バリエーションコードをリクエストする際は、
experimentIdとvariationIdの両方を含めてください。 - エージェントにフィーチャーフラグの有効化または無効化を依頼する際は、対象環境を明示的に指定してください。
- AI エージェントが生データを取得するだけでなく、MCP の応答を解釈することを希望する場合は、平易な英語のサマリーを要求してください。
一般的なトラブルシューティング
ポート 35535 がすでに使用中
認証がEADDRINUSE エラーで失敗する場合、別のプロセスがすでに OAuth コールバックポートをリスニングしています。
- 原因: 以前の認証試行から残った古い
mcp-remoteプロセスがまだアクティブです。 - 対処方法: ポート 35535 を使用している古いプロセスを停止して、OAuth コマンドを再実行します。
MCP サーバーが Codex チャットに表示されない
Codex は、新しく追加された MCP サーバーを既に実行中のスレッドへホットリロードしないことがあります。- 対処方法:
config.tomlを更新した後、Codex を更新するか、新しいセッションを開始します。
ブラウザフローが完了しない
OAuth ブラウザウィンドウは開くが認証が完了しない場合:- Kameleoon ログインページで Authorize ボタンをクリックしたことを確認します。
- ブラウザまたはシステム設定が
localhostコールバックをブロックしていないか確認します。 - ブラウザが自動的に起動しない場合は、コールバック URL を手動で開きます。
ツールが変更せず BLOCKED を返す
ライブトラフィックを変更するツールは、確認するまでBLOCKED ステータスのプレビューを返します。BLOCKED はエラーを示すものではありません。
- 対処方法: プレビューを確認し、意図した変更であれば、AI アシスタントに
confirmをtrueに設定して呼び出し直すよう依頼してください。segment_deleteとtrigger_deleteの場合は、代わりにforceを使用します。
ヘッドレスまたはリモートエージェントが認証に失敗する
リモートまたはヘッドレスエージェント (クラウドホスト型 Codex など) は、ブラウザベースの認可ステップを完了できません。- 対処方法: 代わりにツールのデスクトップ版を使用してください。
npx コマンドが見つからない
コマンドが「not found」エラーで失敗する場合、npx がシステムパス上で利用可能であることを確認してください。Node.js バージョン 8.2 以降には、デフォルトで npx が含まれています。