ClaudeにCucumber Studio MCPをつないでシナリオと実行結果を読む
Cucumber Studio MCPをClaude Codeに登録し、テストシナリオ・アクションワード・実行結果を会話で引く手順。必要な3つの認証値、読み取り用ツール14個、権限の絞り方、コミュニティ製である点の見方まで扱います。
Cucumber Studio MCPは、BDD(振る舞い駆動開発)のテスト管理サービスCucumber Studioのデータを、Claudeから読めるようにするMCPサーバーです。プロジェクト一覧、テストシナリオ、再利用できるテスト手順(アクションワード)、テストランの実行結果までを、会話の中で引けるようになります。
作っているのはCucumber Studio側ではなく、HeroSizyという個人の開発者です。Claudeのコネクタ一覧には「Anthropic verified」の表示つきで載っていますが、第三者製であることに変わりはありません。ここでは接続の手順に加えて、その前提で何を確かめておくかも扱います。
Cucumber Studio MCPで読めるもの
このサーバーが提供するのは、Cucumber Studio APIの読み取り系の操作です。ツールは全部で14個あり、名前は cucumberstudio_ で始まります。
ツール14個の守備範囲
プロジェクト(2個)
list_projectsとget_project。アクセスできるプロジェクトの一覧と、1件の詳細です。シナリオ(3個)
list_scenarios、get_scenario、find_scenarios_by_tags。タグでの絞り込みができます。アクションワード(3個)
list_action_words、get_action_word、find_action_words_by_tags。再利用するテスト手順の定義を引きます。実行まわり(6個)
list_test_runs、get_test_run、get_test_executions、list_builds、get_build、list_execution_environments。
GitHubのREADMEは、できることを「シナリオの閲覧とタグ検索」「再利用可能なテスト手順へのアクセス」「テストラン・実行・ビルド情報の参照」と説明しています。ツール名がすべて list get find で始まり、作成や更新に当たる名前は一覧にありません。手を入れる操作ではなく、読む操作に寄せた作りです。
公式のコネクタではなくコミュニティ製
Claudeのコネクタページには作者として「HeroSizy」が表示され、追加時期は2025年7月です。同じページに「信頼できる開発者のコネクタだけを使ってください。Anthropicは開発者が提供するツールを管理せず、意図どおり動くことも、後から変わらないことも確認できない」という趣旨の注意書きがあります。READMEの冒頭にも「Claude Codeで勢いよく作った」という一文があり、個人プロジェクトとして公開されたものと読めます。
ライセンスはMITです。テスト管理の中身は社内の仕様や不具合に近い情報なので、導入前にリポジトリのコードとnpmパッケージの更新履歴を一度見ておく価値があります。見るべき点は、送信先が CUCUMBERSTUDIO_BASE_URL の既定値(https://studio.cucumberstudio.com/api)だけかどうか、ログに認証情報が出ないかの2つです。
用意する認証値は3つ
アクセストークンだけを用意すれば済むわけではありません。READMEの必須環境変数は3つあります。
| 環境変数 | 中身 |
|---|---|
CUCUMBERSTUDIO_ACCESS_TOKEN | 中身APIのアクセストークン |
CUCUMBERSTUDIO_CLIENT_ID | 中身クライアントID |
CUCUMBERSTUDIO_UID | 中身ユーザーID |
READMEは、これらを「Cucumber Studioのアカウント設定から取得する」と書いています。MCPB(デスクトップ拡張)で入れる場合は、同じ3つを拡張の設定画面で入力します。画面上の名前は「Access Token」「Client ID」「User ID」です。
READMEは3つとも必須としています。トークンだけ控えて残りを忘れるのが、最初のつまずきになりやすい点です。
任意の設定もあります。
CUCUMBERSTUDIO_BASE_URL: APIの接続先。既定はhttps://studio.cucumberstudio.com/apiMCP_TRANSPORT:stdio(既定)、http、streamable-httpのいずれかLOG_LEVEL:error/warn/info/debug/trace。既定はinfoLOG_API_RESPONSES、LOG_REQUEST_BODIES、LOG_RESPONSE_BODIES: いずれも既定はfalse
Claude Codeに登録する
導入方法はREADMEに複数あります。Claude Codeで使うなら、npxで起動する標準入出力(stdio)の形が最も短く済みます。
export CUCUMBERSTUDIO_ACCESS_TOKEN="取得したトークン"
export CUCUMBERSTUDIO_CLIENT_ID="取得したクライアントID"
export CUCUMBERSTUDIO_UID="取得したユーザーID"
claude mcp add cucumberstudio --transport stdio \
--env CUCUMBERSTUDIO_ACCESS_TOKEN="$CUCUMBERSTUDIO_ACCESS_TOKEN" \
--env CUCUMBERSTUDIO_CLIENT_ID="$CUCUMBERSTUDIO_CLIENT_ID" \
--env CUCUMBERSTUDIO_UID="$CUCUMBERSTUDIO_UID" \
-- npx cucumberstudio-mcp-- の手前までがClaude Codeのオプションで、後ろの npx cucumberstudio-mcp がサーバーの起動コマンドです。--env は複数の KEY=value を受け取りますが、サーバー名が --env の直後に来ると、名前も KEY=value の1つとして読まれて拒否されます。上の例のように --transport stdio を間に挟めば避けられます。
チームで共有するなら .mcp.jsonに環境変数展開で書く
プロジェクトのルートに置く .mcp.json は、リポジトリにコミットしてチームで共有する前提のファイルです。トークンを直接書くとそのまま履歴に残ります。.mcp.json では ${VAR} の形で環境変数を展開でき、展開できる場所には env も含まれます。
{
"mcpServers": {
"cucumberstudio": {
"command": "npx",
"args": ["cucumberstudio-mcp"],
"env": {
"CUCUMBERSTUDIO_ACCESS_TOKEN": "${CUCUMBERSTUDIO_ACCESS_TOKEN}",
"CUCUMBERSTUDIO_CLIENT_ID": "${CUCUMBERSTUDIO_CLIENT_ID}",
"CUCUMBERSTUDIO_UID": "${CUCUMBERSTUDIO_UID}"
}
}
}
}READMEの mcpServers の例(NPX版)と構造は同じで、値だけを ${...} に置き換えた形です。各メンバーは自分のシェルに3つの変数を設定しておきます。未設定の変数があると、Claude Codeは claude mcp list と /mcp で変数名つきの警告を出し、${...} を展開しないままサーバーを読み込みます。
Dockerとデスクトップ拡張を選ぶ場合
Dockerを使う手もあります。READMEには herosizy/cucumberstudio-mcp というDocker Hubのイメージが載っています。
{
"mcpServers": {
"cucumberstudio": {
"command": "docker",
"args": ["run", "--rm", "-i", "--env-file", "/path/to/.env", "herosizy/cucumberstudio-mcp"]
}
}
}.env に3つの値を書いておく方式なので、シェルの環境変数を使わずに済みます。Node.jsを手元に入れたくない環境向けです。
Claude Desktopなどのデスクトップアプリで使うなら、リリースページの .mcpb ファイルを取り込む方法がREADMEで「最も簡単」とされています。Claude Codeを使う場面では上のコマンドかDockerのどちらかで足ります。
つながったかを確かめる
登録後は、まずClaude Code側でサーバーの状態を見ます。
claude mcp get cucumberstudio
claude mcp listセッション内では /mcp のパネルに、接続済みのサーバーごとのツール数が出ます。このサーバーなら14個が目安です。数が合わないときは、サーバーの状態が Failed to connect になっていないかを claude mcp get で確認します。失敗時は、HTTPステータスやエラーコードが Issue: の行に出ます。
つながったら、ツールを直接指定しなくても動きます。次のように、読み取りだけで完結する依頼から始めると安全です。
Cucumber Studioのプロジェクト一覧を出して。
そのうち「Checkout」プロジェクトのシナリオを、タグ @smoke で絞って一覧にして。前半は cucumberstudio_list_projects、後半は cucumberstudio_find_scenarios_by_tags に対応する依頼です。
権限を読み取りだけに絞る
接続しただけでは、ツールを呼ぶたびに許可を求められます。毎回の確認が煩わしいときは、サーバー単位で許可ルールを書けます。ルールは mcp__<サーバー名>__<ツール名> の形で、サーバー名は claude mcp add で付けた名前です。ここでは cucumberstudio にしたので次のようになります。
{
"permissions": {
"allow": [
"mcp__cucumberstudio__cucumberstudio_list_projects",
"mcp__cucumberstudio__cucumberstudio_list_scenarios",
"mcp__cucumberstudio__cucumberstudio_get_scenario",
"mcp__cucumberstudio__cucumberstudio_find_scenarios_by_tags",
"mcp__cucumberstudio__cucumberstudio_get_test_run",
"mcp__cucumberstudio__cucumberstudio_get_test_executions"
]
}
}mcp__cucumberstudio__* のようにワイルドカードで一括許可もできます。許可ルールのワイルドカードは、mcp__<サーバー名>__ の接頭辞が文字どおりに書かれている場合だけ有効です。
一括にするか個別にするかは、ツールの顔ぶれ次第です。いまの14個は読み取り専用に見えますが、サーバーが更新されて書き込み系のツールが増えることは、コネクタページの注意書きが想定している事態です。個別に並べておけば、新しいツールが追加されても自動では通りません。
トークン自体の権限は別の話です。READMEには、発行したトークンがどの範囲まで操作できるかの記述がありません。読み取り専用のトークンを発行できるかは、Cucumber Studio側の画面で確かめることになります。
頼み方の例とそれぞれが呼ぶツール
READMEのツール説明を作業に結びつけると、次のような使い方になります。表はツール名からの見立てで、実際にどのツールが呼ばれるかはClaudeの判断です。
| 頼みたいこと | 呼ばれるツールの見込み |
|---|---|
| リリース前に、@regressionタグのシナリオを洗い出す | 呼ばれるツールの見込みfind_scenarios_by_tags |
| シナリオの手順が使っているアクションワードの定義を見る | 呼ばれるツールの見込みget_scenario → get_action_word |
| 直近のテストランで失敗したものを調べる | 呼ばれるツールの見込みlist_test_runs → get_test_run → get_test_executions |
| どのビルド・環境で実行したかを確かめる | 呼ばれるツールの見込みlist_builds / list_execution_environments |
効果が大きいのは、実行結果の読み取りです。失敗したテストの一覧をClaudeが引き、その場でリポジトリのコードと突き合わせて原因の候補を挙げる、という流れが一つの会話で済みます。コードを読む側はClaude Codeの本業なので、結果を引いてくる側だけをMCPが担う分担になります。
ただし、ツールが返すのはCucumber Studioに登録されたデータだけです。テストの実際の実行ログまで含むかは、READMEに記載がありません。ログが必要な調べものは、CIの出力を別途渡す前提で考えると齟齬が起きにくくなります。
アクションワードの重複を探させる
BDDでは、似た意味のアクションワードが増えていくのが定番の悩みです。list_action_words で一覧を引かせ、名前や定義の近いものを挙げさせる使い方は、読み取り専用のこのサーバーでも成立します。統合する作業は、Claudeに提案だけさせ、Cucumber Studio上で人が直す運用が合います。
.featureファイル運用との使い分け
リポジトリの .feature ファイルをClaude Codeに書かせる運用は、Claude CodeでCucumber(Gherkin)の.featureを受け入れ条件にするで扱っています。そちらはコード側のGherkinが主役でした。
Cucumber Studio MCPが対象にするのは、Cucumber Studioというサービスに保存されたシナリオと実行履歴です。両者の違いは次の表のとおりです。
| 観点 | .featureをリポジトリで管理 | Cucumber Studio MCP |
|---|---|---|
| データの置き場 | .featureをリポジトリで管理Gitリポジトリ | Cucumber Studio MCPCucumber Studio(クラウド) |
| Claudeに必要なもの | .featureをリポジトリで管理ファイルを読む権限だけ | Cucumber Studio MCP認証値3つとMCPサーバー |
| 実行結果の参照 | .featureをリポジトリで管理CIの出力を別途渡す | Cucumber Studio MCPテストラン・実行情報をツールで引く |
| 向く場面 | .featureをリポジトリで管理受け入れ条件をコードと同時に書く | Cucumber Studio MCP非エンジニアが書いたシナリオの確認、実行状況の把握 |
Cucumber Studioからシナリオを書き出してリポジトリで管理しているチームなら、両方を組み合わせられます。Studio側の最新シナリオと実行結果をMCPで引き、実装の修正はリポジトリ内のファイルを見ながら進めます。
同じ「テスト管理サービスをClaudeにつなぐ」系統では、ClaudeとQaseを連携する方法があります。Qaseは公式コネクタ側の連携なので、認証や権限の考え方を比べるときの参考になります。
つまずきやすい点
- 認証値の不足: 3つとも必須です。トークンだけで済ませず、クライアントIDとユーザーIDも設定します
- HTTPトランスポートの既定値:
MCP_TRANSPORTをhttpにすると、MCP_HOSTの既定は0.0.0.0です。手元のClaude Codeから使うだけなら、既定のstdioで足ります。HTTPで動かすときは、MCP_HOSTを127.0.0.1にするなど公開範囲を意識してください - ログへの混入:
LOG_API_RESPONSESなどの既定はfalseです。デバッグでtrueにすると、テスト管理のデータがログに残ります。ログの出力先(LOG_TRANSPORT)の既定はstderrで、fileを選ぶとLOG_FILEの指定が必須です - npxのバージョン固定:
npx cucumberstudio-mcpはバージョンを指定していません。第三者のパッケージを自動で最新に追従させたくないなら、バージョンを明記します - 同名サーバーの重複: 同じ名前を複数のスコープに別の定義で登録すると、
claude mcp listと/mcpに警告が出ます
最後のバージョン固定は、実行する内容が実行のたびに変わりうるという意味で、コネクタページの注意書きと同じ点を突いています。信頼する範囲を決めたうえで、定めたバージョンを動かすのが基本です。
導入の判断材料
Cucumber Studio MCPは、読めるデータが広く、導入の手間も小さい部類です。npx一行かMCPBの取り込みで動き、Claudeのコネクタページにも掲載されています。
一方で、作者は個人で、ツールが扱うのは自社のテスト資産です。社内のセキュリティ方針でサードパーティのMCPに制限があるなら、事前にコードを見るか、Dockerのイメージを自前でビルドして使う選択肢があります。READMEにはローカルビルドの手順(npm run docker:build)も載っています。
読み取り専用のツールだけでも、シナリオの棚卸し、失敗したテストランの確認、アクションワードの重複探しといった作業は成立します。まずは許可するツールを数個に絞り、非本番のプロジェクトで試すのが無理のない始め方です。