首页 / 文章

自建还是购买MCP基础设施:SaaS团队的决策指南

对比自建MCP服务器与托管平台:实际工作负载、身份认证、控制程度、适用范围、混合方案以及需要首先解答的五个问题。

发布者:REACTAPP.TOP阅读约 11 分钟2515 词

来源: Build or Buy: How SaaS Teams Should Approach MCP Infrastructure

对于一家SaaS公司而言,关于MCP的首个决策往往以技术问题形式出现:团队是应该自行开发MCP服务器,还是租用托管平台?更具体的问题是,公司希望掌控MCP生命周期的哪些阶段。

自行开发服务器能让团队完全掌握代码、其运行时的表现、部署位置以及安全措施。同时这也意味着需要承担一系列持续性的责任:设计工具、处理身份认证、服务器托管、测试、监控、应对故障、跟踪API变更以及版本管理。而使用托管平台则意味着要放弃部分实现控制权,以此换取更快的服务器部署速度以及更少的基础设施维护工作。

默认情况下,两种选择都没有绝对的对错。最终决策取决于现有的 API、需要暴露的功能、客户端期望的端点类型,以及发布完成后还剩多少工程时间。

该决策实际涵盖的内容

MCP 服务器不仅仅是一堆处理函数,它是一个连接到现有产品中的面向 AI 的接口,完整的决策过程可能包括:

  • 将 API 操作转化为工具、资源或提示语
  • 编写名称、描述及输入架构
  • 在运行时传递 API 密钥、Bearer 令牌或 OAuth 凭证
  • 部署客户端可访问的端点
  • 测试发现功能、调用过程、无效输入及认证机制
  • 收集日志和使用数据
  • 处理错误及上游 API 的变更
  • 版本控制配置与回滚不安全的更新
  • 只考虑构建第一台服务器成本的团队会低估实际开发工作量。而仅着眼于托管服务便利性的团队,则可能忽视由此放弃的对系统的控制权及产品所有权。

    内部开发:完全掌控,永久拥有

    当MCP逐渐成为平台战略的核心组成部分时,自行编写服务器代码是合理的选择。此时团队可以决定:

    • 各项功能的实现方式
    • 某个工具是仅处理一次API调用还是协调多个步骤
    • 身份验证与权限管理的实现方式
    • 应选择何种传输协议及托管方案
    • 如何向客户端呈现错误信息
    • 哪些内容需要记录,哪些需要保密
    • 服务器如何与内部部署及安全系统集成

    当MCP层需要处理现成API到MCP的转换工具无法完成的任务时,这种控制方式就能发挥优势。它也适合那些已有专门团队负责管理共享运行环境、可观测性、合规性及事件响应的组织。

    不过,责任并不仅限于首次实现阶段。只要产品仍在持续迭代,就必须对服务器进行维护。

    内部服务器的实际工作负担

    工程方面

    初期工作可能包括选择MCP SDK、映射API操作、定义工具架构、转换请求以及编写测试用例。更复杂的场景则涉及自定义编排逻辑、状态管理、重试机制、分页处理以及响应格式化等任务。

    API的规模越大,所需的工作量就越高;当面向AI的工作流程无法与单个端点完美匹配时,工作量也会增加。编写一个简单的封装层很快就能完成,而设计完善的产品界面则需要更长的时间。

    托管与部署

    服务器必须位于MCP客户端能够访问的位置。团队需要选择传输方式,设置部署和环境变量,安排网络配置,处理扩展问题,并在连接或上游调用出现故障时进行干预。发布流程同样重要——仅能在某位工程师的笔记本电脑上运行的服务器只是原型,无法作为可靠的集成方案。

    身份验证与数据处理

    在运行时,正确的 API 密钥、Bearer 令牌或 OAuth 凭证必须传递给底层 API,而这些敏感信息需要得到妥善处理,包括定期更换、限定使用范围以及明确故障应对机制。此外还必须确定哪些请求元数据、结果和错误详情应记录在日志中,这既会影响安全模型,也会影响运行成本。

    测试与可观测性

    测试套件需验证连接功能、发现能力、数据结构、有效与无效的输入数据、授权被拒的情况、上游错误、超时问题以及响应处理方式。系统上线后,应具备足够的遥测数据来回答以下问题:

    • 使用了哪些工具?
    • 哪些操作最容易失败?
    • 延迟是来自 MCP 服务器还是 API?
    • 客户端是否发送了格式错误的输入数据?
    • 某个 API 版本更新是否改变了现有工具的行为?

    要么团队自行开发,要么将多个现有系统整合在一起。

    维护与版本控制

    底层的API会不断变化:参数会调整,某些操作会被废弃,安全规则会变得更严格,响应格式也会增减字段,因此MCP配置必须随之调整。成熟的方案需要代码审查、测试环境、分版本部署功能、回滚机制,以及保持工具描述准确性的习惯。

    内部开发能够带来控制权,但代价是在整个集成生命周期内都要自行承担所有相关决策。

    托管平台:无需承担过多基础设施负担

    托管型MCP平台的思路则不同。SaaS公司已有现成的API,只希望让选定的功能能通过MCP客户端访问,而不愿构建完整的运行层。通常其工作流程会经历以下阶段:

    1. 导入 API 定义
    2. 检测可用的操作
    3. 选择要暴露的功能
    4. 配置工具、资源及提示信息
    5. 托管 MCP 端点
    6. 测试接口
    7. 监控并管理配置版本

    该平台不会接管 SaaS 产品本身。业务逻辑、用户权限、租户隔离、分页功能以及速率限制均保留在原始 API 中。只有围绕 MCP 接口所需的基础设施工作量会减少。

    各方的职责

    • API 映射。在内部环境中,团队负责编写和维护转换层;而在平台上,则由平台导入 API 定义并审核检测到的操作。
  • 功能选择。开发过程需要独立的筛选与配置流程。平台能让团队决定要公开哪些操作功能。
  • 工具设计。名称、描述和架构需手动编写并由内部维护。平台则提供配置选项,控制人工智能如何识别这些元素。
  • 身份认证。内部开发意味着需要处理凭证传递和敏感信息管理。平台则可在运行时复用API现有的身份认证机制。
  • 托管。当由团队自行开发时,运行环境、传输方式及端点都归该团队所有;而购买平台服务后则由平台负责。
  • 测试。开发过程需要搭建相应的检测与测试环境。平台会在发布前提供测试接口。
  • 监控。日志、分析数据及警报功能均为内部开发或集成。相关平台则提供托管式的使用情况与性能监测信号。
  • 更新。版本控制、部署及回滚均由团队内部完成。平台则提供配置审核与版本管理功能。
  • 运行时控制。自行开发可实现对自定义代码及基础设施的完全控制;而平台则在其支持的配置模型范围内提供控制功能。
  • 因此,这并非代码与无代码的对比,而是团队自主拥有的基础设施与由他人管理的基础设施之间的比较。

    托管路由的一个示例:0mcp

    0mcp是一个专为那些已拥有API定义、希望使用托管式MCP服务器而不必管理整个MCP架构的SaaS团队设计的平台。其工作流程包括:

    • 导入受支持的 Swagger 或 OpenAPI 定义,或是 Postman 集合
    • 检测端点与操作
    • 筛选可用的 API 函数
    • 生成或修改相关工具、资源及提示信息
    • 重新表述功能名称与描述
    • 测试托管服务器
    • 将 API 密钥、Bearer 令牌或 OAuth 凭证转发给原始 API
    • 保存配置版本、查看更改并恢复到早期版本

    该平台通过 Streamable HTTP 提供生成的服务器服务,并自行承担托管功能。目前不支持本地的 stdio MCP 服务器。这对于需要远程托管端点的团队更为适用,而非那些主要需要在桌面应用程序旁运行本地进程的团队。

    平台能够替代及无法替代的认证方式

    托管平台绝不能替代SaaS API内部的授权模型。API始终负责判断凭证是否有效、该凭证属于哪位租户或用户、该用户可以读取哪些记录以及能够执行哪些操作。

    使用0mcp时,凭证通过MCP客户端传入,并在每次请求时被转发给原始API,平台不会存储这些凭证。团队仍需正确配置API的认证机制,使用最小权限的凭证,并测试被拒绝的请求。

    控制程度各有不同

    人们通常对托管平台的担忧在于会失去控制权。这种担忧有其合理性,但需要具体化。如果是自建服务器,团队可以掌控实现细节;而使用此类平台时,团队只能控制平台支持的产品相关选项:

    • 哪些API操作会被公开
  • 现有的工具、资源及提示词有哪些
  • 功能是如何命名和描述的
  • MCP的名称及托管域名
  • 配置版本何时发布或恢复
  • 它无法控制平台内的任意运行时代码,且该平台也不能替代自定义业务逻辑。对于那些现有API无法处理的、需要特殊编排的工作流,或许更适合在内部自行开发。

    这种划分本身就很有用:基于API的功能可以交由托管服务处理,而自定义代码则专用于产品中真正需要它的部分。

    适合自行开发的场景

    当出现以下几种情况时,建议在内部开发:

    • MCP是一项公司希望深入掌控的战略性功能。
    • 工具的功能表现必须超越对现有API操作的简单映射。
  • 需要本地stdio功能,或是平台所不具备的传输机制。
  • 需要专门的运行时环境、内部网络部署或自定义数据处理方式。
  • 已具备维护该系统的工程、安全及运营能力。
  • 公司政策要求具备平台无法提供的控制功能或部署系统。
  • 自定义控制的长期价值高于其维护成本。
  • 自行开发并不必然能提升安全性或可靠性。虽然团队可以设计这些特性,但仍需确保其得到一致的实施与运营。

    适合使用平台的场景

    在以下情况下,使用此类托管平台更为合适:

    • 产品已具备实用的API功能
    • 团队希望尽快拥有托管式的MCP服务器
    • 现有的 API 应该继续作为业务规则和授权的权威依据
    • 选择专注的功能集比自行开发每个工具更为合适
    • 相比独立的凭证系统,透传式认证更佳
    • 需要托管式的测试、日志记录、分析功能以及版本控制
    • 无需自行承担全部的托管和基础设施层面

    如果需求是本地的 stdio 服务器、在服务器上运行的自由格式代码,或是除 Streamable HTTP 之外的其他传输方式,那么这种适配性就会减弱。那些有严格基础设施、合规性或可用性要求的团队也应仔细审视该产品的现有功能范围,因为 0mcp 既没有正式的 SLA 保障,也没有正式的安全认证。明确这些界限是做出负责任决策的重要环节。选择平台时应基于其真正能解决的实际问题,而非那些它从未宣称具备的功能。

    首先需要回答的五个问题

    现有的 API 已经是合适的产品接口了吗? 清晰的操作流程、数据结构、认证机制以及有用的响应,都是构建 API 到 MCP 工作流的良好基础。如果 API 中缺少核心业务功能,仅修改 MCP 层也无法填补这一产品缺陷。

    AI工作流需要多少自定义功能?当每项功能都能直接对应到某个API操作时,平台就能减少实现工作量。而那些API无法处理的复杂协调流程、新的业务规则或数据聚合功能,则可能需要自定义开发。

    六个月后谁来负责管理这个接口端点?必须明确指定负责处理故障、凭证管理、API变更、工具质量、延迟问题以及回滚操作的人选。如果没有明确的负责人,再增加一个自我管理的服务只會带来更多风险而非价值。

    客户需要哪种部署模式?如果必须使用本地的stdio功能,那就选择内部开发,或者考虑其他平台。

    这里应该由什么来控制呢?它分为多个层次:业务规则、不同用户可查看的数据范围、所开放功能的选择、底层基础设施,以及运行时的任何自定义代码。一个团队可以自行处理前三层,而将后两层交由他人负责。

    混合模式也是可行的

    这种选择不必一成不变或非此即彼。SaaS公司可以通过平台提供基于API的简单功能,同时为需要复杂逻辑的工作流开发自定义的MCP服务。这样,它可以在投入大量资源构建内部平台之前,先了解用户真正需要的工具;在尝试基于AI的功能时,也可以保留原有的API及其授权机制不变。

    关键在于明确的分界:管理型功能的列表、自定义功能的列表、每个运行时的指定负责人,以及测试变更的统一方法。

    真正的核心问题是所有权

    是自行构建还是购买MCP基础设施,归根结底取决于所有权问题。当需要自定义功能、严格的部署控制或战略性的平台掌控权,且其带来的工程与运营投入值得时,自行编写服务器是合理的选择。而当现有API已具备值得公开的功能,且团队更愿意将精力用于应用开发而非再搭建一层基础设施时,应选择管理型平台。