MCP与函数调用:架构和用例

MCP与函数调用

无抓取代理浏览器可以通过MCP服务器暴露,以便兼容的代理主机可以发现浏览器功能,而面向模型的函数调用机制可能仍然选择一个工具。

摘要

  • MCP和函数调用位于不同的层次。 MCP标准化了主机如何连接到能力服务器;而函数调用则构建了模型请求使用工具的结构。
  • 它们通常是协同工作的。 主机可以发现MCP工具,并通过本机工具调用将所选模式呈现给模型。
  • 函数调用不执行代码。 应用程序验证并运行请求的函数,然后返回结果。
  • MCP提供的不仅仅是工具。 该协议还定义了资源、提示、生命周期行为和传输规则。
  • 安全性仍然是主机的责任。 发现不等于信任,模型选择不等于授权。

MCP与函数调用:直接答案

函数调用是一种面向模型的交互模式:应用程序提供工具模式,模型返回结构化调用,应用程序代码执行它。模型上下文协议是一种应用集成协议,通过它,主机和客户端连接到暴露工具、资源和提示的服务器。

这些机制是互补的。MCP可以标准化在代理主机与外部能力服务器之间的发现和调用;然后主机可以使用其提供者的函数调用格式将批准的子集暴露给模型。

MCP与函数调用之间的有用边界是责任单位。一个选项可能定义数据格式、协议、模型或自动化库,而另一个则在MCP与函数调用的上下文中围绕它定义工作流。将不同的层视为替代品会导致薄弱的架构决策:团队比较标签,错过执行边界,并在稍后发现这两个组件在MCP与函数调用的背景下都是必需的。一个合理的比较阐明每个选项接收了什么,改变了什么,返回了什么,以及谁在MCP与函数调用的背景下操作周围系统。

对于关于MCP与函数调用的实现决策,从所需的输出和允许的失败模式开始。在选择技术之前,写下新鲜感、延迟、确定性、浏览器覆盖、数据所有权、可观察性和维护期望,在MCP与函数调用的上下文中。选择应该可以根据这些期望进行测试。一个熟悉的工具并不自动是正确的工具,而一个较新的抽象并不自动是升级,当一个较小的确定性组件已经在MCP与函数调用的上下文中满足合同。

MCP与函数调用一目了然

最重要的行是每个机制标准化的集成边界。

维度函数调用MCP
边界应用程序和模型API主机/客户端与能力服务器
发现应用程序提供模式客户端列出服务器功能
执行应用程序运行自定义代码客户端调用服务器方法
附加表面特定于提供者的工具特性工具、资源、提示和生命周期
可移植性取决于模型提供者API跨兼容主机和服务器的共享协议

比较矩阵使MCP与函数调用变得具体,因为每一行描述了操作后果,而不是市场形容词。从工作负载向外读取行:首先识别输入和预期结果,然后检查控制流、状态、可移植性和操作成本在MCP与函数调用的上下文中。一行只有在它改变一个真实需求时才重要。例如,广泛的语言支持对于一个多语言组织是有价值的,但对于一个已经拥有其浏览器运行时的小型TypeScript服务,在MCP与函数调用的上下文中则无关紧要。

将这两种机制都称为“工具”会引起混淆,因为一个描述模型如何请求操作,而另一个描述软件如何获取和调用功能。将主机、模型API、MCP客户端、MCP服务器和下游服务绘制为单独的框。

MCP和函数调用如何协同工作

MCP客户端连接到服务器,协商受支持的功能,并获取工具定义。主机在将这些定义放入模型上下文之前,过滤或调整这些定义。

当模型返回一个函数或工具调用时,主机验证名称和参数,将调用映射到MCP工具,并向服务器发送协议请求。结果通过主机返回,并成为模型输入。这种翻译使一个服务器可以与多个主机一起工作,同时每个主机保持对模型提供者详细信息、批准和上下文管理的控制。

MCP与函数调用的生产设计应在日志和指标中暴露这些内部阶段。记录所选路径、提供给该路径的输入、返回工件的身份和验证结果,在MCP与函数调用的上下文中。没有阶段级别的证据,成功的网络请求可以隐藏空数据,流畅的模型响应可以隐藏缺失的工具调用,浏览器脚本可以隐藏导航到错误页面的情况,在MCP与函数调用的上下文中。可观察性属于含义变化的边界。

何时使用函数调用、MCP或两者

从系统中的客户端、服务器和所有权边界中选择机制。

使用直接函数调用

一个应用程序拥有一小组本地功能,不需要可重用的服务器边界。

使用MCP

能力应该可以被发现并在多个兼容主机之间重用,或者由其他团队维护。

两者都使用

主机发现MCP工具,模型通过本地工具调用在批准的子集当中选择。

两者都不使用

当不需要模型决策时,确定性应用调用更清晰。

上述情况是起点,而不是永久标签。当数据源、浏览器矩阵、模型行为、合规边界或团队所有权发生变化时,要重新评估MCP与函数调用。原型通常优化设置速度,而生产系统必须在MCP与函数调用的背景下优化证据、访问控制、可预测故障和可支持性。将选择记录在一个简短的决策记录中,以便下次迁移基于原始限制,而不是关于MCP与函数调用的民间传说。

MCP引入协议、过程、传输和信任边界,而本地功能不需要这些边界。这些边界创造了重用性和互操作性,但它们也要求生命周期处理、模式治理、服务器身份和权限审核。

MCP和工具调用错误

大多数集成缺陷源于将发现、选择和授权合并为一步。

  • 将发现的工具视为受信任的。 主机必须验证服务器身份、配置和允许的能力范围。
  • 将每个工具发送到模型。 大型工具集增加了上下文成本和选择模糊性;按任务和用户权限进行过滤。
  • 跳过参数验证。 结构化输出缩小了形状,但并不证明语义安全或授权。
  • 在模糊描述中隐藏副作用。 工具名称和描述应使读取、写入、成本和外部通信清晰。
  • 将不受信任的内容作为指令返回。 工具输出是数据,可能包含提示注入或误导性控制文本。

每个MCP与函数调用的陷阱应映射到一个可观察的检查。验证最终页面或源身份,检查所需字段,而不是相信状态代码,保留生成结果的确切配置,并在MCP与函数调用的上下文中分离获取与转换。这将一个关于工具的争论转变为关于失败合同的诊断。这也防止广泛的变化掩盖第一个破坏的边界。

将安全性和合规性保持在MCP与函数调用设计之内。使用经过授权的公共来源,尊重适用条款和爬虫偏好,最小化保留数据,并在MCP与函数调用的上下文中保持凭据不在日志和内容中。一个技术能力强的浏览器、抓取器、代理或API客户端并不赋予权限。操作员仍然对目标范围、数据处理、工作负载限制以及对重要行动的人为批准负责,在MCP与函数调用的背景中。

设计集成边界

在编写适配器代码之前绘制系统图,以便每个信任决策都有明确的所有者。

  1. 列出用户目标并确定哪些行动真正需要模型选择。
  2. 使用狭窄的模式和清晰的副作用定义本地功能或MCP服务器能力。
  3. 验证服务器并将能力绑定到用户和工作区权限。
  4. 在模型上下文中之前过滤工具集。
  5. 验证每个请求的参数,并要求对重要行动进行批准。
  6. 分别分类协议错误、工具错误、被拒绝的行动和无效结果。

在承诺进行平台范围迁移之前,使用小型代表性语料库运行MCP与函数调用评估。包含一个正常案例、一个缺失字段案例、一个动态或状态相关案例(如相关),以及一个故意无效的控制,在MCP与函数调用的背景中。无效控制很重要:如果它通过,接受测试测量的是传输而非正确性,在MCP与函数调用的背景中。将证据保存在决策记录旁边,以便将来的版本变更可以在MCP与函数调用的上下文中与相同的工作负载进行评估。

合同测试应比较广告模式、主机适配器和服务器的实际验证。一个在发现中出现但拒绝文档输入的工具不是一个互操作的能力。

在MCP工具堆栈中要测量什么

协议成功只是有用工具调用的第一层。

信号要测量什么为什么重要
发现预期的能力名称和模式版本检测服务器或适配器漂移
选择为任务选择正确的工具测量面向模型的质量
授权允许、拒绝和需要批准的调用措施政策执行
执行有效结果、工具错误和延迟衡量服务器可靠性

在用户获得价值的层面上,衡量MCP与功能调用。框架启动时间、令牌计数或响应状态可能是有用的诊断,但都不能证明输出在MCP与功能调用的上下文中是正确的。结合操作性措施与语义接受:预期记录计数、支持的引用、所需的浏览器状态、符合架构的文档,或在MCP与功能调用的上下文中的确认操作。按类别存储失败,以便团队可以看到质量是否受到输入、控制流、执行或验证的限制,在MCP与功能调用的上下文中。

主要参考锚定比较: 模型上下文协议工具规范, OpenAI响应API工具定义, 和 JSON-RPC 2.0规范. 这些来源定义了技术本身;它们是比在MCP与功能调用上下文中比较页面之间复制的特征表更强有力的证据。版本特定的细节在实现升级时应再次检查。

MCP连接系统;功能调用指导模型

使用功能调用来构建模型请求的操作,使用MCP来标准化可重用的能力服务器,并且在主机需要可移植集成和模型导向工具选择时一起使用。

MCP与功能调用比较的实际结果是一个边界,而不是一个普遍赢家。选择满足当前合同的最小系统,在意义变化的地方进行检测,并为在MCP与功能调用上下文中尚不存在的需求保留升级路径。当工作负载需要受管渲染或代理控制的浏览器会话时,代理浏览器可以提供该执行层,而应用程序保持目标、模式和接受检查的所有权,在MCP与功能调用的上下文中。

准备好给代理一个浏览器工具了吗?

通过您选择的主机连接代理浏览器,并保持能力过滤、批准和验证明确。

今天注册并获得 $5的免费信用无需信用卡.

领取您的$5信用 →

常见问题

MCP是功能调用的替代品吗?

不。MCP和功能调用解决不同的边界,通常一起结合在一个主机中。

功能调用执行一个函数吗?

不。模型返回一个结构化请求。应用程序代码必须验证、授权、执行并返回结果。

MCP需要一个LLM吗?

不。MCP是一个应用程序协议。客户端可以确定性地列出和调用能力,而无需模型选择操作。

MCP工具自动安全吗?

不。工具元数据和服务器发现并不建立信任。主机需要身份验证、权限、批准规则、参数验证和输出处理。

何时本地函数比MCP简单?

当一个应用程序拥有一个小的能力集且不需要可重用服务器或跨主机集成时,本地函数更简单。

参考文献