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_readGrowthBook 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_KEYstdioでは必須。HTTP OAuthでは任意GrowthBook APIキーまたは個人アクセストークン
GB_API_URLいいえhttps://api.growthbook.ioAPIベースURL(セルフホスト)およびデフォルトのOAuth AS発行者
GB_MCP_TRANSPORTいいえstdiostdioまたはhttp
GB_MCP_PORTいいえ3333HTTPリッスンポート(transport=httpの場合)
GB_MCP_HOSTいいえ127.0.0.1HTTPバインドホスト
GB_MCP_URLHTTPでは必須OAuthリソースメタデータに刻印される公開MCPベースURL(これがないとHTTPモードではサーバーが起動を拒否します)
GB_OAUTH_ISSUERいいえGB_API_URLGrowthBook OAuth AS発行者URL
GB_HTTP_HEADER_*いいえ追加のリクエストヘッダー(例: GB_HTTP_HEADER_CF_ACCESS_TOKEN)
GB_SKILLS_ENABLEDいいえtruefalse / 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"
    }
  }
}
パスツール
/mcpgrowthbook_list_skillsgrowthbook_read_skillgrowthbook_api_readgrowthbook_api_write(GB_SKILLS_ENABLED=falseでない限り)
/mcp/apigrowthbook_api_readgrowthbook_api_writeのみ

stdio / プロセス全体: スキルが登録されないように環境変数を設定します:

"env": {
  "GB_API_KEY": "...",
  "GB_SKILLS_ENABLED": "false"
}

スキルが無効な場合、API読み取り/書き込みツールのみが登録されます。growthbook_list_skillsgrowthbook_read_skillは公開されません。

スキルのバンドル方法

npm run build   # tsc && bundle-skills

scripts/bundle-skills.mjsは、正規のスキルチェックアウトからすべてのskills/*/SKILL.mdserver/skills/<name>.mdにコピーします。

ソースパスの解決:

  1. SKILLS_SRC環境変数(スキルリポジトリのルートへのパス)、または
  2. ../skills(兄弟ディレクトリ)

スキルリポジトリが信頼できる情報源であり続けます。このパッケージがスキルコンテンツをフォークすることはありません。

APIツールでのスキルの使用

バンドルされたスキルはワークフローを次のように表示します:

gb-call GET /api/v1/projects
gb-call POST /api/v2/features ./payload.json

このMCPサーバーはgb-callにシェルアウトしませんGETgrowthbook_api_read、およびPOST/PUT/PATCH/DELETEgrowthbook_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)はbeta dist-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>をプルします。