> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 应该从OpenAPI自动生成MCP？
- URL: https://www.hubwiz.com/blog/should-we-auto-generate-mcp-servers-from-openapi/
- Published: 2025-05-06T09:03:29.000Z
- Updated: 2025-05-06T09:03:29.000Z
- Description: 我们应该直接从现有的API规范生成模型上下文协议（MCP）服务器吗
- Author: admin
- Tags: APPLICATION, MCP, OPENAPI, #Import 2026-10-14 14:41

我们应该直接从现有的API规范生成模型上下文协议（MCP）服务器吗？MCP旨在让像Claude、Cursor和Windsurf中的AI代理与工具和API进行交互。那么，我们是否可以简单地将现有的REST API作为LLM的接口，并完全代码生成一个MCP服务器呢？

## 1、从REST生成MCP

这个想法确实很有吸引力。你已经投入时间构建并记录了你的REST API以及其OpenAPI模式，为什么不将其转换为MCP服务器呢？

思路是这样的：如果创建的是1对1的映射，那么MCP服务器肯定会是全面的？有几个项目已经出来帮助弥合API和LLM之间的差距。例如，*openapisearch*这样的工具允许代理基于其OpenAPI规范探索和理解现有的API。你可以问，“如何使用GitHub API创建一个存储库？”它会首先找出需要的OpenAPI标识符，以简单的自然语言提供摘要，然后找到并返回适当的端点，让你能够通过对话查询浏览整个API。

还有像Tadata这样的服务，它提供了更直接的方法，自动发现所有FastAPI端点并将其作为MCP工具公开。

## 2、隐患

![](https://www.hubwiz.com/blog/content/images/2025/05/image-73.png)

克雷默的核心论点触及了几个根本性的不匹配。

首先，当典型的公司REST API可能通过其OpenAPI规范暴露几十或几百个不同的操作时，LLM在面对大量选择时会遇到困难。例如，GitHub API包含超过600个！简单地将这些全部作为单独的工具导入到MCP服务器中，会为LLM创造一个令人不知所措的选择空间。

即使是一组稍微相似的工具，模型在没有非常具体指示的情况下通常无法正确选择。最糟糕的情况是，这会导致非常令人沮丧的用户体验，MCP调用不断失败或不按预期工作。在处理像数据库这样的关键基础设施时，错误的工具调用不再只是不便。

接下来是交互结构本身的问题。LLM在导航复杂的JSON负载或确定API调用中哪些可选参数适合给定任务方面并不特别擅长。这对试图理解结果并决定下一步的LLM来说是不可解释的，因为这些格式和模糊性不是它擅长处理的。

最后，也是最重要的一点，REST API和MCP服务器的目标存在根本上的不匹配。REST API通常围绕资源为中心的低级操作而构建：创建用户、获取记录、更新字段。MCP服务器则在任务和工作流层面运行：“完成新客户的入职”，“迁移数据库模式”，“总结最近的活动”。简单地将每个细粒度的API端点映射到MCP工具，迫使LLM表现得像传统的程序化客户端，这并没有充分利用LLM的优势。

有效的MCP设计意味着思考你希望代理执行的工作流，并可能创建更高层次的工具来封装多个API调用，而不是仅仅暴露整个API规范的原始构建块。

## 3、混合方法

因此，如果直接的1对1方法存在问题，这是否意味着我们要完全放弃这个想法，只能手动为每个MCP服务器工具编写代码？

也许不是。手动定义每个工具定义、输入/输出模式和处理函数，尤其是在你已经有了一个定义良好的API的情况下，可能是巨大的时间浪费。这就是混合方法的用武之地，其中代码生成不是最终产品，而是起点。

我建议查看用于从OpenAPI规范生成MCP服务器的工具，然后开始积极修剪并删除大多数生成的工具，只保留真正有用且具有独特能力的低级操作，这些操作可能是LLM应该执行的。然后重写剩余工具的描述，使其不仅说明工具“做什么”（就像复制API端点摘要一样），还要说明LLM“何时”和“为什么”应该使用它。提供清晰的例子，概述预期的工作流程，并给出如何处理常见场景或参数的指导。

最后，也是最重要的，创建新的更高层次的工具，抽象常见的多步骤工作流，在后台调用多个底层API端点。（不过要小心不要让你的MCP服务器有状态！）

## 4、结束语

对于我们的MCP服务器，我们决定使用我们的TypeScript API SDK，以便轻松复制许多API端点。然而，我们只实现了我们认为LLM通过Cursor/Windsurf使用有意义的工具，然后构建了更高的层次工作流，将多个端点组合在一起完成任务。事实上，其中一个更高层次的工作流（以流线化和有意见的方式运行和测试数据库迁移）是我们2024年12月发布的MCP服务器的亮点。

最后，我们的MCP服务器是开源的，我们继续对其进行大量改进。如果你想参与，请查看[GitHub](https://github.com/neondatabase-labs/mcp-server-neon?ref=hubwiz.com)上的内容。

---

原文链接：[Auto-generating MCP Servers from OpenAPI Schemas: Yay or Nay?](https://neon.tech/blog/autogenerating-mcp-servers-openai-schemas?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处