
使用 C++ 和 Win32 API 创建 GUI 窗口应用程序:从零构建 Windows 桌面界面
最近,AI Agent 和外部工具之间的互动变得越来越流行。从 OpenAI 最先推出的 Function Calling 功能,到各种插件和框架,大家都在努力让 AI 模型能更有效地调用外部的功能。不过,目前这些集成方式还是比较分散,开发者需要为每个服务手动设置接口、处理认证和逻辑,而且不同平台之间还互不兼容,确实挺麻烦的。
就在这种情况下,Anthropic 在 2024 年底推出了一个叫做模型上下文协议(Model Context Protocol,简称 MCP)的新东西。这个协议的野心不小,它想做的事情就像编程语言里的 LSP(Language Server Protocol)一样,为 AI 和工具之间的互动设定一个标准,让 AI Agent 能动态地发现、选择和组织工具,甚至还支持人在操作过程中插手。
自从 MCP 推出以来,它的发展速度非常快,社区里已经出现了好几千个 MCP 服务器,能连接到 GitHub、Slack 甚至 Blender 这样的 3D 设计工具。像 Cursor、Claude Desktop 这样的应用也开始支持 MCP 了,只要装上新的服务器,就能扩展它们的能力。
—1—MCP 架构设计剖析
MCP 架构设计分为核心组件、传输层和通信、MCP 服务器生命周期等构成,下面详细剖析之。
MCP 架构由三个核心组件组成:MCP 主机(MCP Host)、MCP 客户端(MCP Client)和 MCP 服务器(MCP Server)。这些组件协同工作,以促进 AI 应用、外部工具和数据源之间的无缝通信,确保操作的安全性和正确管理。
如图 2 所示,在典型工作流程中,用户向 MCP 客户端发送提示词,客户端分析意图,通过 MCP 服务器选择适当的工具,并调用外部 API 来检索和处理所需的信息,然后通知用户结果。
MCP 主机是一个 AI 应用,它在运行 MCP 客户端的同时,为执行基于 AI 的任务提供环境。它集成交互工具和数据,以实现与外部服务的顺畅通信。
比如:
MCP 主机承载 MCP 客户端,并确保与外部 MCP 服务器通信。
MCP 客户端在主机环境中充当中介,管理 MCP 主机与一个或多个 MCP 服务器之间的通信。
此外,MCP 客户端还:
MCP 客户端通过传输层与 MCP 服务器通信,促进主机与外部资源之间的安全、可靠的数据交换和顺畅互动。
MCP 服务器使 MCP 主机和客户端能够访问外部系统并执行操作,提供三种核心能力:工具、资源和提示词。
工具:启用外部操作。
资源:向 AI 大模型公开数据。
提示词:用于工作流程优化的可重用模板。
传输层确保安全、双向通信,允许主机环境与外部系统之间的实时互动和有效数据交换。
这种结构化通信确保了高性能互动,并使 AI 大模型与外部资源保持同步,提高 AI 应用的效果。
如图 3 所示,MCP 服务器的生命周期包括三个关键阶段:创建、运行和更新。
每个阶段定义了确保 MCP 服务器安全和高效运行的关键活动,使 AI 大模型和外部工具、资源和提示之间能够无缝互动。
MCP 服务器负责管理外部工具、数据源和工作流程,为 AI 大模型提供执行任务所需的必要资源,确保高效和安全。
它包括几个关键组件:
创建阶段是 MCP 服务器生命周期的初始阶段,在此阶段,服务器被注册、配置并准备运行。
此阶段涉及三个关键步骤:
运行阶段是 MCP 服务器积极处理请求、执行工具调用并促进 AI 应用与外部资源之间无缝互动的阶段。
更新阶段确保 MCP 服务器保持安全、最新,并能够适应不断变化的需求。
此阶段包括三个关键任务:
了解 MCP 服务器的生命周期对于识别潜在漏洞和设计有效的安全措施至关重要。