GrowthBook
ทางการสร้างและอ่านฟีเจอร์แฟล็ก ตรวจสอบการทดลอง สร้างประเภทแฟล็ก ค้นหาเอกสาร และโต้ตอบกับแพลตฟอร์มฟีเจอร์แฟล็กและการทดลองของ GrowthBook
คุณทำอะไรได้บ้างด้วย GrowthBook MCP?
- ค้นพบเวิร์กโฟลว์ที่มีอยู่ — ขอให้ผู้ช่วยแสดงรายการจุดเริ่มต้นทักษะ GrowthBook ผ่าน
growthbook_list_skillsเพื่อดูว่างานใดบ้างที่รองรับ - โหลดคำแนะนำทีละขั้นตอน — ขอเวิร์กโฟลว์เฉพาะ เช่น
feature-flags/references/flag-createผ่านgrowthbook_read_skillเพื่อรับคำแนะนำโดยละเอียดพร้อมแนวทางป้องกัน - สอบถามข้อมูล GrowthBook — ให้ผู้ช่วยดึงข้อมูลโปรเจกต์ ฟีเจอร์ หรือทรัพยากรอื่นๆ โดยใช้
growthbook_api_readกับเส้นทาง REST API ที่ถูกต้องใดๆ - แก้ไขทรัพยากร GrowthBook — สั่งให้ผู้ช่วยสร้างหรืออัปเดตแฟล็กผ่าน
growthbook_api_writeโดยแมปการเรียก POST/PUT/PATCH/DELETE ไปยังเส้นทาง API เดียวกัน
เอกสาร
GrowthBook MCP Thin
เซิร์ฟเวอร์ MCP แบบบางสำหรับ GrowthBook พร้อมเครื่องมือสี่รายการ:
| เครื่องมือ | วัตถุประสงค์ |
|---|---|
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 หลายตัวโหลดอยู่
ปลั๊กอิน Cursor
ติดตั้ง GrowthBook จาก Cursor Marketplace ปลั๊กอินเชื่อมต่อ Cursor กับเซิร์ฟเวอร์ที่โฮสต์ที่ https://mcp.growthbook.io/mcp; การเรียกเครื่องมือครั้งแรกจะเปิดการลงชื่อเข้าใช้ GrowthBook เพื่ออนุญาต ผู้ใช้ GrowthBook ที่โฮสต์เองควรกำหนดค่าเซิร์ฟเวอร์ด้วยตนเองตามที่อธิบายด้านล่าง
ปลั๊กอินถูกกำหนดโดย .cursor-plugin/plugin.json และ mcp.json เพื่อทดสอบการเปลี่ยนแปลงในเครื่อง ให้คัดลอกที่เก็บไปยัง ~/.cursor/plugins/local/growthbook และรัน Developer: Reload Window
การติดตั้ง / การรัน
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_KEY | ใช่สำหรับ stdio; ไม่บังคับสำหรับ HTTP OAuth | — | คีย์ API GrowthBook หรือโทเค็นการเข้าถึงส่วนบุคคล |
GB_API_URL | ไม่ | https://api.growthbook.io | URL พื้นฐาน API (โฮสต์เอง) และผู้ออก AS OAuth เริ่มต้น |
GB_MCP_TRANSPORT | ไม่ | stdio | stdio หรือ http |
GB_MCP_PORT | ไม่ | 3333 | พอร์ตฟัง HTTP (เมื่อ transport=http) |
GB_MCP_HOST | ไม่ | 127.0.0.1 | โฮสต์ผูก HTTP |
GB_MCP_URL | ใช่สำหรับ HTTP | — | URL พื้นฐาน MCP สาธารณะที่ประทับในเมตาดาต้าทรัพยากร OAuth (เซิร์ฟเวอร์ปฏิเสธที่จะเริ่มในโหมด HTTP โดยไม่มี) |
GB_MCP_KEEP_ALIVE_TIMEOUT_MS | ไม่ | 90000 | หมดเวลา keep-alive ว่างในโหมด HTTP ต้องเกินหมดเวลา idle ของ load balancer ใด ๆ ที่อยู่ด้านหน้า มิฉะนั้น LB สามารถนำการเชื่อมต่อที่เซิร์ฟเวอร์ปิดไปแล้วกลับมาใช้ใหม่ได้ และคำขอจะล้มเหลวด้วย 502 |
OPENAI_APPS_CHALLENGE_TOKEN | ไม่ | — | เสิร์ฟเป็นข้อความธรรมดาที่ /.well-known/openai-apps-challenge สำหรับการตรวจสอบโดเมนปลั๊กอิน OpenAI (โหมด HTTP); เส้นทางส่งคืน 404 เมื่อไม่ได้ตั้งค่า |
GB_OAUTH_ISSUER | ไม่ | GB_API_URL | URL ผู้ออก AS OAuth GrowthBook |
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 Authorization Server
ก่อนจัดการ MCP เซิร์ฟเวอร์ตรวจสอบ GrowthBook REST (GET /api/v1/) ด้วย bearer 401 จากการตรวจสอบนั้น (หรือจากเครื่องมือ API ในภายหลัง) ให้ 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"
}
}
}
| เส้นทาง | เครื่องมือ |
|---|---|
/mcp | growthbook_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 เพื่อไม่ให้ลงทะเบียนทักษะ:
"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
การแก้ไขเส้นทางแหล่งที่มา:
SKILLS_SRCตัวแปร env (เส้นทางไปยังรากที่เก็บทักษะ)agent-skills.local.json—{ "path": "../skills" }, สัมพันธ์กับรากที่เก็บ Gitignored; คัดลอกagent-skills.local.json.exampleskills-src/— สิ่งที่ CI และ Docker build จัดหา
ไม่มีการค้นหาพี่น้องโดยนัย ../skills แก้ไขเป็นสิ่งที่เกิดขึ้นที่เส้นทางนั้น ซึ่งทำให้การสร้างในเครื่องไม่ตรงกับการคอมมิตที่ CI สร้างจากอย่างเงียบ ๆ
CI, การปรับใช้คลาวด์ และการเผยแพร่ทั้งหมดอ่าน agent-skills.lock.json และตรวจสอบ
การคอมมิตทักษะที่แน่นอนนั้น ในการส่งการเปลี่ยนแปลงทักษะต้นทาง ให้อัปเดตการคอมมิตใน
ไฟล์ล็อก การพัฒนาท้องถิ่นสามารถชี้ไปที่การตรวจสอบใด ๆ ด้วย
agent-skills.local.json หรือ SKILLS_SRC
ที่เก็บทักษะยังคงเป็นแหล่งความจริง — แพ็คเกจนี้ไม่รักษา
ฟอร์กของเนื้อหาทักษะ ทักษะใหม่ไหลผ่านโดยอัตโนมัติ ยกเว้นทักษะที่ระบุ
ในบล็อกลิสต์ขนาดเล็กใน bundle-skills.mjs ปัจจุบันมีเพียง gb-setup เท่านั้นที่
ถูกบล็อกเพราะกำหนดค่า gb-call shell adapter แทน 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
- บน non-2xx ส่งคืนข้อผิดพลาดที่ดำเนินการได้ (
isError: true) ครอบคลุมความล้มเหลวในการรับรองความถูกต้อง คำแนะนำ 404 สำหรับโฮสต์เอง และขีดจำกัดอัตรา - เส้นทางอิสระกำหนดเป้าหมาย GrowthBook REST API
- แต่ละคำขอมีส่วนหัวการใช้งาน MCP (ดู การวัดการใช้)
growthbook_list_skills / growthbook_read_skill
ลงทะเบียนเฉพาะเมื่อ GB_SKILLS_ENABLED ไม่ถูกปิดใช้งาน
growthbook_list_skillsส่งคืนจุดเริ่มต้นทักษะระดับบนสุด รายการอาจมีเวิร์กโฟลว์ที่สมบูรณ์หรือเส้นทางไปยังเวิร์กโฟลว์ย่อยgrowthbook_read_skillยอมรับชื่อระดับบนสุดที่ระบุหรือเส้นทางย่อยที่มีคุณสมบัติซึ่งตั้งชื่อโดยทักษะที่โหลด (feature-flags/references/flag-create) และส่งคืน markdown เต็มรูปแบบ (เวิร์กโฟลว์ + การป้องกัน)
การวัดการใช้
เซิร์ฟเวอร์นี้ไม่เคยส่งการวัดไปที่ใดด้วยตัวเอง แต่การเรียก REST ทุกครั้งที่ทำโดย growthbook_api_read / growthbook_api_write รวมส่วนหัวที่บอกอินสแตนซ์ GrowthBook ที่กำลังพูดคุยว่าการเรียกมาจาก MCP:
| ส่วนหัว | ตัวอย่าง | เนื้อหา |
|---|---|---|
X-GB-MCP-Tool | growthbook_api_read | เครื่องมือที่ทำการเรียก |
X-GB-MCP-Version | 2.2.0 | เวอร์ชันของเซิร์ฟเวอร์นี้ |
X-GB-MCP-Transport | stdio | stdio หรือ http |
X-GB-MCP-Client | cursor/1.2.3 | ชื่อ/เวอร์ชันของไคลเอ็นต์ MCP จากการจับมือเริ่มต้น หรือ User-Agent ในโหมด HTTP |
GrowthBook บันทึกสิ่งเหล่านี้ผ่านการวัดผลิตภัณฑ์ที่มีอยู่ ดังนั้นการควบคุมเดียวกันจึงใช้ได้ บนอินสแตนซ์ที่โฮสต์เอง การตั้งค่า DISABLE_TELEMETRY บนแบ็คเอนด์ GrowthBook จะปิดสิ่งนี้พร้อมกับการวัดอื่น ๆ ของ GrowthBook เวอร์ชัน GrowthBook ที่เก่ากว่าไม่สนใจส่วนหัว เครื่องมือทักษะ (growthbook_list_skills / growthbook_read_skill) ถูกเสิร์ฟในเครื่องและไม่ทำคำขอ ดังนั้นจึงไม่ถูกติดตาม
การพัฒนา
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 ที่ /mcp (ทักษะ + เครื่องมือ API) และ /mcp/api (เฉพาะความสามารถ) ด้านหลังพื้นผิวทรัพยากรที่ป้องกัน 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)- Bearers ที่เข้ามาถูกตรวจสอบโดยการตรวจสอบ GrowthBook REST API; โทเค็นที่ถูกปฏิเสธได้รับ HTTP
401+WWW-Authenticateเพื่อให้ไคลเอ็นต์สามารถรีเฟรช
รันบนเครือข่ายที่เชื่อถือได้หรือผูกกับ loopback สำหรับการปรับใช้หลายผู้เช่า或多ผู้ใช้ ให้นำหน้าด้วยเกตเวย์/การรับรองความถูกต้องของคุณเอง
การเผยแพร่
การตัดการเผยแพร่เป็นการจงใจ: เพิ่มเวอร์ชันใน package.json, รัน npm run sync-version (อัปเดต manifest.json, server.json, และ .cursor-plugin/plugin.json), จากนั้นผลักแท็ก v* ที่ตรงกัน:
git tag v2.0.0
git push origin v2.0.0
การคอมมิตที่ติดแท็กนั้น (ด้วยทักษะที่แช่แข็งในเวลาตัด) เผยแพร่:
@growthbook/mcpไปยัง npm — พรีรีลีส (เวอร์ชันที่มี-, เช่น2.0.0-beta.1) ไปภายใต้ dist-tagbeta; เวอร์ชันเสถียรกลายเป็นlatest- อิมเมจหลายสถาปัตยกรรม (
amd64+arm64) ไปยังghcr.io/growthbook/growthbook-mcp(:<version>, บวก:<major>,:<major>.<minor>, และ:latestสำหรับการเผยแพร่เสถียร) - รายการในรีจิสทรี MCP
- GitHub Release
ปลั๊กอิน Cursor ไม่ถูกเผยแพร่โดย CI: Cursor ตรวจสอบปลั๊กอินอีกครั้งจากสาขาเริ่มต้นหลังจากการเพิ่มเวอร์ชันลงจอด
ติดตั้งการเผยแพร่ด้วย npx @growthbook/mcp@<version> หรือดึง ghcr.io/growthbook/growthbook-mcp:<version>