GrowthBook
官方创建和读取功能标志、审查实验、生成标志类型、搜索文档,并与GrowthBook的功能标志和实验平台进行交互。
你可以用 GrowthBook MCP 做什么?
- 列出捆绑的技能 — 让您的助手通过
growthbook_list_skills枚举 GrowthBook 代理技能,以查看可用的工作流程。 - 阅读技能的完整指南 — 使用
growthbook_read_skill获取特定技能的完整 Markdown 工作流程和防护措施。 - 读取 GrowthBook API 数据 — 通过
growthbook_api_read对任意 GrowthBook REST 端点执行经过身份验证的 GET 请求,例如获取项目或功能。 - 写入 GrowthBook API — 使用
growthbook_api_write通过 POST/PUT/PATCH/DELETE 创建、更新或删除资源,并使用destructiveHint确保安全。
文档
GrowthBook MCP Thin
一个面向 GrowthBook 的轻量 MCP 服务器,提供四个工具:
| 工具 | 用途 |
|---|---|
growthbook_list_skills | 列出捆绑的 GrowthBook 代理技能(名称 + 描述) |
growthbook_read_skill | 返回完整的技能 Markdown(工作流程 + 护栏) |
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 模式可选 | — | GrowthBook API 密钥或个人访问令牌 |
GB_API_URL | 否 | https://api.growthbook.io | API 基础 URL(自托管)及默认 OAuth AS 签发方 |
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 模式必填 | — | 写入 OAuth 资源元数据中的公共 MCP 基础 URL(服务器在 HTTP 模式下缺少它将拒绝启动) |
GB_OAUTH_ISSUER | 否 | GB_API_URL | GrowthBook OAuth AS 签发方 URL |
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 授权服务器。
在处理 MCP 之前,服务器使用 bearer 令牌探测 GrowthBook REST(GET /api/v1/)。该探测(或之后来自 API 工具的)返回 401 时,会产生 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": {
"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 复制到 server/skills/<name>.md。
源路径解析:
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,使用相同的路径和可选的 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(技能 + API 工具)和 /mcp/api(仅能力)处暴露 MCP,位于 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)。- 传入的 bearer 通过探测 GrowthBook REST API 进行验证;被拒绝的令牌会得到 HTTP
401+WWW-Authenticate,以便客户端可以刷新。
在受信任的网络或绑定到回环地址上运行。对于多租户或公共部署,请在前面放置你自己的网关/认证。
发布
发布版本是经过深思熟虑的:在 package.json 中提升版本号,然后推送匹配的 v* 标签:
git tag v2.0.0
git push origin v2.0.0
该带标签的提交(技能在发布时冻结)会发布:
@growthbook/mcp到 npm — 预发布版本(带有-的版本,例如2.0.0-beta.1)进入betadist-tag;稳定版本成为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>。