mcpField
S
schemaguard

schemaguard

本地服务
github.com/sethclawd-prog开发工具036 周前更新

关于 schemaguard

schemaguard 是用于比较 OpenAPI 规范并检查单份规范的命令行工具,也提供程序化 API。它可识别破坏性变更,并为 CI 流水线和 Agent 输出结构化结果。

主要功能

  1. 01比较两份 OpenAPI 规范
  2. 02识别破坏性与非破坏性变更
  3. 03检查缺失元数据和安全方案
  4. 04通过退出码运行 CI 检查
  5. 05输出结构化 JSON
  6. 06提供 TypeScript 程序化 API

适用场景

  1. 01部署前检查 API 兼容性
  2. 02在 CI 流水线中拦截破坏性变更
  3. 03发布前检查规范质量

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sethclawd-prog-schemaguard": {
"command": "npx",
"args": [
"-y",
"@sethclawd/schemaguard"
]
}
}
}
启动命令npx -y @sethclawd/schemaguard

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@sethclawd/schemaguard0.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SchemGuard

API 架构漂移监控器——在 OpenAPI 规范中的破坏性变更影响使用方之前将其检测出来。

npm version License: MIT

为什么需要

API 会悄无声息地发生破坏。字段被重命名、端点被移除、枚举值消失——下游使用方就会在生产环境中出错。SchemGuard 会在部署前发现这些问题。

安装

npm install -g schemaguard

使用方法

对比两个规范
schemaguard diff old-api.yaml new-api.yaml

输出:

Found 11 change(s):

❌ BREAKING CHANGES (9):
──────────────────────────────────────────────────
  ⛔ [endpoint-removed]
     Endpoint removed: DELETE /pets/{petId}
     at: DELETE /pets/{petId}

  ⛔ [field-type-changed]
     Parameter type changed: petId (string → integer)
     at: GET /pets/{petId} > param petId
  ...

🚨 9 breaking change(s) detected — deployment blocked.
CI 模式
schemaguard ci --spec ./openapi.yaml --baseline ./main-openapi.yaml
  • 退出码为 0 = 没有破坏性变更,可以安全部署
  • 退出码为 1 = 检测到破坏性变更,阻止流水线
  • 退出码为 2 = 出错(规范无效、找不到文件)
检查规范
schemaguard lint ./openapi.yaml

检查是否缺少 operationId、描述、安全方案等。

JSON 输出
schemaguard diff old.yaml new.yaml --format json

返回结构化 JSON,供 Agent 和 CI 工具以编程方式使用。

检测内容

破坏性变更(退出码为 1)
规则描述
endpoint-removed端点已删除
method-removed路径中的 HTTP 方法已移除
required-param-added新增了必需参数
param-removed已移除现有参数
request-field-made-required请求字段变为必需字段
field-type-changed字段类型已更改
response-field-removed响应字段已移除
enum-value-removed枚举值范围已缩小
auth-requirement-changed安全方案已修改
response-code-removed响应状态码已移除
非破坏性变更(仅提供信息)
规则描述
endpoint-added新增了端点
optional-param-added新增了可选参数
response-field-added新增了响应字段
enum-value-added枚举值范围已扩大
description-changed描述或摘要文本已更改
deprecated端点已标记为弃用

GitHub Actions

- name: Check API compatibility
  run: npx schemaguard ci --spec ./openapi.yaml --baseline ./baseline.yaml

编程接口

import { parseSpec, diffSpecs, formatDiff } from 'schemaguard';

const oldSpec = parseSpec('./v1.yaml');
const newSpec = parseSpec('./v2.yaml');
const result = diffSpecs(oldSpec, newSpec);

if (result.hasBreakingChanges) {
  console.log(`${result.breaking.length} breaking changes found`);
}

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。