领头羊
 ](https://www.npmjs.com/package/@dotsetlabs/bellwether)   
开源MCP测试工具。在用户之前抓住趋势。
什么是MCP? MCP(模型上下文协议) 是像克劳德这样的人工智能助手如何连接到外部工具——读取文件、查询数据库、调用API。当这些工具模式发生变化时,AI工作流程会悄无声息地中断。
为什么选择Bellwether?
MCP服务器使用JSON模式公开工具。当这些模式发生变化时——重命名参数、修改类型、删除工具——AI代理会悄无声息地中断。领头羊在这些变化投入生产之前就发现了它们。
| 问题 | 解决方案 |
|---|---|
| 突破性的变化滑入生产 | 漂移检测 捕获CI中的架构更改 |
| MCP测试没有标准 | 原生MCP支持 了解工具、提示、资源 |
| 手动测试遗漏了边缘情况 | 自动化勘探 涵盖了人类错过的东西 |
| 文档变得陈旧 | 合同.md 由实际行为产生 |
快速开始
npm install -g @dotsetlabs/bellwether
bellwether init npx @mcp/your-server
bellwether check就是这样,没有API密钥。没有LLM成本。以秒为单位运行。
产品焦点
领头羊故意固执己见:
- 核心工作流(默认):
init->check->baseline - 高级工作流程(选择加入):
explore,watch,discover,golden,contract,registry
如果你只需要CI安全漂移检测,你可以完全留在核心工作流程中。
两种模式
| 模式 | 目的 | 成本 | 何时使用 |
|---|---|---|---|
check | 模式漂移检测 | 自由 | CI/CD,每个PR |
explore | LLM驱动的行为测试 | LLM API成本 | 本地开发、深度分析 |
大多数用户只需要 check. 它具有确定性、快速性,并能捕捉到破坏人工智能代理的变化。
CI/CD工作流程
将基线存储在git中。在CI中运行检查。不需要帐户。
# 1. Initialize and save baseline (one-time setup)
bellwether init npx @mcp/your-server
bellwether check
bellwether baseline save
git add bellwether.yaml bellwether-baseline.json
git commit -m "Add Bellwether baseline"# 2. Add to CI (.github/workflows/bellwether.yml)
name: MCP Drift Detection
on: [pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx @dotsetlabs/bellwether check --fail-on-drift它检测到什么
| 更改 | 示例 | 严重性 |
|---|---|---|
| 添加/删除工具 | delete_file 出现或消失 | 断裂 |
| 架构已更改 | 参数 path 变为必需 | 中断 |
| 参数已重命名 | path 到 file_path | 打破 |
| 描述已更改 | 工具帮助文本已更新 | 警告 |
| 性能回归 | 延迟增加>10% | 警告 |
| 工具注释已更改 | readOnlyHint 翻转到 false | 警告 |
| 输出架构已更改 | 返回类型结构已修改 | 警告 |
| 实体标题已更改 | 工具/提示/资源标题已更新 | 信息 |
| 任务支持已更改 | 执行模式已切换为 async | 警告 |
| 服务器指令已更改 | 服务器级指令已更新 | 信息 |
| 添加/删除提示 | 提示模板出现或消失 | 中断 |
| 资源已更改 | 资源URI或MIME类型已修改 | 警告 |
比较如下 协议版本感知 --只有当两个基线都支持相关的MCP协议版本时,才会比较特定于版本的字段(注释、标题、输出模式等)。
命令层
核心命令(推荐)
| 命令 | 目的 |
|---|---|
init | 创建 bellwether.yaml |
check | 确定性模式漂移检测 |
baseline save | 保存快照以供将来比较 |
baseline compare | 将最新检查输出与保存的基线进行比较 |
高级命令(可选)
| 命令 | 目的 |
|---|---|
explore | LLM行为测试和 AGENTS.md 世代 |
watch | 持续检查文件更改 |
discover | 无需测试的能力检查 |
registry | 搜索MCP注册表 |
golden | 黄金产量回归测试 |
contract | 合同验证和生成 |
auth | 管理LLM提供程序API密钥 |
validate-config | 验证 bellwether.yaml 不运行测试 |
CI/CD退出代码
| 代码 | 含义 | 建议措施 |
|---|---|---|
0 | 无更改 | 通过 |
1 | 信息级别更改 | 通过或警告 |
2 | 警告级别更改 | 警告 |
3 | 中断更改 | 失败 |
4 | 运行时错误 | 失败 |
5 | 低置信度指标 | 警告或失败 |
GitHub行动
- uses: dotsetlabs/bellwether@v2.1.3
with:
version: '2.1.3'
server-command: 'npx @mcp/your-server'
baseline-path: './bellwether-baseline.json'
fail-on-severity: 'warning'配置
所有设置均已生效 bellwether.yaml.使用预设创建一个:
bellwether init npx @mcp/your-server # Default (free, fast)
bellwether init --preset ci npx @mcp/server # Optimized for CI/CD
bellwether init --preset local npx @mcp/server # Local Ollama (free)对于需要身份验证标头的远程MCP服务器,请配置:
server:
transport: sse
url: "https://api.example.com/mcp"
headers:
Authorization: "Bearer ${MCP_SERVER_TOKEN}"或者使用一次性CLI覆盖:
bellwether check -H "Authorization: Bearer $MCP_SERVER_TOKEN"环境变量
| 变量 | 描述 |
|---|---|
OPENAI_API_KEY | OpenAI API密钥(仅限浏览) |
ANTHROPIC_API_KEY | 人类API密钥(仅限探索) |
OLLAMA_BASE_URL | ollama URL(默认值: http://localhost:11434) |
文档
docs.bellwether.sh --配置和命令的完整参考。
项目治理
社区
- -问题和想法
- -Bug报告
- 贡献 -如何做出贡献
发展
git clone https://github.com/dotsetlabs/bellwether
cd bellwether
npm install
npm run build
npm test许可证
MIT许可证-请参阅 许可证 了解详情。
______________________________________________________________________
Built by Dotset Labs
