GrowthBook
resmiMembuat 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 dibundel — Minta asisten Anda untuk menyebutkan keterampilan agen GrowthBook dengan
growthbook_list_skillsuntuk melihat alur kerja yang tersedia. - Baca panduan lengkap keterampilan — Gunakan
growthbook_read_skilluntuk mengambil alur kerja markdown lengkap dan batasan untuk keterampilan tertentu. - Baca data API GrowthBook — Lakukan permintaan GET terautentikasi ke titik akhir REST GrowthBook mana pun melalui
growthbook_api_read, misalnya, ambil proyek atau fitur. - Tulis ke API GrowthBook — Gunakan
growthbook_api_writeuntuk membuat, memperbarui, atau menghapus sumber daya melalui POST/PUT/PATCH/DELETE, dengandestructiveHintdemi keamanan.
Dokumentasi
GrowthBook MCP Thin
Server MCP tipis untuk GrowthBook dengan empat alat:
| Tool | Tujuan |
|---|---|
growthbook_list_skills | Daftar keterampilan (skill) agen GrowthBook yang dibundel (nama + deskripsi) |
growthbook_read_skill | Mengembalikan markdown skill lengkap (alur kerja + pengaman) |
growthbook_api_read | Terusan GET terautentikasi ke GrowthBook API |
growthbook_api_write | Terusan POST/PUT/PATCH/DELETE terautentikasi |
Kompetensi berada di repositori skills dan dibundel pada waktu build. Kapabilitas dipisah menjadi alat API baca vs tulis (tanpa pemformat per-endpoint) sehingga klien dapat menghormati readOnlyHint / destructiveHint dengan benar.
Alat diberi prefiks growthbook_ sehingga tetap tidak ambigu ketika klien memuat beberapa server MCP.
Instalasi / menjalankan
npm install
npm run build
Arahkan klien MCP Anda ke entrypoint yang terkompilasi:
{
"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 dipublikasikan:
npx @growthbook/mcp
Variabel lingkungan
| Variabel | Wajib | Default | Tujuan |
|---|---|---|---|
GB_API_KEY | Wajib untuk stdio; opsional untuk HTTP OAuth | — | Kunci API GrowthBook atau token akses pribadi |
GB_API_URL | Tidak | https://api.growthbook.io | URL basis API (self-hosted) dan issuer AS OAuth default |
GB_MCP_TRANSPORT | Tidak | stdio | stdio atau http |
GB_MCP_PORT | Tidak | 3333 | Port listen HTTP (ketika transport=http) |
GB_MCP_HOST | Tidak | 127.0.0.1 | Host bind HTTP |
GB_MCP_URL | Wajib untuk HTTP | — | URL basis MCP publik yang dicap ke metadata resource OAuth (server menolak untuk memulai dalam mode HTTP tanpanya) |
GB_OAUTH_ISSUER | Tidak | GB_API_URL | URL issuer AS OAuth GrowthBook |
GB_HTTP_HEADER_* | Tidak | — | Header permintaan tambahan (mis. GB_HTTP_HEADER_CF_ACCESS_TOKEN) |
GB_SKILLS_ENABLED | Tidak | true | Disetel ke false / 0 untuk menonaktifkan alat skill |
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 (skill + API baca/tulis)http://127.0.0.1:3333/mcp/api— hanya kapabilitas (growthbook_api_read+growthbook_api_write)
Permintaan yang tidak terautentikasi menerima 401 dengan WWW-Authenticate yang menunjuk ke /.well-known/oauth-protected-resource, yang mengiklankan Authorization Server GrowthBook.
Sebelum menangani MCP, server memeriksa GrowthBook REST (GET /api/v1/) dengan bearer. 401 dari pemeriksaan tersebut (atau kemudian dari alat API) menghasilkan HTTP 401 dengan error="invalid_token" sehingga klien MCP dapat melakukan refresh — 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 refresh.
Mode hanya kapabilitas
HTTP (direkomendasikan untuk jarak jauh): arahkan klien ke /mcp/api alih-alih /mcp:
{
"mcpServers": {
"growthbook": {
"url": "http://127.0.0.1:3333/mcp/api"
}
}
}
| Jalur | Alat |
|---|---|
/mcp | growthbook_list_skills, growthbook_read_skill, growthbook_api_read, growthbook_api_write (kecuali GB_SKILLS_ENABLED=false) |
/mcp/api | growthbook_api_read, growthbook_api_write saja |
stdio / seluruh proses: atur env sehingga skill tidak pernah didaftarkan:
"env": {
"GB_API_KEY": "...",
"GB_SKILLS_ENABLED": "false"
}
Ketika skill dinonaktifkan, hanya alat baca/tulis API yang didaftarkan. growthbook_list_skills dan growthbook_read_skill tidak diekspos.
Cara skill dibundel
npm run build # tsc && bundle-skills
scripts/bundle-skills.mjs menyalin setiap skills/*/SKILL.md dari checkout skill kanonik ke server/skills/<name>.md.
Resolusi jalur sumber:
- Variabel env
SKILLS_SRC(jalur ke root repositori skills), atau ../skills(direktori saudara)
Repositori skill tetap menjadi sumber kebenaran — paket ini tidak pernah memfork konten skill.
Menggunakan skill dengan alat API
Skill yang dibundel masih menampilkan alur kerja sebagai:
gb-call GET /api/v1/projects
gb-call POST /api/v2/features ./payload.json
Server MCP ini tidak memanggil gb-call. Petakan GET → growthbook_api_read dan POST/PUT/PATCH/DELETE → growthbook_api_write dengan jalur yang sama dan string body 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 body 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 (rate limit) - Jalur bebas menargetkan GrowthBook REST API
growthbook_list_skills / growthbook_read_skill
Hanya didaftarkan ketika GB_SKILLS_ENABLED tidak dinonaktifkan. growthbook_read_skill mengembalikan konten SKILL.md lengkap sehingga agen dapat mengikuti langkah-langkah alur kerja dan pengaman.
Pengembangan
# Requires a sibling checkout at ../skills (or SKILLS_SRC)
npm install
npm run build
npm start
Mode HTTP mandiri
Secara default, server berjalan melalui stdio. Setel GB_MCP_TRANSPORT=http untuk menjalankannya sebagai server HTTP mandiri yang mengekspos MCP di /mcp (skill + alat API) dan /mcp/api (hanya kapabilitas), di balik permukaan sumber daya terproteksi OAuth 2.0 (metadata RFC 9728 + RFC 6750 WWW-Authenticate).
GB_MCP_URL(wajib dalam mode HTTP) — URL basis publik server. URL ini dicap ke resource OAuth (audience) dan metadata sumber daya terproteksi, sehingga tidak pernah diturunkan dari header permintaan. Server menolak untuk memulai tanpanya.GB_MCP_PORT(default3333) danGB_MCP_HOST(default127.0.0.1).- Bearer yang masuk divalidasi dengan memeriksa GrowthBook REST API; token yang ditolak mendapatkan HTTP
401+WWW-Authenticatesehingga klien dapat melakukan refresh.
Jalankan di jaringan tepercaya atau terikat ke loopback. Untuk deployment multi-tenant atau publik, letakkan gateway/auth Anda sendiri di depannya.
Rilis
Membuat rilis adalah tindakan yang disengaja: naikkan versi di package.json, lalu dorong tag v* yang sesuai:
git tag v2.0.0
git push origin v2.0.0
Komit yang diberi tag tersebut (dengan skill yang dibekukan saat pemotongan) memublikasikan:
@growthbook/mcpke npm — pra-rilis (versi dengan-, mis.2.0.0-beta.1) masuk di bawah dist-tagbeta; versi stabil menjadilatest- image multi-arsitektur (
amd64+arm64) keghcr.io/growthbook/growthbook-mcp(:<version>, plus:<major>,:<major>.<minor>, dan:latestuntuk rilis stabil) - entri di registry MCP
- Rilis GitHub
Instal rilis dengan npx @growthbook/mcp@<version> atau tarik ghcr.io/growthbook/growthbook-mcp:<version>.