mcpField
M
mendapi

mendapi

本地服务
mendapi.com开发工具112 周前更新

关于 mendapi

mendapi 检测上游 API 变更对代码库的影响,并起草迁移方案。它面向希望在本机检查影响、不上传源代码的团队,扫描器和修复器均在本地运行。

主要功能

  1. 01将 API 变更源同步到 SQLite
  2. 02定位受影响的文件、行和符号
  3. 03为发现项评估置信度
  4. 04生成供审阅的迁移差异
  5. 05支持选择性应用修复

适用场景

  1. 01检查代码库是否受 API 变更影响
  2. 02审阅 SDK 迁移方案
  3. 03在上游更新前定位受影响代码

MCP 相关

其 stdio MCP 服务提供 scan、deps、fix、revalidate 和 changes 工具。调用通过本地 CLI 和 SQLite 数据库运行。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"com-mendapi-mendapi": {
"command": "npx",
"args": [
"-y",
"mendapi"
]
}
}
}
启动命令npx -y mendapi

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

安装包
npmmendapi0.5.6

工具

5

收录的工具列表 · 更新于 3 周前

参数类型必填说明
repostring是要扫描的代码仓库的绝对或相对路径
providerstring否可选:仅限单个提供方(例如 "stripe")
include_prereleasesboolean否可选:包含预发布变更(默认值为 false)

详细介绍

mendapi

就像 Dependabot,但适用于你依赖的每个 API。 我们会监控上游 API 提供商的破坏性变更,扫描你的代码库以评估影响,并在集成出现问题之前创建修复 PR。

30 秒即可获得首个结果

# In any repo — zero config, zero npm dependencies
npx mendapi sync                          # one network call: fetch the change feed
npx mendapi scan --out impact.json        # local only, from here on
npx mendapi fix --from-report impact.json

sync 会将上游 API 变更源拉取到本地 SQLite 数据库。这是唯一会访问网络的命令,只需运行一次(之后可根据需要运行,以获取更新的数据)。

scan 会报告实际影响到你代码的每项上游破坏性变更,包括文件、行号和符号,并评估置信度。fix 会生成可供审核的迁移差异;在你传入 --apply 之前,它不会修改任何文件。两者都不会读取或写入你机器之外的任何内容。

在使用 AI 编码 Agent?只需一行,即可将 mendapi 接入 Claude Code,作为 MCP 服务使用(Cursor 和其他所有 MCP 客户端也都适用——详情见下文):

claude mcp add mendapi -- npx mendapi mcp

需要 Node.js 22.13 或更高版本。所有操作都在本地运行:扫描器、修复器和审核 CLI 完全不包含网络代码。

安全模型(请先阅读)

此工具专为不能让源代码离开其机器的团队设计。安全模型本身就是产品的一部分,而不是 FAQ 条目:

  1. 你的代码绝不会离开你的机器。 扫描器在本地或 CI 中运行。默认情况下不会上传任何内容——扫描器、修复器或审核 CLI 完全不包含网络代码(我们的测试套件会通过机制强制执行:这些文件中一旦出现任何网络原语,构建就会失败)。
  2. 仅报告元数据,且必须主动选择。 如果你选择将结果报告到托管式仪表板,负载构建器(payload.js)会通过白名单构造负载:仅包含提供商名称、SDK 版本、文件基本名称、行号和符号名称。从结构上就不可能包含代码片段——负载架构中不存在对应字段。报告需要显式传入 --report-to 标志;默认情况下绝不会启用。
  3. 全面脱敏机密信息。 每个出站负载的所有字段都会清除 15 种机密信息模式(OpenAI、Stripe、AWS、GitHub、Slack、JWT、Bearer 令牌、通用密钥赋值等),并且传输前断言会检查是否仍有禁止的键或未脱敏的机密信息;若有残留,就会抛出错误。
  4. 专为审计而设计。 CLI 是开源的,安全团队可以逐行核实具体读取了哪些内容,以及发送了哪些内容(如果有)。
  5. 仅需最小限度的 GitHub 权限。 修复 PR 使用 GitHub App,仅在你选择的仓库中授予 contents:read + pull_requests:write 权限。绝不授予管理员权限。
  6. 支持自托管。 企业版方案可将整个技术栈(包括变更源)运行在你的防火墙内。

功能介绍

三个组件构成一个闭环:

组件职责运行位置
Watcher通过 SDK 发布源和官方开发者变更日志监控 20 个主要 API 提供商(Stripe、OpenAI、Anthropic、Shopify、Twilio、Slack、GitHub、Google、AWS、Plaid、PayPal、Meta、Cloudflare、Vercel、Supabase、Firebase、Notion、HubSpot、Salesforce、SendGrid)。将每项变更分类(破坏性变更/弃用/新增/修复/仅文档),并存入结构化 SQLite 数据库。我们的基础设施(或由你自托管)
Scanner读取变更数据库,检测你的仓库实际使用了哪些提供商(SDK 导入、API 主机、环境变量——具备上下文感知能力,而非简单的 grep),并精确定位每项破坏性变更影响到的文件、行号和符号。三级置信度评分加上可选的大模型语义审核流程,能将误报降至接近于零。在本地、你的机器或 CI 上
Fixer应用确定性的迁移规则包(例如 openai-v3-to-v4、stripe-v7-to-v8),生成可供审核的差异,然后在专用分支上创建修复 PR,并在提交消息中引用官方迁移指南。默认在本地运行;付费方案支持托管式运行

快速开始

需要 Node.js 22.13 或更高版本(使用内置的 node:sqlite)。无需 npm 依赖。

# Fetch the latest API change feed (the only command that touches the network)
mendapi sync

# Scan the current repo against the breaking-change database (zero config)
mendapi scan

# Or scan a specific repo and save the report
mendapi scan --repo /path/to/your/repo --out impact.json

# Review medium-confidence findings (optional LLM semantic pass)
mendapi review impact.json --pending

# Preview fixes (dry-run: writes a unified diff, changes nothing)
mendapi fix --from-report impact.json

# Create a fix branch + commit + PR-ready description (local only;
# --push is required to actually push, and is never implied)
mendapi pr --repo /path/to/your/repo --from-report impact.json

从代码检出目录运行?node app/cli.js <command> 的效果完全相同。

修复示例

以下是真实输出——我们的测试套件对 openai-node v3 → v4 迁移包逐字节锁定的精确差异。注意其中两行在字符串和模板字面量中提及了旧版调用:codemod 会原样保留这两行,因为规则基于语法树中的调用位置,而不是文本模式。

--- a/lib/ai.js
+++ b/lib/ai.js
@@ -1,28 +1,27 @@
 // Demo service using the legacy openai-node v3 SDK (pre-v4 breaking change).
 // Docs note: openai.createChatCompletion({...}) was the v3 entry point.
-const { Configuration, OpenAIApi } = require('openai');
+const OpenAI = require('openai');
 
 // This string mentions the legacy call and must never be rewritten by the fixer:
 const LEGACY_HINT = 'if you still call openai.createChatCompletion( upgrade to v4';
 const AUDIT_LOG_LINE = `migrating away from .createEmbedding( for tenant`;
 
-const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY });
-const openai = new OpenAIApi(configuration);
+const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
 
 async function summarize(text) {
-  const response = await openai.createChatCompletion({
+  const response = await openai.chat.completions.create({
     model: 'gpt-4',
     messages: [{ role: 'user', content: `Summarize: ${text}` }],
   });
-  return response.data.choices[0].message.content;
+  return response.choices[0].message.content;
 }
 
 async function embed(text) {
-  const response = await openai.createEmbedding({
+  const response = await openai.embeddings.create({
     model: 'text-embedding-ada-002',
     input: text,
   });
-  return response.data.data[0].embedding;
+  return response.data[0].embedding;
 }
 
 module.exports = { summarize, embed };

每个迁移包都附带类似这样的锁定差异;如果某个包的输出与黄金证据不一致,构建就会失败。提供商指南中还有 6 个示例,同样保证逐字节匹配:OpenAI、AWS、Cloudflare、PayPal、Vercel、Stripe、Shopify。

在 AI 编码 Agent 中使用(MCP)

mendapi mcp 会通过 stdio 启动一个 Model Context Protocol 服务——离线优先,不访问网络:每次工具调用都只会运行本地 CLI 并访问本地 SQLite 数据库,而且该服务无需任何 npm 依赖。它支持当前的 MCP 修订版(2026-07-28,按请求进行 _meta 版本协商 + server/discover),同时与使用 initialize 握手的旧版客户端(2025-06-18 / 2025-03-26)完全向后兼容——这是一个跨越两个时代的服务,因为修复重大变更的工具不该只支持一个时代。

Claude Code(一行命令):

claude mcp add mendapi -- npx mendapi mcp

Cursor(或任何使用 JSON 配置的 MCP 客户端)——添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "mendapi": { "command": "npx", "args": ["mendapi", "mcp"] }
  }
}

提供的工具:scan、deps、fix、revalidate、changes——使用与 CLI --json 标志相同的、带有 schema_version 的 JSON。完整工具目录和自主维护方案,请参阅面向 AI Agent文档页面。

为什么精确性很重要

告警疲劳会让这类工具失去作用。我们的扫描器会通过以下规则筛选每条发现:

  • 感知源代码的证据规则——SDK 版本发布仅影响导入该 SDK 的代码库;关于 API 端点的变更日志条目则会影响调用该主机的所有项目。
  • 面向多包代码库中的提供商(Google、AWS)的子 API 过滤——youtube 的版本发布不会通知只使用 S3 的团队。
  • 基于标识符边界的符号匹配——getR 永远不会匹配 getRelatedArticles。
  • 感知上下文的环境变量检测——process.env.STRIPE_KEY 会被计入;名为 META_RE 的正则表达式常量则不会。

在 3 个生产代码库中进行自用测试:当前流水线报告的误报数为 0,而早期的朴素版本曾产生 27 个误报。

公开测评

我们使用真实的提供商规范语料库对变更数据库进行基准测试,并公布完整的统计结果——每项核心数据都会由网站的构建门禁根据归档证据重新计算,因此报告不会与数据脱节:

状态

已作为 mendapi 发布到 npm(v0.5.6)。目前为早期版本——变更数据库和迁移包注册表每天都在扩展;在 1.0 发布前,接口仍可能调整。

许可证

CLI 使用 AGPL-3.0-only(参见 LICENSE)。选择该许可证,是为了让安全团队能够审计每一行读取代码或构建负载的内容,并确保托管分支必须共享其变更。

评论

支持 Markdown

第一次接触 MCP?

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

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