释放MCP服务器
目标驱动 模型上下文协议 用于管理的(MCP)服务器 释放 特征标志。此服务器使LLM驱动的编码助手能够按照Unleash最佳实践创建和管理功能标志。
实验特性 Unleash MCP服务器是一个实验性功能。功能可能会发生变化,我们还不建议在生产环境中使用它。 要分享反馈,请加入我们的 社区Slack,打开一个 ,或发送电子邮件至 beta@getunleash.io.
概述
此MCP服务器提供与 释放管理员API,允许AI编码助手:
- 创建特征标志 通过适当的验证和打字。
- 检测现有标志 以防止重复或鼓励重复使用。
- 评估变更 以决定何时需要特征标志。
- 流进度 以便在操作过程中保持可见性。
- 处理错误 优雅地给出有用的提示。
- 遵循最佳实践 从 发布文档.
可用工具
MCP服务器公开了以下工具:
create_flag:在“释放”中创建特征标志。evaluate_change:对风险进行评分,并建议使用功能标志。detect_flag:发现现有的功能标志以避免重复。wrap_change:提供有关如何包装功能标志中的更改的指导。set_flag_rollout:配置功能标志的推出策略(不启用该标志)。get_flag_state:显示特征标志的元数据及其激活策略。toggle_flag_environment:启用或禁用环境中的功能标志。remove_flag_strategy:从环境中删除功能标志的策略。cleanup_flag:生成安全删除标记代码路径的指令。
核心工作流程
AI助手的核心工作流程旨在:
evaluate_change:首先,评估代码更改,看看是否需要标记。detect_flag:这通常由以下人员自动调用evaluate_change以防止创建重复的标志。create_flag:如果需要新标志,此工具将在Unleash中创建它。wrap_change:最后,此工具提供特定于语言的代码来实现新标志。
有关核心工作流工具的更多信息,请参阅 工具参考 部分。
先决条件
在运行服务器之前,您需要以下内容:
- Node.js 22或更高版本
- pnpm包管理器或npm
- Unleash实例(托管或自托管)
- A. 个人访问令牌 具有创建功能标志的权限
开始
本节介绍安装和运行Unleash MCP服务器的不同方法。您可以按照以下设置进行操作 代理 (如Claude Code和Codex),将MCP作为 独立进程 使用npx,或使用 本地开发 设置。
代理设置
您可以将MCP服务器直接添加到Claude Code或Codex中。代理配置是特定于路径的。您必须从要使用MCP的项目的根目录运行以下命令。
克劳德代码:
claude mcp add unleash \
--env UNLEASH_BASE_URL={{your-instance-url}} \
--env UNLEASH_PAT={{your-personal-access-token}} \
-- npx -y @unleash/mcp@latest --log-level error对于食品法典委员会:
codex mcp add unleash \
--env UNLEASH_BASE_URL={{your-instance-url}} \
--env UNLEASH_PAT={{your-personal-access-token}} \
-- npx -y @unleash/mcp@latest --log-level error远程代理设置(实验)
您可以通过HTTP直接连接到Unleash实例的内置远程MCP服务器,而不是在本地运行MCP服务器。这使用了 可流式HTTP传输 --不需要本地进程。
注: 远程MCP是一个实验性功能,必须在Unleash实例上启用。联系Unleash团队以启用它。
OAuth
OAuth流程会打开您的浏览器,让您登录Unleash,并自动设置一个短暂的PAT。不需要手动令牌管理。
克劳德代码:
claude mcp add unleash https://{{your-instance-url}}/api/admin/mcp --transport http对于食品法典委员会:
codex mcp add unleash https://{{your-instance-url}}/api/admin/mcp --transport http首次使用时,客户端将自动打开您的浏览器进行登录。使用Unleash进行身份验证后,将创建PAT并用于所有后续请求。
PAT默认在24小时后过期。
个人访问令牌(PAT)
当您已经拥有PAT或需要无头/非交互式访问(CI管道、共享开发人员环境、不支持OAuth的客户端)时,请使用此方法。
要创建PAT:登录您的Unleash实例,请转到 简介 > 个人访问令牌,并创建新令牌。
克劳德代码:
claude mcp add unleash https://{{your-instance-url}}/api/admin/mcp \
--transport http \
--header "Authorization: Bearer {{your-personal-access-token}}"对于食品法典委员会:
codex mcp add unleash https://{{your-instance-url}}/api/admin/mcp \
--transport http \
--header "Authorization: Bearer {{your-personal-access-token}}"这 --header flag直接发送PAT,完全绕过OAuth流。
npx快速入门
您可以使用以下命令将MCP服务器作为独立进程运行,而无需克隆存储库 npx.通过环境变量或本地变量提供配置 .env 运行命令的目录中的文件:
UNLEASH_BASE_URL={{your-instance-url}} \
UNLEASH_PAT={{your-personal-access-token}} \
UNLEASH_DEFAULT_PROJECT={{default_project_id}} \
npx unleash-mcp --log-level debugCLI支持与本地构建相同的标志(例如, --dry-run, --log-level).
当地开发设置
按照以下步骤设置项目以促进当地发展。
- 安装依赖项
克隆存储库并使用pnpm安装依赖项。Corepack让每个人都使用相同的pnpm版本:
git clone https://github.com/Unleash/unleash-mcp.git
cd unleash-mcp
# Enable Corepack once per machine, then prepare the pnpm this repo expects
corepack enable
corepack prepare pnpm@11.0.8 --activate
pnpm install- 直接从Claude或Codex以开发模式运行
避免 npm run 输出和 tsx watch 横幅,因为任何额外的stdout都会破坏MCP握手。两种安静的选择:
A) 使用编译的JS(最可靠)
npm run build
# or keep it hot in another terminal: npm run build:watch
claude mcp add unleash-dev \
--env UNLEASH_BASE_URL={{your-instance-url}} \
--env UNLEASH_PAT={{your-personal-access-token}} \
--env LOG_LEVEL=debug \
--env APP_LOG_FILE="$(pwd)/app.log" \
--env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
-- node "$(pwd)/dist/index.js"
codex mcp add unleash-dev \
--env UNLEASH_BASE_URL={{your-instance-url}} \
--env UNLEASH_PAT={{your-personal-access-token}} \
--env LOG_LEVEL=debug \
--env APP_LOG_FILE="$(pwd)/app.log" \
--env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
-- node "$(pwd)/dist/index.js"B) 直接使用TypeScript(无需构建)
claude mcp add unleash-dev \
--env UNLEASH_BASE_URL={{your-instance-url}} \
--env UNLEASH_PAT={{your-personal-access-token}} \
--env LOG_LEVEL=debug \
--env APP_LOG_FILE="$(pwd)/app.log" \
--env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
-- node --no-warnings --import tsx "$(pwd)/src/index.ts"
codex mcp add unleash-dev \
--env UNLEASH_BASE_URL={{your-instance-url}} \
--env UNLEASH_PAT={{your-personal-access-token}} \
--env LOG_LEVEL=debug \
--env APP_LOG_FILE="$(pwd)/app.log" \
--env MCP_STDIO_LOG_FILE="$(pwd)/mcp-stdio.log" \
-- node --no-warnings --import tsx "$(pwd)/src/index.ts"笔记:
node --import tsx安静(无npm生命周期输出),直接运行TS;当你想避免建筑时,可以使用这个。node dist/index.js是最安全的选择;搭配npm run build:watch在代理命令保持稳定的同时,根据更改进行重建。- 日志保留在repo根目录中(
app.log,mcp-stdio.log)两者都被忽视了。
记录控制
LOG_LEVEL(首选):控制应用程序日志的详细程度(debug,info,warn,error).默认为error未设置时。--log-levelCLI标志:可选覆盖LOG_LEVEL当你想要一次性改变的时候。APP_LOG_FILE(可选):如果设置,应用程序日志将写入此文件(而不是stdout)。如果未设置,日志将转到stderr。MCP_STDIO_LOG_FILE(可选):如果设置了,MCP stdin/stdout/stderr将被放入这个带有通道前缀的单个文件中。协议消息仍然在stdout上正常流动。
工具参考
本节详细描述了每个核心工具,包括其目的、参数和输出。
创建标志
这 create_flag 该工具在Unleash中创建了一个新的功能标志,具有全面的验证和进度跟踪功能。
何时使用
当您已经确定需要功能标志时(例如,在运行 evaluate_change)您已经准备好使用正确的类型和元数据创建它。
参数
该工具接受以下参数:
name(必填):项目中唯一的功能标志名称。type(必填):表示生命周期和意图的特征标志类型。
- release:逐步向用户推出功能。 - experimentA/B测试和实验。 - operational:系统行为和操作切换。 - kill-switch:紧急停机或断路器。 - permission:根据用户角色或权限控制功能访问。
description(必填):明确解释旗帜控制什么以及为什么存在。projectId(可选):目标项目(默认为UNLEASH_DEFAULT_PROJECT).impressionData(可选):启用分析跟踪(默认为false)。
使用示例
代理提示
Use create_flag with:
- name: "new-checkout-flow"
- type: "release"
- description: "Gradual rollout of the redesigned checkout experience"
- projectId: "ecommerce"工具有效载荷
{
"name": "new-checkout-flow",
"type": "release",
"description": "Gradual rollout of the redesigned checkout experience with improved conversion tracking",
"projectId": "ecommerce",
"impressionData": true
}刀具输出
成功后,该工具将返回一个JSON对象,其中包含Unleash Admin UI中新功能标志的URL、用于编程访问的MCP资源链接、创建时间戳和配置详细信息。
评估变更
这 evaluate_change 该工具评估代码更改是否应位于功能标志之后。它检查了变更的结构、背景和潜在风险,并返回了一个建议,其中包含解释和下一步行动。
何时使用
使用 evaluate_change 在功能或修改开始时,当您想了解工作是否需要功能标志时。当您不确定使用哪种标志类型或希望获得有关推出计划的指导时,此工具也很有用。
运作原理
该工具根据以下内容为LLM助理返回详细的、标记格式的指南 发布最佳实践.
该指南包括:
- 父标志检测:检查代码是否已受到现有标志的保护。
- 风险评估:分析代码模式以识别有风险的操作。
- 代码类型评估:对更改进行分类(例如,测试、配置、功能或错误修复)。
- 推荐:建议是创建标志、使用现有标志还是跳过标志。
- 下一步行动:提供下一步要做什么的具体说明。
当 evaluate_change 如果确定需要一个标志,它会提供明确的指令来:
- 呼叫
create_flag创建特征标志的工具。 - 呼叫
wrap_change该工具用于获取特定语言的代码包装指导。 - 按照检测到的模式实现包装代码。
评估过程
该工具遵循明确的评估流程:
Step 1: Gather code changes (git diff, read files)
↓
Step 2: Check for parent flags (avoiding nesting)
↓
Step 3: Assess code type (test? config? feature?)
↓
Step 4: Evaluate risk (auth? payments? API changes?)
↓
Step 5: Calculate risk score
↓
Step 6: Make recommendation
↓
Step 7: Take action (create flag or proceed without)风险评估
该工具使用与语言无关的模式来对风险进行评分:
- 重大风险 (得分+5):例如,身份验证、支付、安全和数据库操作。
- 高风险 (得分+3):例如,API更改、外部服务或新类。
- 中等风险 (分数+2):例如,异步操作或状态管理。
- 低风险 (得分+1):例如,错误修复、重构或小的更改。
父标志检测
该工具寻找跨语言的常见模式,例如:
- 条件句:
if (isEnabled('flag')),if client.is_enabled('flag'): - 作业:
const enabled = useFlag('flag') - 钩子:
const enabled = useFlag('flag')→{enabled && } - 守卫:
if (!isEnabled('flag')) return; - 包装器:
withFeatureFlag('flag', () => {...})
参数
所有参数都是可选的,但更多的上下文会带来更好的建议:
repository(string):存储库名称或路径。branch(string):当前分支名称。files(array):正在更改的文件列表。description(string):更改的描述。riskLevel(枚举):low,medium,high,或critical,由用户评估。codeContext(string):父标志检测的周围代码。
使用示例
代理提示
让代理收集上下文的简单用法:
Use evaluate_change to help me determine if I need a feature flag明确说明:
Use evaluate_change with:
- description: "Add Stripe payment processing"
- riskLevel: "high"工具有效载荷
{
"repository": "my-app",
"branch": "feature/stripe-integration",
"files": ["src/payments/stripe.ts"],
"description": "Add Stripe payment processing",
"riskLevel": "high",
"codeContext": "surrounding code for parent flag detection"
}刀具输出
返回一个包含计算结果的JSON对象,包括 needsFlag 布尔值,a recommendation (例如,“create_new”)、建议的标志名称、风险级别和详细信息 explanation.
{
"needsFlag": true,
"reason": "new_feature",
"recommendation": "create_new",
"suggestedFlag": "stripe-payment-integration",
"riskLevel": "critical",
"riskScore": 5,
"explanation": "This change integrates Stripe payments, which is critical risk...",
"confidence": 0.9
}检测标志
这 detect_flag 该工具在代码库中查找现有的功能标志,以便您可以重用它们,而不是创建重复项。此工具会自动集成到 evaluate_change 工作流,但也可以手动使用。
何时使用
在创建新功能标志之前或在代码评估期间使用此工具检查可能已经覆盖您的用例的现有标志。这有助于防止标志重复。
运作原理
该工具返回全面的搜索指令,并使用多种检测策略:
- 基于文件的检测:在您正在修改的文件中搜索现有标志。
- Git历史分析:在提交历史中查找最近添加的标志。
- 语义名称匹配:将描述与现有标志名称匹配。
- 代码上下文分析:检查更改周围的代码。
然后,该工具遵循评分过程:
Step 1: Execute file-based search (grep for flag patterns in target files)
↓
Step 2: Search git history for recent flag additions
↓
Step 3: Perform semantic matching (description → flag names)
↓
Step 4: Analyze code context (if provided)
↓
Step 5: Combine scores from all methods
↓
Step 6: Return best candidate with confidence score置信水平
该工具返回具有置信度分数的候选人:
- 高
≥0.7:强匹配;建议重复使用。 - 中等
0.4-0.7:可能匹配;手动审核。 - 低 `查看配置文件设置>个人API令牌>新令牌**.
错误:“HTTP_403”:您的令牌没有在此项目中创建标志的权限。在“释放”中查看您的角色和权限。
错误:“HTTP_404”:项目ID不存在。在Unleash Admin UI中确认项目ID。
错误:“HTTP_409”:项目中已存在同名标志。使用其他名称或重用现有标志。
许可证
麻省理工学院
贡献
这是一个目标驱动的项目,范围集中。捐款应:
- 与三个核心能力(创建、评估、包装)保持一致。
- 保持精简、目标驱动的架构。
- 遵循Unleash最佳实践。
- 包括清晰的文件。
