GrowthBook

官方

建立與讀取功能旗標、檢視實驗、產生旗標類型、搜

你可以用 GrowthBook MCP 做什麼?

  • 列出可用技能 — 請助理呼叫 growthbook_list_skills 以查看頂層 GrowthBook 工作流程入口點及其描述。

  • 載入技能工作流程 — 使用 growthbook_read_skill 取得完整技能的 markdown,包括子工作流程,例如 feature-flags/references/flag-create。

  • 讀取 GrowthBook 資料 — 請助理以 /api/v1/projects 這類路徑呼叫 growthbook_api_read,透過已驗證的 GET 請求取得資料。

  • 寫入 GrowthBook API — 使用 growthbook_api_write 建立或修改資源,例如以 JSON 內文 POST 到 /api/v2/features 以建立新旗標。

  • 尊重讀取/寫入權限 — 伺服器會公開 readOnlyHint 和 destructiveHint,讓用戶端能安全地區分唯讀與變更操作。

文件

GrowthBook MCP Thin

一個用於 GrowthBook 的精簡 MCP 伺服器,提供四個工具:

工具用途
growthbook_list_skills列出頂層技能入口點(名稱 + 描述)
growthbook_read_skill回傳列出的技能或合格的子工作流程(feature-flags 或 feature-flags/references/flag-create)
growthbook_api_read已驗證的 GET 直通至 GrowthBook API
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 模式必填—公開 MCP 基礎 URL,寫入 OAuth 資源中繼資料(伺服器在 HTTP 模式下若缺少此值將拒絕啟動)
GB_MCP_KEEP_ALIVE_TIMEOUT_MS否90000HTTP 模式下的閒置 keep-alive 逾時。必須大於前方任何負載平衡器的閒置逾時,否則 LB 可能重用伺服器已關閉的連線,導致請求失敗並回傳 502
GB_OAUTH_ISSUER否GB_API_URLGrowthBook 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)

未驗證的請求會收到 401,其中 WWW-Authenticate 指向 /.well-known/oauth-protected-resource,該處公告 GrowthBook 授權伺服器。

在處理 MCP 之前,伺服器會使用 bearer 權杖探測 GrowthBook REST(GET /api/v1/)。該探測(或稍後來自 API 工具)回傳的 401 會產生 HTTP 401 與 error="invalid_token",以便 MCP 用戶端可以重新整理——而非將 "This API key has expired" 顯示為工具錯誤。403 被視為已接受的 bearer 權杖(權限拒絕 ≠ 無效權杖),因此用戶端不會被迫進入重新整理迴圈。

僅能力模式

HTTP(遠端建議): 將用戶端指向 /mcp/api 而非 /mcp:

{
  "mcpServers": {
    "growthbook": {
      "url": "http://127.0.0.1:3333/mcp/api"
    }
  }
}
路徑工具
/mcpgrowthbook_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>/SKILL.md                   → server/skills/<skill>/SKILL.md
skills/<skill>/references/<workflow>.md   → server/skills/<skill>/references/<workflow>.md

來源路徑解析:

  1. SKILLS_SRC 環境變數(技能儲存庫根目錄的路徑)
  2. agent-skills.local.json — { "path": "../skills" },相對於儲存庫根目錄。已被 gitignore;複製 agent-skills.local.json.example
  3. skills-src/ — CI 和 Docker 建置所供應的內容

沒有隱含的兄弟目錄查詢。../skills 解析為該路徑上恰好存在的任何內容,這會使本機建置與 CI 建置所依據的提交靜默地不一致。

CI、雲端部署和發布都讀取 agent-skills.lock.json 並檢出 該確切的技能提交。要發布上游技能變更,請更新鎖定檔案中的提交。 本機開發可以透過 agent-skills.local.json 或 SKILLS_SRC 指向任何檢出。

技能儲存庫保持為事實來源——此套件不維護 技能內容的分支。新技能會自動流入,除了 bundle-skills.mjs 中小型封鎖清單中列出的技能。目前僅 gb-setup 被 封鎖,因為它配置 gb-call shell 介面卡而非 GrowthBook 本身。

每個技能的 scripts/ 目錄不會被複製。相對的 `references/foo.md` 連結會被重寫為合格的 `feature-flags/references/foo` paths so growthbook_read_skill 可以解析 它們。

使用技能與 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 時,回傳可操作的錯誤(isError: true),涵蓋驗證失敗、自架 404 提示和速率限制
  • 自由形式路徑目標為 GrowthBook REST API

growthbook_list_skills / growthbook_read_skill

僅在 GB_SKILLS_ENABLED 未停用時註冊。

  • growthbook_list_skills 回傳頂層技能入口點。入口可能包含完整的工作流程或路由至子工作流程。
  • growthbook_read_skill 接受列出的頂層名稱或由已載入技能命名的合格子路徑(feature-flags/references/flag-create),並回傳完整的 Markdown(工作流程 + 護欄)。

開發

git clone git@github.com:growthbook/skills.git ../skills
cp agent-skills.local.json.example agent-skills.local.json  # edit if not at ../skills

npm install
npm run build
npm start

獨立 HTTP 模式

預設情況下,伺服器透過 stdio 執行。設定 GB_MCP_TRANSPORT=http 以將其作為獨立 HTTP 伺服器執行,在 /mcp(技能 + API 工具)和 /mcp/api(僅能力)公開 MCP,位於 OAuth 2.0 受保護資源表面之後(RFC 9728 中繼資料 + RFC 6750 WWW-Authenticate)。

  • GB_MCP_URL(HTTP 模式必填)— 伺服器的公開基礎 URL。它被寫入 OAuth 資源(受眾)和受保護資源中繼資料,因此永遠不會從請求標頭推導。伺服器在沒有此值時拒絕啟動。
  • GB_MCP_PORT(預設 3333)和 GB_MCP_HOST(預設 127.0.0.1)。
  • 傳入的 bearer 權杖透過探測 GrowthBook REST API 驗證;被拒絕的權杖會收到 HTTP 401 + WWW-Authenticate,以便用戶端可以重新整理。

在受信任的網路上執行,或綁定至 loopback。對於多租戶或公開部署,請在前面加上您自己的閘道/驗證。

發布

發布是有意為之:在 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 Release

使用 npx @growthbook/mcp@<version> 安裝發布版,或拉取 ghcr.io/growthbook/growthbook-mcp:<version>。