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?

  • Menemukan alur kerja yang tersedia — Minta asisten untuk mencantumkan titik masuk keterampilan GrowthBook melalui growthbook_list_skills untuk melihat tugas apa saja yang didukung.
  • Memuat panduan langkah demi langkah — Minta alur kerja tertentu seperti feature-flags/references/flag-create melalui growthbook_read_skill untuk mendapatkan instruksi terperinci dengan panduan pengaman.
  • Mengkueri data GrowthBook — Minta asisten untuk mengambil proyek, fitur, atau sumber daya lainnya menggunakan growthbook_api_read dengan jalur REST API yang valid.
  • Memodifikasi sumber daya GrowthBook — Instruksikan asisten untuk membuat atau memperbarui flag melalui growthbook_api_write, dengan memetakan panggilan POST/PUT/PATCH/DELETE ke jalur API yang sama.

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 saat klien memuat beberapa server MCP.

Plugin Cursor

Instal GrowthBook dari Cursor Marketplace. Plugin menghubungkan Cursor ke server yang dihosting di https://mcp.growthbook.io/mcp; panggilan alat pertama membuka masuk GrowthBook untuk mengotorisasinya. Pengguna GrowthBook yang dihosting sendiri harus mengonfigurasi server secara manual seperti dijelaskan di bawah.

Plugin didefinisikan oleh .cursor-plugin/plugin.json dan mcp.json. Untuk menguji perubahan secara lokal, salin repositori ke ~/.cursor/plugins/local/growthbook dan jalankan Developer: Reload Window.

Instal / jalankan

npm install
npm run build

Arahkan klien MCP Anda ke titik masuk yang 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 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 (dihosting sendiri) 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 tanpanya)
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 sudah ditutup server dan permintaan gagal dengan 502
OPENAI_APPS_CHALLENGE_TOKENTidak—Disajikan sebagai teks biasa di /.well-known/openai-apps-challenge untuk verifikasi domain plugin OpenAI (mode HTTP); rute mengembalikan 404 saat tidak diatur
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 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 itu (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"
}

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

Cara 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 vendor

Tidak ada pencarian saudara implisit. ../skills diselesaikan ke apa pun yang ada di jalur itu, yang membuat build lokal 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 di 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. Relatif tautan `references/foo.md` ditulis ulang menjadi memenuhi syarat `feature-flags/references/foo` paths so growthbook_read_skill 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 yang dihosting sendiri, dan batas kecepatan
  • Jalur bebas menargetkan GrowthBook REST API
  • Setiap permintaan membawa header penggunaan MCP (lihat Telemetri penggunaan)

growthbook_list_skills / growthbook_read_skill

Hanya didaftarkan saat GB_SKILLS_ENABLED tidak dinonaktifkan.

  • growthbook_list_skills mengembalikan titik masuk keterampilan tingkat atas. 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).

Telemetri penggunaan

Server ini tidak pernah mengirim telemetri ke mana pun sendiri. Sebaliknya, setiap panggilan REST yang dibuat oleh growthbook_api_read / growthbook_api_write menyertakan header yang memberi tahu instance GrowthBook yang diajak bicara bahwa panggilan itu berasal dari MCP:

HeaderContohIsi
X-GB-MCP-Toolgrowthbook_api_readAlat yang membuat panggilan
X-GB-MCP-Version2.2.0Versi server ini
X-GB-MCP-Transportstdiostdio atau http
X-GB-MCP-Clientcursor/1.2.3Nama/versi klien MCP dari jabat tangan inisialisasi, atau User-Agent dalam mode HTTP

GrowthBook mencatat ini melalui telemetri produk yang ada, sehingga kontrol yang sama berlaku. Pada instance yang dihosting sendiri, mengatur DISABLE_TELEMETRY pada back-end GrowthBook mematikan ini bersama dengan telemetri GrowthBook lainnya. Versi GrowthBook yang lebih lama mengabaikan header. Alat keterampilan (growthbook_list_skills / growthbook_read_skill) disajikan secara lokal dan tidak membuat permintaan, sehingga tidak dilacak.

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. Itu dicap ke sumber daya OAuth (audiens) dan metadata sumber daya yang dilindungi, sehingga tidak pernah diturunkan dari header permintaan. Server menolak untuk memulai tanpanya.
  • GB_MCP_PORT (default 3333) dan GB_MCP_HOST (default 127.0.0.1).
  • Bearer yang 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-penyewa atau publik, hadapi dengan gateway/auth Anda sendiri.

Rilis

Memotong rilis disengaja: naikkan versi di package.json, jalankan npm run sync-version (memperbarui manifest.json, server.json, dan .cursor-plugin/plugin.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 waktu 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

Plugin Cursor tidak diterbitkan oleh CI: Cursor meninjau ulang plugin dari cabang default setelah kenaikan versi mendarat.

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