GrowthBook

ทางการ

สร้างและอ่านฟีเจอร์แฟล็ก ตรวจสอบการทดลอง สร้างประเภทแฟล็ก ค้นหาเอกสาร และโต้ตอบกับแพลตฟอร์มฟีเจอร์แฟล็กและการทดลองของ GrowthBook

GitHub
24
ลองใช้ MCP นี้ผู้สนับสนุน

คุณทำอะไรได้บ้างด้วย GrowthBook MCP?

  • รายการสกิลที่มีอยู่ — ขอให้ผู้ช่วยเรียก growthbook_list_skills เพื่อดูจุดเริ่มต้นเวิร์กโฟลว์ระดับบนของ GrowthBook และคำอธิบาย

  • โหลดเวิร์กโฟลว์สกิล — ใช้ growthbook_read_skill เพื่อดึงมาร์กดาวน์ของสกิลทั้งหมด รวมถึงเวิร์กโฟลว์ย่อย เช่น feature-flags/references/flag-create

  • อ่านข้อมูล GrowthBook — ให้ผู้ช่วยเรียก growthbook_api_read ด้วยพาธ เช่น /api/v1/projects เพื่อดึงข้อมูลผ่านคำขอ GET ที่ผ่านการรับรองความถูกต้อง

  • เขียนไปยัง GrowthBook API — ใช้ growthbook_api_write เพื่อสร้างหรือแก้ไขทรัพยากร เช่น POST ไปยัง /api/v2/features พร้อม body แบบ JSON สำหรับแฟล็กใหม่

  • เคารพสิทธิ์การอ่าน/เขียน — เซิร์ฟเวอร์แสดง readOnlyHint และ destructiveHint เพื่อให้ไคลเอนต์สามารถควบคุมการดำเนินการแบบอ่านอย่างเดียวเทียบกับแบบแก้ไขได้อย่างปลอดภัย

เอกสาร

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 หลายตัว

ติดตั้ง / รัน

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.ioURL พื้นฐาน API (โฮสต์เอง) และผู้ออก AS OAuth เริ่มต้น
GB_MCP_TRANSPORTไม่stdiostdio หรือ 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
GB_OAUTH_ISSUERไม่GB_API_URLURL ผู้ออก 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"
    }
  }
}
เส้นทางเครื่องมือ
/mcpgrowthbook_list_skills, growthbook_read_skill, growthbook_api_read, growthbook_api_write (เว้นแต่ GB_SKILLS_ENABLED=false)
/mcp/apigrowthbook_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

การแก้ไขเส้นทางแหล่งที่มา:

  1. ตัวแปร env SKILLS_SRC (เส้นทางไปยังรากที่เก็บทักษะ)
  2. agent-skills.local.json — { "path": "../skills" }, สัมพันธ์กับรากที่เก็บ ถูก Gitignore; คัดลอก agent-skills.local.json.example
  3. skills-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

growthbook_list_skills / growthbook_read_skill

ลงทะเบียนเฉพาะเมื่อ GB_SKILLS_ENABLED ไม่ถูกปิดใช้งาน

  • growthbook_list_skills ส่งคืนจุดเข้าทักษะระดับบน จุดเข้าอาจมีเวิร์กโฟลว์ที่สมบูรณ์หรือเส้นทางไปยังเวิร์กโฟลว์ย่อย
  • growthbook_read_skill ยอมรับชื่อระดับบนที่แสดงรายการหรือเส้นทางย่อยที่มีคุณสมบัติที่ตั้งชื่อโดยทักษะที่โหลด (feature-flags/references/flag-create) และส่งคืนมาร์กดาวน์เต็ม (เวิร์กโฟลว์ + ราวป้องกัน)

การพัฒนา

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 สำหรับการปรับใช้หลายผู้เช่า或多ผู้ใช้ ให้นำหน้าด้วยเกตเวย์/auth ของคุณเอง

รีลีส

การตัดรีลีสเป็นการจงใจ: เพิ่มเวอร์ชันใน package.json จากนั้นพุชแท็ก v* ที่ตรงกัน:

git tag v2.0.0
git push origin v2.0.0

คอมมิตที่ติดแท็กนั้น (พร้อมทักษะที่แช่แข็งที่เวลาตัด) เผยแพร่:

  • @growthbook/mcp ไปยัง npm — พรีรีลีส (เวอร์ชันที่มี -, เช่น 2.0.0-beta.1) ไปภายใต้ dist-tag beta; เวอร์ชันเสถียรกลายเป็น 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>