helix.mcp
为什么?
AI代理在调查.Net repos(运行时、sdk、aspnetcore等)中的CI故障时遇到了两个问题:
- 原始API返回的数据太多。 单个Helix控制台日志可以是兆字节。Azure DevOps构建时间表返回数百条记录。将其转储到上下文窗口中会浪费令牌并淹没信号。
- 每个代理人都是从零开始的。 当多个代理(或工具调用中的同一个代理)检查同一个构建时,每个代理重复相同的API调用和下载。
hlx解决了这两个问题:
- 少退,好退。 工具如
helix_search和azdo_search_log就地搜索,只返回与上下文匹配的行——代理永远不会下载完整的日志。helix_status返回结构化故障摘要,而不是原始JSON。默认tail限制(500行),filter参数(failed默认情况下),以及maxMatches上限使反应集中。 - 缓存所有内容,跨进程共享。 本地SQLite缓存位于代理和API之间。不同的MCP服务器实例(每个IDE窗口/终端一个)共享相同的缓存,因此检查作业的第二个代理会立即得到结果。智能TTL跟踪作业生命周期——短暂运行作业缓存(15-30s),完成作业缓存数小时。
零配置 --public.NET CI开箱即用。安装并运行。
上下文高效设计
每个工具都旨在最大限度地减少代理上下文窗口中的令牌消耗:
| 技术 | 它如何帮助 |
|---|---|
| 尾部限制 | helix_logs 和 azdo_log 返回最后N行(默认值500),而不是完整的日志 |
| 模式搜索 | helix_search 和 azdo_search_log 搜索外部代理上下文,并返回具有可配置上下文的匹配行——无需完全摄取 |
| 故障优先默认 | helix_status, azdo_timeline, azdo_test_results 默认情况下仅显示故障 |
| 结构化JSON | 故障摘要、测试结果和时间线数据都是预先解析的——没有代理端文本提取 |
| 批量操作 | helix_batch_status 一次通话最多可检查50个工作岗位; helix_find_files 扫描N个工作项,而不是N+1个API调用 |
| 排名搜索 | azdo_search_log 可以搜索所有构建日志,按故障可能性排名,并在出现故障时提前停止 maxMatches 已达到 |
| 临时注释 | 标记为可安全重试和缓存的只读工具——客户端可以优化调度和错误恢复 |
调查路径
- 当仓库工作流程发生变化时,请从以下内容开始
helix_ci_guide(repo)对于特定于repo的路径和搜索模式。 - 使用
helix_parse_uploaded_trx仅当工作项将结构化测试结果上传到Helix时(运行时CoreCLR、XHarness设备测试)。 - 否则使用
azdo_test_runs→azdo_test_results对于结构化结果,或helix_search当信号在控制台输出时。
跨进程缓存
IDE / Agent processes hlx stdio MCP servers
┌─────────────┐ ┌──────────────┐
│ VS Code │──────────────▶│ hlx pid 1 │──┐
│ Copilot CLI│──────────────▶│ hlx pid 2 │──┤
│ Other agent│──────────────▶│ hlx pid 3 │──┤
└─────────────┘ └──────────────┘ │
▼
┌─────────────┐ miss ┌─────────────────┐
│ Cache Layer │──────────▶│ Helix / AzDO API│
│ Cache hit? │◀──────────│ │
└──────┬───────┘ response └─────────────────┘
hit │
▼
┌───────────────────────┐
│ SQLite + Disk shared │
│ ┌─────────┬────────┐ │
│ │SQLite DB │Artifact│ │
│ │WAL mode │ files │ │
│ └─────────┴────────┘ │
│ │
│ Auth isolation: │
│ cache-a1b2c3/ │
│ cache-d4e5f6/ │
│ public/ │
└───────────────────────┘- SQLite WAL模式 --多个进程在繁忙超时的情况下安全地读/写同一个数据库
- 智能TTL --运行作业:15-30秒,完成作业:1-4小时,运行作业的控制台日志:从不缓存。AzDO正在构建中,使用双密钥新鲜度和增量日志获取(增量追加)
- 认证隔离存储 --每个唯一的令牌都有自己的缓存目录(
cache-{hash}/).使用未经身份验证的请求public/.无交叉令牌泄漏 - LRU驱逐 --1 GB上限(可通过以下方式配置
HLX_CACHE_MAX_SIZE_MB),工件文件在7天后过期,无法访问
| 设置 | 默认值 | 环境变量 |
|---|---|---|
| 最大缓存大小 | 1 GB | HLX_CACHE_MAX_SIZE_MB (设置为 0 禁用) |
| 缓存位置(Windows) | %LOCALAPPDATA%\hlx\ | — |
| 缓存位置(Linux/macOS) | $XDG_CACHE_HOME/hlx/ | — |
hlx cache status # Show cache size, entry count, oldest/newest entries
hlx cache clear # Wipe all cached dataMCP工具
螺旋工具(9)
| 工具 | 说明 |
|---|---|
helix_status | 作业通过/失败摘要,包括失败分类。筛选器: failed (默认), passed, all. |
helix_batch_status | 一次最多50个工作的状态,总计。 |
helix_logs | 控制台日志内容(最后N行,默认值500)。 |
helix_search | 在控制台日志或上传的文件中搜索特定于仓库的故障模式,而无需下载完整内容。 |
helix_files | 按类型分组列出工作项的已上传文件。 |
helix_find_files | 在工作项中搜索与glob匹配的文件(*.binlog, *.trx, *.dmp). |
helix_work_item | 详细的工作项信息(退出代码、状态、机器、持续时间、故障类别)。 |
helix_download | 从工作项或直接blob URL下载文件。支持工作项下载的glob模式。 |
helix_parse_uploaded_trx | 将上传到Helix blob存储的TRX/xUnit XML文件解析为测试名称、结果和错误消息。 |
AzDO工具(11)
| 工具 | 说明 |
|---|---|
azdo_build | 构建详细信息(状态、结果、分支、时间、URL)。接受URL或整数ID。 |
azdo_builds | 列出最近的版本。按分支、PR、定义、状态过滤。 |
azdo_timeline | 构建时间线(阶段、作业、任务)。筛选器: failed (默认)或 all. |
azdo_log | 记录特定构建步骤的内容(最后N行,默认500行)。 |
azdo_search_log | 在特定的构建日志或所有排名的构建日志中搜索带有上下文行的模式。 |
azdo_search_timeline | 按名称或问题模式搜索时间线记录。 |
azdo_changes | 与构建相关的提交/更改。 |
azdo_test_runs | 测试运行摘要(总计、通过、失败计数)。 |
azdo_test_results | 个人测试结果。默认情况下,仅测试失败(前200名)。 |
azdo_artifacts | 使用模式过滤构建工件(例如。, *.binlog). |
azdo_test_attachments | 测试结果附件(截图、日志、转储)。 |
MCP资源
MCP资源是URI可寻址的数据,客户端可以在不调用工具的情况下发现和读取。
| 资源URI | 描述 |
|---|---|
ci://profiles | 所有CI调查模式概述。NET存储库。 |
ci://profiles/{repo} | CI调查指南具体。NET存储库(例如。, ci://profiles/runtime). |
这些提供了相同的CI调查指南,可通过 helix_ci_guide 工具,作为客户端可发现的资源用于浏览和缓存。
认证
螺旋
公共Helix作业不需要身份验证(ADO.NET开源CI)。对于私人工作:
hlx login # Opens browser, prompts for token, stores via git credential
hlx auth-status # Check current auth status
hlx logout # Remove stored token令牌解析: HELIX_ACCESS_TOKEN 环境变量→ 通过存储凭证 git credential → 错误,并显示有用消息。
Azure DevOps
AzDO工具对公共项目匿名工作(例如 dnceng-public/public).对于私人组织(例如 devdiv/DevDiv),需要身份验证。
凭证链 (按顺序尝试):
AZDO_TOKEN环境变量 --PAT和Entra访问令牌都是自动检测的:
- PAT(个人访问令牌):作为基本身份验证发送。需要构建(读取)+测试(读取)范围。 - Entra/JWT令牌:作为Bearer身份验证发送。
- Azure CLI凭据 (
AzureCliCredential从Azure.Identity)--使用您的az login会议。适用于您的Azure身份可以访问的任何组织。 azCLI子流程 --回落到az account get-access-token如果是Azure。身份信息不可用。- 匿名 --没有身份验证标头。仅适用于公共项目。
当身份验证失败时,错误告诉您尝试了什么以及如何修复:
Can't access devdiv/DevDiv — authentication required (401).
Current auth: anonymous (no credentials found)
To resolve:
• Run 'az login' (if your Azure identity has access to this org)
• Set AZDO_TOKEN to a Personal Access Token with Build(read) + Test(read) scopes通过MCP配置传递令牌:
{
"servers": {
"hlx": {
"type": "stdio",
"command": "dotnet",
"args": ["dnx", "--yes", "lewing.helix.mcp"],
"env": {
"HELIX_ACCESS_TOKEN": "your-helix-token",
"AZDO_TOKEN": "your-azdo-pat-or-entra-token"
}
}
}
}HTTP MCP服务器支持通过以下方式进行每次请求的身份验证 Authorization: Bearer 头文件,每个客户端都有独立的缓存。集 HLX_API_KEY 以阻止服务器访问。
安装
使用dotnetdnceng插件(推荐)
这 Dott舞者插件 将hlx与相关的MCP服务器(Azure DevOps、Maestro、binlog)和CI分析技能捆绑在一起——一次安装,包括电池:
copilot extensions install lewing/agent-plugins/plugins/dotnet-dnceng这给了你的经纪人 helix_* 和 azdo_* CI故障分析、代码流跟踪和依赖流调试的工具和技能。
使用dnx运行(无需安装)
dnx lewing.helix.mcpdnx (.NET 10中的新功能)自动下载并运行NuGet工具包。当没有给出子命令时,MCP模式是默认模式。
作为全局工具安装
dotnet tool install -g lewing.helix.mcp安装后, hlx 可作为命令使用。看 CLI参考 用于独立使用。
从源代码构建
git clone https://github.com/lewing/helix.mcp.git
cd helix.mcp
dotnet build # Requires .NET 10 SDK这Microsoft.DotNet.Helix.Client包裹来自 大唐能 饲料。包括nuget.config引用它。
MCP配置
添加到MCP客户端配置中:
{
"servers": {
"hlx": {
"type": "stdio",
"command": "dotnet",
"args": ["dnx", "--yes", "lewing.helix.mcp"]
}
}
}如果作为全局工具安装,请使用"command": "hlx"和"args": []相反。
| 客户端 | 配置文件 | 顶级密钥 |
|---|---|---|
| VS代码/GitHub副本 | .vscode/mcp.json | servers |
| 克劳德桌面 (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json | mcpServers |
| 克劳德桌面 (Windows) | %APPDATA%\Claude\claude_desktop_config.json | mcpServers |
| 克劳德代码/光标 | .cursor/mcp.json | mcpServers |
VS代码使用servers.Claude桌面、Claude代码和光标使用mcpServers--其余部分是相同的。
对于HTTP(远程/共享服务器):
{
"servers": {
"hlx": {
"type": "http",
"url": "http://localhost:3001"
}
}
}安全
- 安全XML解析 --禁止DTD处理,禁用XmlResolver,50 MB字符限制(XXE/十亿笑保护)
- 路径遍历保护 --所有缓存/下载路径都针对指定根进行了清理和验证
- URL方案验证 --下载只接受HTTP/HTTPS
- 文件搜索切换 --set
HLX_DISABLE_FILE_SEARCH=true禁用内容搜索工具 - 凭据存储 --由操作系统钥匙链管理的令牌
git credential,从不以明文形式存储 - 缓存灵敏度 --缓存的CI日志可能包含机密;将缓存目录视为敏感目录。令牌永远不会被缓存——只有一个不可逆的8字符哈希用于目录隔离
已知问题
- 文件列表用途
ListFiles端点 --避免了中的已知错误Details端点,其中子目录和unicode文件名的文件URI被破坏(点网/数据中心#6072).
需求
- .NET 10 SDK
许可证
麻省理工学院

