OpenAPI拆分工具

提供拆分OpenAPI规范文件为多个文件或提取特定端点到新文件的功能,适用于AI助手等MCP客户端程序化操作OpenAPI规范。

  • by auto-browse
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 auto-browse/unbundle_openapi_mcp

使用说明

未捆绑的OpenAPI MCP服务器

该项目提供了一个模型上下文协议(MCP)服务器,该服务器具有将OpenAPI规范文件拆分为多个文件或将特定端点提取到新文件中的工具。它允许MCP客户端(如AI助手)以编程方式操纵OpenAPI规范。

先决条件

  • Node.js(建议使用LTS版本,例如v18或v20)
  • npm(附带Node.js)

用法

通过Smithery安装

通过以下方式自动为Claude Desktop安装Unbundle OpenAPI MCP服务器 史密瑟里:

npx -y @smithery/cli install @auto-browse/unbundle_openapi_mcp --client claude

使用此服务器的最简单方法是通过 npx,这确保您始终使用最新版本,而不需要全局安装。

npx @auto-browse/unbundle-openapi-mcp@latest

或者,您可以全局安装它(通常不推荐):

npm install -g @auto-browse/unbundle-openapi-mcp
# Then run using: unbundle-openapi-mcp

服务器将启动并监听标准输入/输出(stdio)上的MCP请求。

客户端配置

要将此服务器与MCP客户端(如VS Code、Cline、Cursor或Claude Desktop)一起使用,请将其配置添加到相应的设置文件中。推荐的方法使用 npx.

VS代码/临床/光标

将以下内容添加到您的用户 settings.json (可通过以下方式访问 Ctrl+Shift+P > Preferences: Open User Settings (JSON))或a .vscode/mcp.json 工作区根目录中的文件。

// In settings.json:
"mcp.servers": {
  "unbundle_openapi": { // You can choose any key name
    "command": "npx",
    "args": [
      "@auto-browse/unbundle-openapi-mcp@latest"
    ]
  }
  // ... other servers can be added here
},

// Or in .vscode/mcp.json (omit the top-level "mcp.servers"):
{
  "unbundle_openapi": { // You can choose any key name
    "command": "npx",
    "args": [
      "@auto-browse/unbundle-openapi-mcp@latest"
    ]
  }
  // ... other servers can be added here
}

克劳德桌面

将以下内容添加到您的 claude_desktop_config.json 文件。

{
	"mcpServers": {
		"unbundle_openapi": {
			// You can choose any key name
			"command": "npx",
			"args": ["@auto-browse/unbundle-openapi-mcp@latest"]
		}
		// ... other servers can be added here
	}
}

添加配置后,重新启动客户端应用程序以使更改生效。

提供的MCP工具

split_openapi

说明: 执行 redocly split 命令,根据OpenAPI定义文件的结构将其拆分为多个较小的文件。

论据:

  • apiPath (string,必填):输入OpenAPI定义文件的绝对路径(例如。, openapi.yaml).
  • outputDir (string,必填):应保存分割输出文件的目录的绝对路径。如果此目录不存在,将创建它。

退货:

  • 成功时:一条包含标准输出的文本消息 redocly split 命令(通常是确认消息)。
  • 失败时:包含命令执行中的标准错误或异常详细信息的错误消息,标记为 isError: true.

示例用法(概念MCP请求):

{
	"tool_name": "split_openapi",
	"arguments": {
		"apiPath": "/path/to/your/openapi.yaml",
		"outputDir": "/path/to/output/directory"
	}
}

extract_openapi_endpoints

说明: 从大型OpenAPI定义文件中提取特定端点,并创建一个新的、较小的OpenAPI文件,该文件仅包含这些端点及其引用的组件。它通过拆分原始文件、修改结构以仅保留指定路径,然后捆绑结果来实现这一点。

论据:

  • inputApiPath (string,必填):指向大型输入OpenAPI定义文件的绝对路径。
  • endpointsToKeep (字符串数组,必填):要包含在最终输出中的确切端点路径(字符串)的列表(例如。, ["/api", "/api/projects/{id}{.format}"]).在原始规范中找不到的路径将被忽略。
  • outputApiPath (string,必填):应保存最终较小的捆绑OpenAPI文件的绝对路径。如果目录不存在,将创建该目录。

退货:

  • 成功时:一条文本消息,指示创建的文件的路径和来自 redocly bundle 命令。
  • 失败时:包含失败步骤(拆分、修改、捆绑)详细信息的错误消息,标记为 isError: true.

示例用法(概念MCP请求):

{
	"tool_name": "extract_openapi_endpoints",
	"arguments": {
		"inputApiPath": "/path/to/large-openapi.yaml",
		"endpointsToKeep": ["/users", "/users/{userId}/profile"],
		"outputApiPath": "/path/to/extracted-openapi.yaml"
	}
}

注: 此服务器使用 npx @redocly/cli@latest 内部执行底层 split 和 bundle 命令。可能需要互联网连接 npx 拿来 @redocly/cli 如果它没有被缓存。临时文件是在 extract_openapi_endpoints 处理并自动清理。

发展

如果您想从源代码贡献或运行服务器:

  1. 克隆: 克隆此存储库。
  2. 导航: cd unbundle_openapi_mcp
  3. 安装依赖关系: npm install
  4. 构建: npm run build (将TypeScript编译为 dist/)
  5. 运行: npm start (使用中的编译代码启动服务器 dist/)