Back to MCP directory
publicPublicdnsLocal runtime

blacksmith-mcp

一个连接Claude与Blacksmith CI数据的MCP服务器,可通过自然对话查询工作流运行、分析测试失败、检测不稳定测试并监控使用情况。

article

README

🚀 Blacksmith MCP

Blacksmith MCP 是一个 MCP 服务器,它能将 Claude 与你的 Blacksmith CI 数据相连接。通过自然对话,你可以查询工作流运行情况、分析测试失败原因、检测不稳定测试以及监控使用情况。

🚀 快速开始

如果你已在 Chrome 中登录 Blacksmith,则无需进行配置:

# 添加到 Claude Code
claude mcp add blacksmith -- npx blacksmith-mcp

# 设置你的组织(仅需运行一次)
export BLACKSMITH_ORG="your-org-name"

MCP 会自动从 Chrome cookies 中提取你的会话信息,无需手动复制令牌。

✨ 主要特性

  • 借助自然对话,可轻松查询工作流运行、分析测试失败、检测不稳定测试以及监控使用情况。
  • 能自动从 Chrome cookies 中提取会话信息,避免手动复制令牌。

📦 安装指南

选项 1:Claude Code CLI

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

💻 使用示例

基础用法

以下是一些与 Claude 进行对话以获取信息的示例:

调试失败的运行

> **你:** 为什么上次 CI 运行失败了?
>
> **Claude:** *使用 `list_runs(status="failure", limit=1)` 然后使用 `get_failed_tests`*
>
> 上次运行失败,有 34 个测试失败。主要问题如下:
> - **连接超时**(12 个测试) - `api/` 中的测试在连接测试数据库时超时
> - **未定义属性**(8 个测试) - 在新的暗模式代码中,`user.settings.theme` 未定义
> - **断言失败**(14 个测试) - UI 组件中的快照不匹配

查找不稳定测试

> **你:** 哪些测试不稳定?
>
> **Claude:** *使用 `get_flaky_tests(days=7, min_runs=5)`*
>
> 找到 3 个不稳定测试:
> | 测试 | 不稳定率 | 模式 |
> |------|------------|---------|
> | `should handle concurrent requests` | 40%(4/10 次运行) | 在 CI 上失败,在本地通过 |
> | `renders loading state` | 20%(2/10 次运行) | 与 setTimeout 存在竞态条件 |
> | `validates auth token` | 30%(3/10 次运行) | 间歇性网络超时 |

比较分支

> **你:** 我的 PR 是否引入了新的测试失败?
>
> **Claude:** *使用 `compare_test_runs` 比较 PR 运行与基础分支*
>
> 你的 PR 引入了 2 个新的失败:
> - `UserProfile.test.tsx`:"Cannot read property 'avatar' of undefined"
> - `api/users.test.ts`:预期状态码 200,实际得到 404
>
> 5 个之前失败的测试现在通过了(不错!)。

📚 详细文档

配置

身份验证

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

手动:设置 BLACKSMITH_SESSION_COOKIE 环境变量,并将其值设置为你的会话 cookie。

环境变量

| 变量 | 是否必需 | 描述 | |------|----------|-------------| | BLACKSMITH_ORG | 是 | 你的 Blacksmith 组织名称 | | 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 | 按错误模式对失败进行分组(例如,"Cannot read properties") | | 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 | 在所有作业中搜索日志 |

🔧 技术细节

此 MCP 使用 Blacksmith 的内部 Web API,该 API 未公开文档。该 API 是从 Blacksmith 网页应用逆向工程而来,可能会在未通知的情况下发生更改。

📄 许可证

本项目采用 MIT 许可证。

贡献

欢迎贡献代码!请先打开一个 issue 讨论提议的更改。

故障排除

会话过期

如果你看到 SESSION_EXPIRED,说明你的 Blacksmith 会话已过期。只需在 Chrome 中重新登录 app.blacksmith.sh 并重试。

Cookie 提取失败

自动提取 cookie 需要满足以下条件:

  • 安装了 Chrome 的 macOS 系统
  • 已在 Chrome 中登录 Blacksmith
  • Chrome 未使用锁定的配置文件运行

如果提取失败,请手动设置 BLACKSMITH_SESSION_COOKIE

未设置组织

运行 list_orgs 查看可用组织,然后将 BLACKSMITH_ORG 设置为你的组织名称。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client