GrowthBook
公式フィーチャーフラグの作成と読み取り、実験のレビュー、フラグタイプの生成、ドキュメントの検索、そしてGrowthBookのフィーチャーフラグ管理および実験プラットフォームとの連携を行います。
GrowthBook MCPで何ができますか?
- バンドルされたスキルの一覧表示 — アシスタントにGrowthBookエージェントのスキルを
growthbook_list_skillsで列挙してもらい、利用可能なワークフローを確認します。 - スキルの完全なガイドを読む —
growthbook_read_skillを使用して、特定のスキルに関する完全なMarkdownワークフローとガードレールを取得します。 - GrowthBook APIデータの読み取り —
growthbook_api_readを介して任意のGrowthBook RESTエンドポイントに対して認証付きGETリクエストを実行します。例:プロジェクトや機能の取得。 - GrowthBook APIへの書き込み —
growthbook_api_writeを使用して、POST/PUT/PATCH/DELETEでリソースを作成、更新、削除します。安全性のためdestructiveHintを使用します。
ドキュメント
GrowthBook MCP Thin
GrowthBook用の軽量MCPサーバーで、4つのツールを備えています:
| ツール | 用途 |
|---|---|
growthbook_list_skills | バンドルされたGrowthBookエージェントスキルを一覧表示(名前+説明) |
growthbook_read_skill | 完全なスキルMarkdown(ワークフロー+ガードレール)を返す |
growthbook_api_read | GrowthBook APIへの認証済みGETパススルー |
growthbook_api_write | 認証済みPOST/PUT/PATCH/DELETEパススルー |
機能はskillsリポジトリにあり、ビルド時にバンドルされます。機能は読み取り用と書き込み用のAPIツールに分割されており(エンドポイントごとのフォーマッタはありません)、クライアントがreadOnlyHint / destructiveHintを正しく尊重できるようになっています。
ツールにはgrowthbook_のプレフィックスが付いているため、クライアントが複数のMCPサーバーを読み込んでいる場合でも曖昧さがありません。
インストール/実行
npm install
npm run build
コンパイルされたエントリーポイントにMCPクライアントを向けます:
{
"mcpServers": {
"growthbook": {
"command": "node",
"args": ["/absolute/path/to/growthbook-mcp/server/index.js"],
"env": {
"GB_API_KEY": "your_api_key_or_pat",
"GB_API_URL": "https://api.growthbook.io"
}
}
}
}
または公開されたパッケージを実行します:
npx @growthbook/mcp
環境変数
| 変数 | 必須 | デフォルト | 用途 |
|---|---|---|---|
GB_API_KEY | stdioでは必須。HTTP OAuthでは任意 | — | GrowthBook APIキーまたは個人アクセストークン |
GB_API_URL | いいえ | https://api.growthbook.io | APIベースURL(セルフホスト)およびデフォルトのOAuth AS発行者 |
GB_MCP_TRANSPORT | いいえ | stdio | stdioまたはhttp |
GB_MCP_PORT | いいえ | 3333 | HTTPリッスンポート(transport=httpの場合) |
GB_MCP_HOST | いいえ | 127.0.0.1 | HTTPバインドホスト |
GB_MCP_URL | HTTPでは必須 | — | OAuthリソースメタデータに刻印される公開MCPベースURL(これがないとHTTPモードではサーバーが起動を拒否します) |
GB_OAUTH_ISSUER | いいえ | GB_API_URL | GrowthBook OAuth AS発行者URL |
GB_HTTP_HEADER_* | いいえ | — | 追加のリクエストヘッダー(例: GB_HTTP_HEADER_CF_ACCESS_TOKEN) |
GB_SKILLS_ENABLED | いいえ | true | false / 0に設定するとスキルツールを無効化 |
HTTP + OAuthモード
OAUTH_AS_ENABLED=1 # on the GrowthBook API
GB_MCP_TRANSPORT=http GB_API_URL=http://localhost:3100 GB_MCP_PORT=3333 npm start
クライアントは以下に接続します:
http://127.0.0.1:3333/mcp— フル(スキル+API読み取り/書き込み)http://127.0.0.1:3333/mcp/api— 機能のみ(growthbook_api_read+growthbook_api_write)
未認証のリクエストは、/.well-known/oauth-protected-resourceを指すWWW-Authenticateを含む401を受け取り、それがGrowthBook Authorization Serverを通知します。
MCPを処理する前に、サーバーはベアラートークンでGrowthBook REST(GET /api/v1/)をプローブします。そのプローブから(または後でAPIツールから)401が返ると、error="invalid_token"を含むHTTP 401が生成され、MCPクライアントは"This API key has expired"をツールエラーとして表示する代わりにリフレッシュできます。403は受け入れられたベアラーとして扱われます(権限拒否≠無効なトークン)。これにより、クライアントがリフレッシュループに陥ることを防ぎます。
機能のみモード
HTTP(リモート推奨): クライアントを/mcpではなく/mcp/apiに向けます:
{
"mcpServers": {
"growthbook": {
"url": "http://127.0.0.1:3333/mcp/api"
}
}
}
| パス | ツール |
|---|---|
/mcp | growthbook_list_skills、growthbook_read_skill、growthbook_api_read、growthbook_api_write(GB_SKILLS_ENABLED=falseでない限り) |
/mcp/api | growthbook_api_read、growthbook_api_writeのみ |
stdio / プロセス全体: スキルが登録されないように環境変数を設定します:
"env": {
"GB_API_KEY": "...",
"GB_SKILLS_ENABLED": "false"
}
スキルが無効な場合、API読み取り/書き込みツールのみが登録されます。growthbook_list_skillsとgrowthbook_read_skillは公開されません。
スキルのバンドル方法
npm run build # tsc && bundle-skills
scripts/bundle-skills.mjsは、正規のスキルチェックアウトからすべてのskills/*/SKILL.mdをserver/skills/<name>.mdにコピーします。
ソースパスの解決:
SKILLS_SRC環境変数(スキルリポジトリのルートへのパス)、または../skills(兄弟ディレクトリ)
スキルリポジトリが信頼できる情報源であり続けます。このパッケージがスキルコンテンツをフォークすることはありません。
APIツールでのスキルの使用
バンドルされたスキルはワークフローを次のように表示します:
gb-call GET /api/v1/projects
gb-call POST /api/v2/features ./payload.json
このMCPサーバーはgb-callにシェルアウトしません。GET→growthbook_api_read、およびPOST/PUT/PATCH/DELETE→growthbook_api_writeを、同じパスとオプションのJSONボディ文字列でマッピングします。サーバー指示とgrowthbook_read_skill出力にはこのブリッジに関する注記が含まれます。
ツールの詳細
growthbook_api_read / growthbook_api_write
{ "path": "/api/v1/projects" }
{ "method": "POST", "path": "/api/v2/features", "body": "{\"id\":\"my-flag\",...}" }
- 読み取り: GETのみ(
readOnlyHint: true) - 書き込み:
POST|PUT|PATCH|DELETE(destructiveHint: true) - 2xxでは生のレスポンスボディを返します
- 非2xxでは、認証失敗、セルフホストの404ヒント、レート制限に対応する実用的なエラー(
isError: true)を返します - 自由形式のパスはGrowthBook REST APIを対象とします
growthbook_list_skills / growthbook_read_skill
GB_SKILLS_ENABLEDが無効でない場合にのみ登録されます。growthbook_read_skillは完全なSKILL.mdコンテンツを返し、エージェントがワークフローの手順とガードレールに従えるようにします。
開発
# Requires a sibling checkout at ../skills (or SKILLS_SRC)
npm install
npm run build
npm start
スタンドアロンHTTPモード
デフォルトではサーバーはstdioで実行されます。GB_MCP_TRANSPORT=httpを設定すると、OAuth 2.0保護リソース面(RFC 9728メタデータ+RFC 6750 WWW-Authenticate)の背後で、/mcp(スキル+APIツール)と/mcp/api(機能のみ)でMCPを公開するスタンドアロンHTTPサーバーとして実行されます。
GB_MCP_URL(HTTPモードでは必須) — サーバーの公開ベースURL。OAuthリソース(オーディエンス)と保護リソースメタデータに刻印されるため、リクエストヘッダーから導出されることはありません。これがないとサーバーは起動を拒否します。GB_MCP_PORT(デフォルトは3333)とGB_MCP_HOST(デフォルトは127.0.0.1)。- 受信したベアラートークンはGrowthBook REST APIのプローブによって検証されます。拒否されたトークンにはHTTP
401+WWW-Authenticateが返され、クライアントはリフレッシュできます。
信頼できるネットワーク上で実行するか、ループバックにバインドしてください。マルチテナントまたはパブリックなデプロイでは、独自のゲートウェイ/認証を前面に配置してください。
リリース
リリースの作成は意図的に行います: package.jsonでバージョンを上げ、対応するv*タグをプッシュします:
git tag v2.0.0
git push origin v2.0.0
そのタグ付きコミット(リリース時点でスキルが固定されます)は以下を公開します:
@growthbook/mcpをnpmに公開 — プレリリース(-を含むバージョン、例:2.0.0-beta.1)はbetadist-tagで公開され、安定版はlatestになります- マルチアーキテクチャ(
amd64+arm64)のイメージをghcr.io/growthbook/growthbook-mcpに公開(:<version>、および安定版では:<major>、:<major>.<minor>、:latestも) - MCPレジストリへのエントリ
- GitHubリリース
npx @growthbook/mcp@<version>でリリースをインストールするか、ghcr.io/growthbook/growthbook-mcp:<version>をプルします。