CI数据分析工具

Blacksmith MCP是一个连接CI数据和Claude的工具,通过自然语言查询分析工作流运行、测试失败和资源使用情况。

  • by grahamnotgrant
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 grahamnotgrant/blacksmith-mcp

使用说明

铁匠MCP

将Claude连接到您的MCP服务器 铁匠CI 数据。查询工作流运行,分析测试失败,检测不稳定的测试,并监控使用情况——所有这些都是通过自然对话完成的。

为什么?

调试CI失败通常意味着点击仪表板、复制运行ID以及在多个页面上拼凑信息。使用此MCP,您可以问:

  • “为什么上次CI运行失败?”
  • “本周哪些测试不稳定?”
  • “比较主PR和我的PR之间的测试失败”
  • “什么使用了最多的缓存存储?”

Claude处理API调用,并为您提供可操作的见解。

快速开始

如果您在Chrome中登录到Blacksmith,则无需配置:

# Add to Claude Code
claude mcp add blacksmith -- npx blacksmith-mcp

# Set your org (run once)
export BLACKSMITH_ORG="your-org-name"

MCP会自动从Chrome Cookie中提取您的会话。无需手动复制令牌。

安装

选项1:Claude代码命令行界面

claude mcp add blacksmith -- npx blacksmith-mcp

选项2:项目配置

添加到您的 .mcp.json:

{
  "mcpServers": {
    "blacksmith": {
      "type": "stdio",
      "command": "npx",
      "args": ["blacksmith-mcp"],
      "env": {
        "BLACKSMITH_ORG": "your-org-name"
      }
    }
  }
}

选项3:全局安装

npm install -g blacksmith-mcp

配置

认证

自动(推荐): 登录 app.blacksmith.sh 在Chrome中。MCP会自动提取您的会话cookie。

手册: 集 BLACKSMITH_SESSION_COOKIE 带有会话cookie值的环境变量。

环境变量

变量 必填 描述
BLACKSMITH_ORG 是 您的铁匠组织名称
BLACKSMITH_SESSION_COOKIE 否 会话cookie(如果未设置,则自动从Chrome中提取)

可用工具

工作流运行

工具 说明
list_runs 使用过滤器(状态、分支、工作流、参与者、PR)运行列表工作流
get_run 获取运行详细信息,包括所有作业
list_jobs 列出工作流运行的作业
get_job 获取作业详细信息(步骤、时间、跑步者信息)
get_job_logs 获取作业的原始日志输出

测试分析

工具 说明
get_job_tests 获取某项工作的所有测试结果
get_failed_tests 获取包含完整错误消息的失败测试
get_failures_by_pattern 按错误模式分组失败(例如,“无法读取属性”)
compare_test_runs 比较两次运行之间的失败(查找回归)
get_flaky_tests 检测间歇性失败的测试
get_slow_tests 查找超过持续时间阈值的测试
get_test_history 跟踪特定测试的通过/失败历史
get_trends 分析趋势:持续时间、故障率、测试次数

使用和计费

工具 说明
get_current_usage 当前核心使用率(活动与最大)
get_invoice_amount 当前计费期金额
get_usage_summary 计费分钟数与免费等级
get_cache_stats 缓存大小,按存储库列出的条目
get_cache_entries 仓库的详细缓存条目

组织

工具 说明
list_orgs 列出可访问的组织
get_org_status 组织状态(个人、已加入、地区)
search_logs 搜索所有作业的日志

对话示例

调试失败的运行

你: 为什么上次CI运行失败?

克劳德: 用途 list_runs(status="failure", limit=1) 然后 get_failed_tests

最后一次运行失败,有34次测试失败。主要问题是:

  • 连接超时 (12项测试)-测试 api/ 连接到测试数据库正在超时
  • 未定义的属性 (8次测试)- user.settings.theme 在新的暗模式代码中未定义
  • 断言失败 (14项测试)-UI组件中的快照不匹配

查找有缺陷的测试

你: 哪些测试是不稳定的?

克劳德: 用途 get_flaky_tests(days=7, min_runs=5)

发现3个片状测试:

测试 剥落率 模式
should handle concurrent requests 40%(4/10次运行) CI失败,本地通过
renders loading state 20%(2/10次运行) 设置超时的比赛条件
validates auth token 30%(3/10次运行) 间歇性网络超时

比较分支机构

你: 我的PR是否引入了新的测试失败?

克劳德: 用途 compare_test_runs PR运行vs基础分支

你的公关引入了两个新的失败:

  • UserProfile.test.tsx:“无法读取未定义的属性‘avatar’”
  • api/users.test.ts:预期200,得到404

5个以前失败的测试现在通过了(很好!)。

发展

# Install dependencies
pnpm install

# Build
pnpm build

# Development mode (watch)
pnpm dev

# Test with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js

故障排除

会话已过期

如果你看到 SESSION_EXPIRED,您的铁匠会话已过期。只需重新登录 app.blacksmith.sh 在Chrome浏览器中,然后重试。

Cookie提取失败

自动cookie提取需要:

  • 安装了Chrome的macOS
  • 在Chrome中登录铁匠
  • Chrome未在锁定的配置文件下运行

如果失败,设置 BLACKSMITH_SESSION_COOKIE 手动。

未设置组织

跑 list_orgs 要查看可用组织,请设置 BLACKSMITH_ORG 到你的组织名称。

API注释

此MCP使用Blacksmith的内部网站API,该网站未经记录。API是从Blacksmith网络应用程序反向工程的,可能会在不通知的情况下更改。

许可证

麻省理工学院

贡献

欢迎投稿!请先打开一个问题来讨论拟议的更改。