GrowthBook

resmi

Membuat dan membaca bendera fitur, meninjau eksperimen, menghasilkan tipe bendera, mencari dokumentasi, serta berinteraksi dengan platform bendera fitur dan eksperimen GrowthBook.

Apa yang bisa Anda lakukan dengan GrowthBook MCP?

  • Daftar keterampilan yang tersedia — Minta asisten untuk memanggil growthbook_list_skills guna melihat titik masuk alur kerja GrowthBook tingkat atas beserta deskripsinya.

  • Muat alur kerja keterampilan — Gunakan growthbook_read_skill untuk mengambil markdown keterampilan lengkap, termasuk alur kerja turunan seperti feature-flags/references/flag-create.

  • Baca data GrowthBook — Minta asisten memanggil growthbook_api_read dengan jalur seperti /api/v1/projects untuk mengambil data melalui permintaan GET yang terautentikasi.

  • Tulis ke API GrowthBook — Gunakan growthbook_api_write untuk membuat atau memodifikasi sumber daya, misalnya, POST ke /api/v2/features dengan badan JSON untuk flag baru.

  • Hormati izin baca/tulis — Server mengekspos readOnlyHint dan destructiveHint sehingga klien dapat dengan aman membatasi operasi hanya-baca versus operasi yang mengubah data.

Dokumentasi

GrowthBook MCP Thin

Server MCP tipis untuk GrowthBook dengan empat alat:

AlatTujuan
growthbook_list_skillsMenampilkan titik masuk keterampilan tingkat atas (nama + deskripsi)
growthbook_read_skillMengembalikan keterampilan yang terdaftar atau alur kerja anak yang memenuhi syarat (feature-flags atau feature-flags/references/flag-create)
growthbook_api_readPenerusan GET terautentikasi ke API GrowthBook
growthbook_api_writePenerusan POST/PUT/PATCH/DELETE terautentikasi

Kompetensi berada di repositori skills dan dikemas saat build. Kemampuan dibagi menjadi alat API baca vs tulis (tanpa pemformat per-endpoint) sehingga klien dapat menghormati readOnlyHint / destructiveHint dengan benar.

Alat diberi awalan growthbook_ agar tetap tidak ambigu ketika klien memuat beberapa server MCP.

Instalasi / menjalankan

npm install
npm run build

Arahkan klien MCP Anda ke titik masuk yang telah dikompilasi:

{
  "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"
      }
    }
  }
}

Atau jalankan paket yang telah diterbitkan:

npx @growthbook/mcp

Variabel lingkungan

VariabelWajibDefaultTujuan
GB_API_KEYYa untuk stdio; opsional untuk OAuth HTTP—Kunci API GrowthBook atau token akses pribadi
GB_API_URLTidakhttps://api.growthbook.ioURL dasar API (self-hosted) dan penerbit AS OAuth default
GB_MCP_TRANSPORTTidakstdiostdio atau http
GB_MCP_PORTTidak3333Port listen HTTP (saat transport=http)
GB_MCP_HOSTTidak127.0.0.1Host bind HTTP
GB_MCP_URLYa untuk HTTP—URL dasar MCP publik yang dicap ke metadata sumber daya OAuth (server menolak untuk memulai dalam mode HTTP tanpa itu)
GB_MCP_KEEP_ALIVE_TIMEOUT_MSTidak90000Waktu tunggu keep-alive idle dalam mode HTTP. Harus melebihi waktu tunggu idle dari penyeimbang beban di depannya, atau LB dapat menggunakan kembali koneksi yang telah ditutup server dan permintaan gagal dengan 502
GB_OAUTH_ISSUERTidakGB_API_URLURL penerbit AS OAuth GrowthBook
GB_HTTP_HEADER_*Tidak—Header permintaan tambahan (mis. GB_HTTP_HEADER_CF_ACCESS_TOKEN)
GB_SKILLS_ENABLEDTidaktrueAtur ke false / 0 untuk menonaktifkan alat keterampilan

Mode 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

Klien terhubung ke:

  • http://127.0.0.1:3333/mcp — lengkap (keterampilan + baca/tulis API)
  • http://127.0.0.1:3333/mcp/api — hanya kemampuan (growthbook_api_read + growthbook_api_write)

Permintaan tidak terautentikasi menerima 401 dengan WWW-Authenticate yang menunjuk ke /.well-known/oauth-protected-resource, yang mengiklankan Server Otorisasi GrowthBook.

Sebelum menangani MCP, server memeriksa REST GrowthBook (GET /api/v1/) dengan bearer. 401 dari pemeriksaan tersebut (atau nanti dari alat API) menghasilkan HTTP 401 dengan error="invalid_token" sehingga klien MCP dapat menyegarkan — alih-alih menampilkan "This API key has expired" sebagai kesalahan alat. 403 diperlakukan sebagai bearer yang diterima (izin ditolak ≠ token tidak valid) sehingga klien tidak dipaksa ke dalam loop penyegaran.

Mode hanya kemampuan

HTTP (disarankan untuk jarak jauh): arahkan klien ke /mcp/api alih-alih /mcp:

{
  "mcpServers": {
    "growthbook": {
      "url": "http://127.0.0.1:3333/mcp/api"
    }
  }
}
JalurAlat
/mcpgrowthbook_list_skills, growthbook_read_skill, growthbook_api_read, growthbook_api_write (kecuali GB_SKILLS_ENABLED=false)
/mcp/apigrowthbook_api_read, growthbook_api_write saja

stdio / proses-lebar: atur env sehingga keterampilan tidak pernah didaftarkan:

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

Ketika keterampilan dinonaktifkan, hanya alat baca/tulis API yang didaftarkan. growthbook_list_skills dan growthbook_read_skill tidak diekspos.

Bagaimana keterampilan dikemas

npm run build   # tsc && bundle-skills

scripts/bundle-skills.mjs menyalin pohon keterampilan tingkat atas dari checkout keterampilan kanonik, mempertahankan struktur:

skills/<skill>/SKILL.md                   → server/skills/<skill>/SKILL.md
skills/<skill>/references/<workflow>.md   → server/skills/<skill>/references/<workflow>.md

Resolusi jalur sumber:

  1. SKILLS_SRC variabel env (jalur ke root repositori keterampilan)
  2. agent-skills.local.json — { "path": "../skills" }, relatif terhadap root repositori. Diabaikan git; salin agent-skills.local.json.example
  3. skills-src/ — apa yang CI dan build Docker sediakan

Tidak ada pencarian saudara implisit. ../skills diselesaikan ke apa pun yang ada di jalur itu, yang membuat build lokal secara diam-diam tidak setuju dengan commit yang dibangun CI.

CI, penyebaran cloud, dan rilis semuanya membaca agent-skills.lock.json dan checkout commit keterampilan yang tepat itu. Untuk mengirim perubahan keterampilan hulu, perbarui commit di file kunci. Pengembangan lokal dapat menunjuk ke checkout apa pun dengan agent-skills.local.json atau SKILLS_SRC.

Repositori keterampilan tetap menjadi sumber kebenaran — paket ini tidak memelihara fork konten keterampilan. Keterampilan baru mengalir secara otomatis, kecuali yang disebutkan dalam daftar blokir kecil di bundle-skills.mjs. Saat ini hanya gb-setup yang diblokir karena mengonfigurasi adaptor shell gb-call daripada GrowthBook itu sendiri.

Direktori scripts/ per-keterampilan tidak disalin. Tautan relatif `references/foo.md` ditulis ulang menjadi `feature-flags/references/foo` paths so growthbook_read_skill yang memenuhi syarat dapat menyelesaikannya.

Menggunakan keterampilan dengan alat API

Keterampilan yang dikemas masih menampilkan alur kerja sebagai:

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

Server MCP ini tidak meneruskan ke gb-call. Petakan GET → growthbook_api_read dan POST/PUT/PATCH/DELETE → growthbook_api_write dengan jalur yang sama dan string badan JSON opsional. Instruksi server dan output growthbook_read_skill menyertakan catatan jembatan ini.

Detail alat

growthbook_api_read / growthbook_api_write

{ "path": "/api/v1/projects" }
{ "method": "POST", "path": "/api/v2/features", "body": "{\"id\":\"my-flag\",...}" }
  • Baca: GET saja (readOnlyHint: true)
  • Tulis: POST | PUT | PATCH | DELETE (destructiveHint: true)
  • Mengembalikan badan respons mentah pada 2xx
  • Pada non-2xx, mengembalikan kesalahan yang dapat ditindaklanjuti (isError: true) yang mencakup kegagalan autentikasi, petunjuk 404 self-hosted, dan batas kecepatan
  • Jalur bebas menargetkan API REST GrowthBook

growthbook_list_skills / growthbook_read_skill

Hanya didaftarkan ketika GB_SKILLS_ENABLED tidak dinonaktifkan.

  • growthbook_list_skills mengembalikan titik masuk keterampilan tingkat atas. Sebuah entri dapat berisi alur kerja lengkap atau rute ke alur kerja anak.
  • growthbook_read_skill menerima nama tingkat atas yang terdaftar atau jalur anak yang memenuhi syarat yang dinamai oleh keterampilan yang dimuat (feature-flags/references/flag-create) dan mengembalikan markdown lengkap (alur kerja + pagar pengaman).

Pengembangan

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

Mode HTTP mandiri

Secara default server berjalan melalui stdio. Atur GB_MCP_TRANSPORT=http untuk menjalankannya sebagai server HTTP mandiri yang mengekspos MCP di /mcp (keterampilan + alat API) dan /mcp/api (hanya kemampuan), di belakang permukaan sumber daya yang dilindungi OAuth 2.0 (metadata RFC 9728 + RFC 6750 WWW-Authenticate).

  • GB_MCP_URL (wajib dalam mode HTTP) — URL dasar publik server. Ini dicap ke sumber daya OAuth (audiens) dan metadata sumber daya yang dilindungi, sehingga tidak pernah diturunkan dari header permintaan. Server menolak untuk memulai tanpa itu.
  • GB_MCP_PORT (default 3333) dan GB_MCP_HOST (default 127.0.0.1).
  • Bearer masuk divalidasi dengan memeriksa API REST GrowthBook; token yang ditolak mendapatkan HTTP 401 + WWW-Authenticate sehingga klien dapat menyegarkan.

Jalankan di jaringan tepercaya atau terikat ke loopback. Untuk penyebaran multi-tenant atau publik, depankan dengan gateway/auth Anda sendiri.

Rilis

Memotong rilis adalah tindakan yang disengaja: naikkan versi di package.json, lalu dorong tag v* yang cocok:

git tag v2.0.0
git push origin v2.0.0

Commit yang ditandai itu (dengan keterampilan dibekukan pada saat pemotongan) menerbitkan:

  • @growthbook/mcp ke npm — prarilis (versi dengan -, mis. 2.0.0-beta.1) masuk di bawah dist-tag beta; versi stabil menjadi latest
  • gambar multi-arsitektur (amd64 + arm64) ke ghcr.io/growthbook/growthbook-mcp (:<version>, plus :<major>, :<major>.<minor>, dan :latest untuk rilis stabil)
  • entri di registri MCP
  • Rilis GitHub

Instal rilis dengan npx @growthbook/mcp@<version> atau tarik ghcr.io/growthbook/growthbook-mcp:<version>.