GrowthBook
ทางการสร้างและอ่านฟีเจอร์แฟล็ก ตรวจสอบการทดลอง สร้างประเภทแฟล็ก ค้นหาเอกสาร และโต้ตอบกับแพลตฟอร์มฟีเจอร์แฟล็กและการทดลองของ GrowthBook
คุณทำอะไรได้บ้างด้วย GrowthBook MCP?
- แสดงรายการสกิลที่รวมอยู่ — ขอให้ผู้ช่วยของคุณแจกแจงสกิลของ GrowthBook agent ด้วย
growthbook_list_skillsเพื่อดูเวิร์กโฟลว์ที่มีอยู่ - อ่านคู่มือฉบับเต็มของสกิล — ใช้
growthbook_read_skillเพื่อดึงข้อมูล markdown เวิร์กโฟลว์และข้อจำกัดทั้งหมดของสกิลเฉพาะ - อ่านข้อมูล API ของ GrowthBook — ทำการร้องขอ GET ที่ผ่านการรับรองความถูกต้องไปยังปลายทาง REST ใดๆ ของ GrowthBook ผ่าน
growthbook_api_readเช่น ดึงข้อมูลโปรเจกต์หรือฟีเจอร์ - เขียนไปยัง API ของ GrowthBook — ใช้
growthbook_api_writeเพื่อสร้าง อัปเดต หรือลบทรัพยากรผ่าน POST/PUT/PATCH/DELETE พร้อมdestructiveHintเพื่อความปลอดภัย
เอกสาร
GrowthBook MCP Thin
เซิร์ฟเวอร์ MCP แบบบางสำหรับ GrowthBook พร้อมเครื่องมือสี่รายการ:
| เครื่องมือ | วัตถุประสงค์ |
|---|---|
growthbook_list_skills | แสดงรายการทักษะเอเจนต์ของ GrowthBook ที่รวมมา (ชื่อ + คำอธิบาย) |
growthbook_read_skill | ส่งคืนมาร์กดาวน์ของทักษะฉบับเต็ม (ขั้นตอนการทำงาน + แนวทางป้องกัน) |
growthbook_api_read | การส่งผ่าน GET ที่ตรวจสอบสิทธิ์ไปยัง GrowthBook API |
growthbook_api_write | การส่งผ่าน POST/PUT/PATCH/DELETE ที่ตรวจสอบสิทธิ์ |
ความสามารถอยู่ในคลัง ทักษะ และถูก รวมไว้ในเวลาสร้าง (build time) ฟังก์ชันถูกแบ่งเป็นเครื่องมือ API สำหรับการอ่านเทียบกับการเขียน (ไม่มีตัวจัดรูปแบบต่อ endpoint) เพื่อให้ไคลเอนต์สามารถจัดการ 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.io | URL พื้นฐานของ API (สำหรับการโฮสต์เอง) และค่าเริ่มต้นของ OAuth AS issuer |
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_OAUTH_ISSUER | ไม่ | GB_API_URL | URL ของ OAuth AS issuer ของ 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 ซึ่งประกาศ Authorization Server ของ GrowthBook
ก่อนจัดการ MCP เซิร์ฟเวอร์จะตรวจสอบ GrowthBook REST (GET /api/v1/) ด้วย bearer หาก 401 จากการตรวจสอบนั้น (หรือจากเครื่องมือ API ในภายหลัง) เกิดขึ้น จะให้ HTTP 401 พร้อม error="invalid_token" เพื่อให้ไคลเอนต์ MCP รีเฟรชได้ — แทนที่จะแสดง "This API key has expired" เป็นข้อผิดพลาดของเครื่องมือ 403 ถือเป็น bearer ที่ยอมรับ ( permission denied ≠ โทเค็นไม่ถูกต้อง) เพื่อไม่ให้ไคลเอนต์ถูกบังคับให้เข้าสู่วงรีเฟรช
โหมดเฉพาะความสามารถ
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.md จาก checkout ของคลังทักษะมาตรฐานไปยัง server/skills/<name>.md
การแก้ไขเส้นทางต้นทาง:
- ตัวแปร env
SKILLS_SRC(เส้นทางไปยังรากของคลังทักษะ) หรือ ../skills(ไดเรกทอรีข้างเคียง)
คลังทักษะยังคงเป็นแหล่งความจริง — แพ็กเกจนี้ไม่เคยแยกเนื้อหาทักษะ
การใช้ทักษะกับเครื่องมือ 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 ด้วยเส้นทางเดียวกันและสตริง body 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
- เมื่อไม่ใช่ 2xx ส่งคืนข้อผิดพลาดที่ให้ข้อมูล (
isError: true) ครอบคลุมการตรวจสอบสิทธิ์ล้มเหลว, คำแนะนำ 404 สำหรับการโฮสต์เอง, และการจำกัดอัตรา - เส้นทางอิสระกำหนดเป้าหมาย GrowthBook REST API
growthbook_list_skills / growthbook_read_skill
ลงทะเบียนเฉพาะเมื่อ GB_SKILLS_ENABLED ไม่ถูกปิดใช้งาน growthbook_read_skill ส่งคืนเนื้อหา SKILL.md ฉบับเต็ม เพื่อให้เอเจนต์สามารถทำตามขั้นตอนการทำงานและแนวทางป้องกันได้
การพัฒนา
# Requires a sibling checkout at ../skills (or SKILLS_SRC)
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 (audience) และข้อมูลเมตาทรัพยากรที่ป้องกัน ดังนั้นจึงไม่ถูกอนุมานจากส่วนหัวคำขอ เซิร์ฟเวอร์ปฏิเสธการเริ่มต้นหากไม่มีค่านี้GB_MCP_PORT(ค่าเริ่มต้น3333) และGB_MCP_HOST(ค่าเริ่มต้น127.0.0.1)- Bearer ที่เข้ามาจะถูกตรวจสอบโดยการตรวจสอบ GrowthBook REST API; โทเค็นที่ถูกปฏิเสธจะได้รับ HTTP
401+WWW-Authenticateเพื่อให้ไคลเอนต์รีเฟรชได้
รันบนเครือข่ายที่เชื่อถือได้หรือผูกกับ loopback สำหรับการปรับใช้แบบหลายผู้เช่า หรือสาธารณะ ควรวางเกตเวย์และการตรวจสอบสิทธิ์ของคุณเองไว้ด้านหน้า
การเผยแพร่
การตัดการเผยแพร่เป็นเรื่องที่ต้องพิจารณา: เพิ่มเวอร์ชันใน package.json จากนั้น push แท็ก 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 registry
- GitHub Release
ติดตั้งรุ่นด้วย npx @growthbook/mcp@<version> หรือดึง ghcr.io/growthbook/growthbook-mcp:<version>