【2026最新】人工智能智能体协议详解,大模型开发者必学收藏指南

文章介绍了人工智能智能体协议的定义、种类与架构,重点解析了模型上下文协议(MCP)作为标准化连接层的作用。MCP使AI智能体能与外部工具和服务有效通信,采用客户端/服务器架构,支持多种传输方式。文章详细讲解了如何构建MCP服务器,帮助开发者实现智能体间的互操作性和标准化集成,是构建多智能体系统的必备知识。


什么是人工智能智能体协议?

来源:https://www.ibm.com/think/topics/ai-agent-protocols

原标题:What are AI agent protocols?

作者:Rina Diane Caballar1, Staff Writer;

Cole Stryker2, Staff Editor, AI Models

图片来源:Emily Buder/Quanta Magazine; Carlos Arrojo for Quanta Magazine

智能体协议建立了智能体3之间以及智能体与其他系统之间的通信标准。这些协议规定了消息的语法、结构和顺序,以及通信惯例,例如智能体在对话中扮演的角色,以及如何或何时响应消息。

基于智能体的人工智能系统通常各自独立运行4。它们由不同的供应商使用不同的智能体框架5和不同的智能体架构构建6。现实世界的集成是一项挑战,而将这些分散的系统连接起来需要针对所有可能的智能体交互类型定制不同的连接器。

这就是协议发挥作用的地方。它们将分散的多智能体系统7转变为一个相互关联的生态系统,在这个生态系统中,人工智能驱动的智能体共享一种相互发现、理解和协作的方式。

智能体协议是智能体编排8的一部分,但它们并不充当编排者的角色。它们规范了通信,但并不管理智能体工作流程的9协调、执行和优化。

对智能体协议的基本要求

智能体协议应具有以下特性:

  • 互操作性10
  • 降低智能体开发复杂性
  • 标准化和更顺畅的整合

互操作性

智能体协议打破了信息孤岛,使智能体型人工智能11能够相互通信,而无需考虑其底层实现方式。它们促进了智能体12在不同设备、环境和平台上的无缝协作。

降低智能体开发复杂性

由于协议处理了智能体交互的复杂性,并通过软件开发工具包 (SDK)13抽象了这种复杂性,因此它们有助于简化构建多智能体系统的过程。人工智能开发人员可以将更多精力集中在创建新的智能体功能和增强现有功能上。

标准化和更顺畅的整合

智能体协议提供了一套结构化的通信方式。由于许多此类标准化协议都构建于成熟技术之上,因此有助于确保与现有技术栈的兼容性,从而实现更顺畅的企业集成。

智能体协议的种类

许多协议的开发仍处于初级阶段,尚未得到广泛使用或大规模应用。这种不成熟性意味着各组织必须做好准备,成为早期尝试者,并适应不断变化和演变的规范。

随着智能体技术的演进,可能会出现新的协议。以下是一些当前的人工智能智能体协议:

  • Agent2Agent 协议 (A2A)
  • 智能体通信协议(ACP)
  • 智能体网络协议(ANP)
  • 智能体-用户交互协议(AG-UI)
  • Agora 协议
  • 语言模型操作系统协议(LMOS)
  • 模型上下文协议(MCP)

Agent2Agent 协议 (A2A)

A2A 协议14是一种用于智能体通信15的开放标准16,最初由谷歌发起,现在由 Linux 基金会管理。它采用客户端-服务器模型,包含三个步骤的工作流程17:

  1. 当一个实体(人类用户或其他智能体)向客户端智能体发起任务请求时,就会发生发现过程,客户端智能体随后会查找远程智能体以确定最合适的智能体。
  2. 客户端智能体一旦识别出能够完成任务的远程智能体,就会进行身份验证。远程智能体负责授权18并授予访问控制19权限。
  3. 通信过程为:客户端智能体发送任务,远程智能体处理任务。智能体之间的通信通过 HTTPS 进行安全传输,数据交换格式为 JSON-RPC 2.0(远程过程调用)。

智能体通信协议(ACP)

与 A2A 类似,智能体通信协议 (ACP)20是另一个用于智能体之间通信的开放标准,最初由 IBM 的 BeeAI21引入,现在是 Linux 基金会的一部分。

RESTful API22向 ACP 服务器发送请求。ACP 服务器在单个 HTTP 终端后托管一个或多个智能体,并将任务路由到相应的智能体。

以下是 ACP 的其他主要功能:

  • 该协议23可与 Postman 等标准 HTTP 工具甚至浏览器一起使用,但也有 SDK 可供使用。
  • 在线发现可以通过直接查询 ACP 服务器和访问知名网址上的公共清单文件来实现。离线发现则可以通过集中式注册表或将智能体元数据24直接嵌入到其分发包中来实现。
  • ACP 接受不同的消息类型,例如音频、图像、文本、视频或自定义二进制格式。

智能体网络协议(ANP)

智能体网络协议(ANP)25是一个开源26协议,其目标是成为“智能体网络时代的HTTP”。因此,它采用HTTP进行数据传输,并采用JSON-LD(JSON链接数据)进行数据格式化。

ANP采用由三层组成的对等网络架构:

  • 身份层实现了端到端加密27以确保通信安全,并基于 W3C DID(去中心化标识符)标准实现了去中心化身份验证28。
  • 元协议层允许智能体协商并达成一致,以决定如何通信。
  • 应用协议层允许智能体自动描述其功能,并为智能体发现提供支持。

智能体-用户交互协议(AG-UI)

智能体-用户交互协议(AG-UI)29旨在规范后端智能体与前端或面向用户的应用程序之间的连接方式。它专为实时人机交互而设计,例如与人工智能助手30和聊天机器人31、实时传输状态更新以及其他需要人机协同的智能体自动化32操作。

AG-UI 的事件驱动架构允许智能体根据特定的系统触发器或用户输入生成事件。该协议定义了多种事件类别,包括消息发送和接收、工具调用33以及任务完成等。

其中间件层支持多种传输方式,例如服务器发送事件 (SSE)34、 Webhook35 和 WebSocket。AG -UI 还允许使用安全智能体在智能体和用户界面之间安全地路由请求。

Agora 协议

Agora 是一种面向由36大语言模型 (LLM)37驱动的智能体的通信协议。它依赖于大语言模型智能体38的几项核心能力:自然语言理解39、指令跟踪、编写和运行代码以及自主协商。

大语言模型智能体可以实现并支持自己的协议,这些协议以纯文本形式在协议文档中进行描述。文档的第一部分包含元数据,用于标识协议名称、描述以及它是用于单轮还是多轮对话。第二部分概述了通信方式,指令以自然语言和代码混合的形式给出。之后,智能体可以自主协商采用哪种协议。

Agora 使用 HTTPS 传输数据,并使用 JSON 进行格式化。它还使用基于哈希(hash)的身份验证系统来管理协议文档。

LMOS 协议

由 Eclipse 基金会开发的语言模型操作系统 (LMOS) 协议40旨在构建智能体互联网 ( IoA ),即一个互联网规模的多智能体生态系统。与 ANP 类似,其结构化架构由三层组成:

  • 身份和安全层提供加密通信,并支持不同的身份验证方案,例如 W3C DID 和 OAuth 2.0。
  • 传输协议层允许智能体选择和调整适合其每次交互目的的传输协议。
  • 应用协议层概述了智能体和工具描述的格式、发现方法、语义数据模型和WebSocket 子协议。

LMOS 协议使用 JSON-LD 来描述工具和智能体的功能以及其他元数据。工具和智能体的发现可以通过动态方式(查询中央目录)或通过去中心化网络进行。

模型上下文协议(MCP)

由 Anthropic 公司推出的模型上下文协议 (MCP)为41人工智能模型42提供了一种标准化的方式,使其能够获取执行任务所需的上下文信息。在智能体领域,MCP 充当智能体与外部服务和工具(例如 API43、数据库、文件、网络搜索和其他数据源)连接和通信的层级。

MCP包含以下三个关键架构要素:

  • MCP主机包含编排逻辑,可以将每个MCP客户端连接到MCP服务器。它可以托管多个客户端。
  • MCP客户端将用户请求转换为协议可以处理的结构化格式。每个客户端都与一个 MCP 服务器建立一对一的关系。客户端负责管理会话、解析和验证响应以及处理错误。
  • MCP服务器将用户请求转换为服务器操作。服务器通常是 GitHub 代码库,支持多种编程语言,并提供对各种工具的访问。它们还可以通过 IBM 和 OpenAI 等人工智能平台提供商,将大语言模型推理44与 MCP SDK 连接起来。

在客户端和服务器之间的传输层中,消息以 JSON-RPC 2.0 格式传输,使用标准输入/输出 (stdio) 进行轻量级同步消息传递,或使用服务器发送事件 SSE 进行异步事件驱动调用。

选择人工智能智能体协议时需要考虑的因素

由于缺乏标准化的评估基准45,企业必须自行评估最符合自身业务需求的协议。他们可能需要从一个规模较小、可控的用例入手46,并结合全面严格的测试。

评估智能体协议时,需要注意以下几个方面:

效率

理想情况下,协议的设计旨在最大限度地减少延迟47,从而实现快速数据传输和迅速响应。虽然通信开销不可避免,但必须将其控制在最低限度。

可靠性

智能体协议必须能够应对智能体工作流程中不断变化的网络状况,并具备相应的机制来管理故障或中断。例如,ACP默认采用异步通信,这使其适用于复杂或长时间运行的任务。而A2A则支持使用SSE进行实时流传输,以处理大型或长时间的输出或持续的状态更新。

可扩展性

协议必须足够稳健,才能适应不断增长的智能体生态系统,且性能不下降。评估可扩展性可以包括在一段时间内逐步或突然增加智能体数量或与外部工具的连接,以观察协议在这些条件下的运行情况。

安全

维护安全至关重要,智能体协议正越来越多地融入安全防护措施,例如身份验证、加密48和访问控制。∎

什么是模型上下文协议 MCP?

来源:https://www.ibm.com/think/topics/model-context-protocol

原标题:What is Model Context Protocol (MCP)?

作者:Anna Gutowska49, AI Engineer, Developer Advocate

图片来源:Kevin Hong for Quanta Magazine

模型上下文协议 (MCP) 为人工智能50应用程序提供了一个标准化层,使其能够与外部服务(例如工具33、数据库51和预定义模板)进行有效通信。

您是否曾经尝试构建多智能体系统7,但却难以在各个专业智能体之间有效地传播信息?提供给您的智能体的各种预构建和自定义工具3是否会导致工具执行错误或输出解析错误?或者,这些复杂情况是否让您完全放弃了开发自己的智能体的尝试?

这些障碍可以通过模型上下文协议(MCP)来解决。MCP 使智能体能够在遵循标准化工具集成协议的同时,具备上下文感知能力。

人工智能智能体3是一种能够代表用户或其他系统自主执行任务的系统或程序。它通过设计自身的工作流程并使用可用工具来完成这些任务。多智能体系统7由多个智能体组成,它们协同工作以代表用户或其他系统执行任务。

你可以把 MCP 看作是人工智能应用领域的工具,其作用类似于 USB-C 端口在硬件领域的作用。

这种类比突出了 USB-C 端口在连接硬件方面所提供的适应性,将其与各种工具和数据源通过 MCP 为人工智能模型提供上下文的标准化方式进行了比较42。

有意义的工具

大型语言模型(LLM),例如 Granite52、Gemini 和 Llama,在单独部署时功能有限。在没有任何人工智能工具的情况下,大语言模型擅长的领域包括:

  • 后续文本预测:提示大语言模型完成诸如“Jack and Jill went up the…”之类的句子,结果正确预测为“Jack and Jill went up the hill”。此提示和响应是后续文本预测的一个例子,并且在模型训练所用的文本上效果最佳。
  • 基本问答:由于大语言模型本身无法访问外部数据库或进行网络搜索,因此它只能回答与模型训练数据中的信息相关的自然语言问题。例如,“请告诉我凡尔赛条约的内容”,因为关于这场重大世界大战的信息很可能包含在通用模型的训练数据中。语言学习模型通常以聊天机器人的形式执行此类文本生成操作31。
  • 情感分析53:大语言模型可以处理文本并确定其表达的是积极、消极还是中性的情感。
  • 语言翻译:大语言模型可以跨语言和地域翻译文本。然而,并非所有语言学习模型都使用多种语言的数据进行训练。

除了基本功能外,无法访问外部工具的大语言模型无法成功运行任何需要访问实时信息的用户查询。为了使大语言模型能够产生更有意义的结果,可以引入工具集成。提供诸如网络搜索、数据集和 API 之类的外部工具43,可以让大语言模型扩展其功能,使其超越训练数据的限制。

为了更进一步,我们可以利用大语言模型及其可用工具构建智能体。总而言之,智能体系统为大语言模型提供了一系列工具,使模型能够确定合适的工具使用方法,适应不断变化的环境,并基于工具的输出结果形成综合结论。然而,这些人工智能系统在大规模应用中往往会失效。因此,Anthropic 公司于 2024 年推出的 MCP(模型上下文协议)为人工智能与工具的交互建立了一个开放标准。

MCP 制定了一项标准

将外部服务连接到大语言模型非常繁琐。想象一下,一个电路将电机连接到各种电源。MCP 就像这个电路的线路和配电盘;它决定哪些电流(信息)流向电机(人工智能模型)。工具输出或模型上下文可以比作输入电流——它是来自电源的电压,可以包含内存、工具和过往发现。

作为配电盘,MCP 决定连接哪些电源(工具输出或上下文),以及何时连接,调节电流(信息流),过滤并确定输入的优先级。它这样做是为了确保只有相关的线路通电(加载相关的上下文),并管理电路的时序和路由,以避免系统过载。

就像设计良好的电路可以防止过载并确保高效的电源使用一样,MCP 可以作为连接器,促进高效、相关和结构化的上下文使用,从而实现最佳的人工智能模型性能。

MCP 基于共识为人工智能工程师建立了一个新的开源26标准。然而,标准在软件行业并非新概念。例如, REST API22就是行业标准,它通过符合表征状态传输(Representational State Transfer, REST)设计原则的 HTTP 请求,在应用程序之间提供一致的数据交换。

同样,MCP通过制定标准,统一了大语言模型和外部服务,从而实现高效通信。该标准支持“即插即用”的工具使用,无需为每个工具编写自定义集成代码。

MCP 并非智能体框架,而是一个用于智能体访问工具的标准化集成层。它与智能体编排框架相辅相成。MCP 可以与 LangChain54、 LangGraph55、 BeeAI56、 LlamaIndex 和 crewAI 等智能体编排框架配合使用57,但不会取代它们;MCP 不决定何时调用工具以及调用工具的目的。

MCP 提供了一种标准化的连接方式,以简化工具集成。最终,大语言模型根据用户请求的上下文来决定调用哪些工具。

MCP 架构

MCP 的客户端/服务器模型可以分解为三个关键架构组件:

MCP 主机

人工智能应用接收用户请求,并通过 MCP 获取上下文信息。此集成层可以包含 Cursor 或 Claude Desktop 等集成开发环境(IDE)。它包含编排逻辑,可以将每个客户端连接到服务器。

MCP 客户端

在 MCP 生态系统中,主机和服务器之间的通信必须通过客户端进行。该客户端存在于主机内部,并将用户请求转换为开放协议可以处理的结构化格式。一个 MCP 主机可以有多个客户端,但每个客户端都与一个 MCP 服务器对应。

MCP 客户端的示例包括 IBM® BeeAI 、Microsoft Copilot Studio、Claude.ai、Windsurf Editor 和 Postman。客户端充当会话管理器,负责处理中断、超时、重新连接和会话关闭。客户端还会解析响应、进行错误处理,并验证响应是否与上下文相关且恰当。

MCP 服务器

外部服务通过将用户请求转换为服务器操作,为大语言模型提供上下文。MCP 服务器集成示例包括 Slack、GitHub、Git、Docker 或网络搜索。这些服务器通常是 GitHub 代码库,支持多种编程语言(C#、Java™、TypeScript、Python 等),并提供对 MCP 工具的访问。

通常可以在这些 GitHub 代码库中找到教程,以帮助进行技术实现。MCP 服务器还可以通过 IBM 和 OpenAI 等人工智能平台提供商,将大语言模型推理44链接到 MCP SDK。这样,就创建了一个可重用的 MCP 服务,供客户端将其作为“标准化”聊天工具访问。

MCP 服务器用途广泛,因为它们允许连接到内部和外部资源及工具。根据 Anthropic 提供的文档,模型上下文协议 (MCP) 服务器通过以下方式公开数据:

  • 资源:从内部或外部数据库检索信息。资源返回数据,但不执行可操作的计算。
  • 工具:与能够执行计算或通过 API 请求获取数据等额外作用的工具进行信息交换。
  • 提示:用于大语言模型服务器通信的可重用模板和工作流程。

客户端和服务器之间的传输层负责双向消息转换。在客户端到服务器的数据流中,MCP 协议消息被转换为 JSON-RPC 格式,从而可以传输多种数据结构及其处理规则。

在反向服务器到客户端流中,以 JSON-RPC 格式接收到的消息被转换回 MCP 协议消息。

JSON-RPC 消息类型共有三种:请求、响应和通知。请求需要服务器响应,而通知则不需要。

模型上下文协议架构

在客户端和服务器之间的传输层,MCP协议主要有两种传输方式,它们都以JSON-RPC 2.0格式传输消息。第一种是标准输入/输出(stdio),由于其输入/输出信息传输简单,因此最适合集成本地资源。这种格式用于轻量级的同步消息传递。此类资源包括本地文件系统、数据库和本地 API。

第二种是服务器发送事件 (SSE),它最适合集成远程资源。HTTP POST 请求用于传输客户端到服务器的消息,而 SSE 则用于反向传输。这种格式可以同时处理多个异步的、事件驱动的服务器调用。

MCP 的特性

想象一下,一个现实世界的人工智能系统能够扫描你的收件箱,安排客户会议,发送股票更新,并汇总过去一小时的弹性任务(Slack activity)。每个服务提供商构建 API 的方式都不同,需要传递的信息不同,返回的输出模式也不同。因此,这些工具哪怕最细微的改动都可能导致整个人工智能工作流程基础设施的崩溃。

此外,工程师还需要投入大量开发精力来手动构建这些工具连接,进行调试58并维护身份验证(例如 API 密钥和工具权限)。工具通常依赖于其他工具的输出,并且存在许多连接失败的极端情况。

因此,提供 MCP 集成作为大语言模型和开发工具之间的中间层至关重要。在这一层,MCP 可以将工具输出转换为模型可以理解的方式。无需在不同的命令行界面之间切换,所有工具集成都可以在同一位置完成。

MCP 在现实世界中有很多应用场景。例如,MCP 通过共享工作空间和通用工具增强多智能体编排8和通信,从而无需直接集成。

MCP 也可用于补充检索增强生成 (RAG)59。MCP 无需提供检索器来搜索向量库或知识库,而是可以通过服务器操作连接到向量数据库60。将数据库搜索作为工具,而不是在每次大语言模型调用中都传递检索器,可以更策略性地使用该工具。这种方法还允许在数据检索后进一步调用其他工具33。

MCP 的未来

MCP 代表了一种不断发展的大语言模型工具集成方法,它随着时间的推移不断成熟并重塑着这一领域。随着技术挑战的出现和 MCP 服务器的演进,该标准也在不断调整,MCP 也持续改进。

无论如何,标准化工具集成对于智能体自主运行和动态适应现实世界环境至关重要。

基于 MCP,我们可以实现智能体工作流程9的自动化,从而减少人工干预。反过来,MCP 带来的这种转变使我们能够将时间投入到更需要人类智慧和直觉的精细任务中。∎

如何搭建 MCP 服务器

来源:https://www.ibm.com/think/tutorials/how-to-build-an-mcp-server

原标题:How to build an MCP server

作者:Ash Minhas61, Manager, Technical Content | AI Advocate;

PJ Hagerty62, Lead, AI Advocacy;

Erika Russi63, Data Scientist

图片来源:Michele Sclafani for Quanta Magazine

在本教程中,您将构建一个简单的模型上下文协议(MCP)41服务器,该服务器提供了一个用于搜索 IBM 教程的工具。通过使用 fastmcp 框架和 requests 库构建的脚本从远程网址下载教程索引(JSON格式)。然后,它会搜索与用户查询匹配的内容,并返回格式清晰的结果列表。您还需要添加错误处理机制,如网络问题、错误 的 JSON 和意外情况等,使该工具更加健壮且易于上手。最后,您将运行 MCP 服务器,以便可以使用 Cursor 等客户端连接并进行测试。

为什么要使用 MCP?

企业和初创公司的开发者都在越来越多地开发基于生成式人工智能50的解决方案。为了使这些解决方案更有用,他们需要最新的信息和上下文。为此,机器学习模型42需要与工具、应用程序编程接口(API)43、软件开发工具包(SDK)13和前端系统进行互操作。

MCP 由 Anthropic 公司开发,并已被 OpenAI、Google DeepMind 等多家主流人工智能提供商以及整个行业广泛采用。它为人工智能模型提供了一种安全且标准化的方式来访问和使用外部数据、资源(例如提示模板)和工具。

此外,诸如 Cursor 和 Visual Studio Code 等集成开发环境(IDE)64也已采用 MCP,使其人工智能助手能够访问 MCP 服务器,从而提高其使用体验,使其更贴合上下文,更便于开发者使用。MCP 作为一项开放标准,被各组织用作沟通生成式人工智能创造的随机世界与当今大多数企业系统的确定性世界之间的桥梁。MCP 为大语言模型提供上下文信息,类似于其他一些新兴的设计模式,例如检索增强生成(RAG)59、工具调用33和智能体。

与其他解决方案相比,使用 MCP 的一些优势包括:

  • 规模:MCP 服务器只需定义和托管一次,即可供多个人工智能系统使用。这种容量减少了为多个生成式人工智能系统定义对相同源数据、资源和人工智能工具访问权限的需求。
  • 数据检索:与 RAG 不同,RAG 的数据检索需要在查询之前进行预处理和向量化,而 MCP 是动态的,允许信息源实时波动和更新。
  • 复杂性:正如我们在此演示的,MCP 的设置和集成都相当简单,可以轻松集成到人工智能应用中。您可以使用配置文件轻松实现 MCP 服务器在不同环境间的可移植性。
  • 平台无关性:除了可以使用 Python、TypeScript 或其他语言构建 MCP 服务器之外,它们也与特定的大语言模型解决方案无关。
  • 通过客户端/服务器模型进行调试:MCP 客户端向 MCP 服务器发送请求,服务器随后从各种外部系统和来源(例如 API、数据库或本地文件)获取必要的数据。这种结构化的方法确保人工智能模型接收到一致且相关的上下文信息,从而产生更准确、更可靠的输出。MCP 使用 JSON-RPC 对消息进行编码,并支持两种传输机制:标准 I/O 和流媒体式 HTTP。在协议的早期版本中,它还支持带有服务器发送事件 (SSE) 的 HTTP。

要持续掌握企业所需的最新信息,可能是一项艰巨的任务。MCP 可以帮助构建上下文,并将新信息整合到正在执行的合同、正在数字化但未必易于理解的遗留信息等内容中。这些信息既可以是内部信息,也可以是外部信息,但添加上下文信息可以避免耗时地重新培训大语言模型以使其发挥作用。

目前,有很多远程MCP服务器可用,github.com 上也有大量参考项目。

搭建步骤

这份分步指南来自 GitHub 代码库65,该代码库还包括创建 MCP 服务器时需要参考的 server.py 脚本。在本教程中,我们将逐步构建一个最基本的自定义 MCP 服务器,该服务器可以:

  • 连接到我们的 GitHub 教程仓库
  • 搜索用户可能感兴趣的主题
  • 返回结果,并附上教程链接。

为了方便制作本教程,我们创建了一种机制,通过该机制,您将构建的服务器可以轻松地使用我们的教程内容,而无需身份验证。

步骤 1:设置环境

  • 您的计算机上已安装 Python 3.11 或更高版本(通过在终端中运行 python3 --version 进行检查)。
  • 内置的 venv 模块可用(大多数系统都随 Python 一起提供;在某些 Linux® 发行版上,您可能需要使用 sudo apt install python3-venv 单独安装它)。
  • 命令行终端(CLI):
  • macOS 或 Linux:使用终端应用程序(这些环境类似于 Unix)。
  • Windows:使用 PowerShell 或命令提示符,语法上的细微差别将在下一步中解释。
  • 你选择的文本编辑器或集成开发环境 (IDE)。

创建一个新目录并进入该目录。

mkdir ibmtutorialmcpserver 和 cd ibmtutorialmcpserver

首先确保您已经进入ibmtutorialmcpserver目录中,您可以使用以下命令创建虚拟环境

python3 -m venv venv

注意:在 Windows 系统上,您或许可以将 python3 替换为 python

创建虚拟环境后,需要使用以下命令激活它。

source venv/bin/activate

提示符中可能会显示(venv)。

现在你需要安装 Python 包。这个开源框架提供了运行 MCP 服务器所需的所有功能,并且仍在积极维护中。我们还将安装用于发出简单 HTTP 请求的工具。

安装 fastMCP 并使用以下命令通过 pip 安装 requests 包

pip install fastmcp requests

通过运行以下命令来检查 fastMCP 是否已正确安装。

fastmcp version

如果输出结果与下方类似,则说明您的虚拟环境中已安装fastMCP 。

FastMCP version: 2.10.1 MCP version: 1.10.1 Python version: 3.11.13 Platform: macOS-15.5-arm64-arm-64bit FastMCP root path: /opt/homebrew/lib/python3.11/site-packages

步骤 2:创建 MCP 服务器

在目录中创建一个新文件,并将其命名为 server.py 。

获取该文件后,打开它并将以下代码片段复制粘贴到其中。

# Simple MCP server that exposes a single tool to search IBM tutorials. # How to run: # 1) Install dependencies: pip install fastmcp requests # 2) Start the server using an MCP client with the command: fastmcp run /server.py from fastmcp import FastMCPimport requests # Source of the tutorials index DOCS_INDEX_URL = "https://raw.githubusercontent.com/IBM/ibmdotcom-tutorials/refs/heads/main/docs_index.json" mcp = FastMCP("IBM Tutorials") @mcp.tool def search_ibmtutorials(query: str) -> str: """ Search for tutorials on GitHub by downloading a JSON file from a GitHub repo and searching the payload for any relevant results and the respective details Args: query: The search term to look for in tutorial titles and URLs Returns: A formatted list of relevant tutorial results """ try: # Download the JSON file from the GitHub repo response = requests.get(DOCS_INDEX_URL, timeout=10) response.raise_for_status() # Raise an exception for bad status codes # Parse the JSON data tutorials = response.json() # Search for relevant tutorials (case-insensitive) query_lower = query.lower() relevant_tutorials = [] for tutorial in tutorials: # Search in title and URL title = tutorial.get('title', '').lower() url_path = tutorial.get('url', '').lower() if query_lower in title or query_lower in url_path: relevant_tutorials.append(tutorial) # Format and return results if not relevant_tutorials: return f"No IBM tutorials found matching '{query}'" # Format the results result_lines = [f"Found {len(relevant_tutorials)} tutorial(s) matching '{query}':\n"] for i, tutorial in enumerate(relevant_tutorials, 1): title = tutorial.get('title', 'No title') tutorial_url = tutorial.get('url', 'No URL') date = tutorial.get('date', 'No date') author = tutorial.get('author', '') result_lines.append(f"{i}. **{title}**") result_lines.append(f" URL: {tutorial_url}") result_lines.append(f" Date: {date}") if author: result_lines.append(f" Author: {author}") result_lines.append("") # Empty line for spacing return "\n".join(result_lines) except requests.exceptions.RequestException as e: return f"Error fetching tutorials from GitHub: {str(e)}" except ValueError as e: return f"Error parsing JSON data: {str(e)}" except Exception as e: return f"Error searching IBM tutorials: {str(e)}" if __name__ == "__main__": mcp.run()

导入和设置

脚本首先导入 FastMCP ,它提供了创建 MCP 服务器的框架,以及用于通过 HTTP 下载数据的 requests 库。我们添加了一个常量DOCS_INDEX_URL 来保存教程索引的远程 JSON URL。如果您以后想将此教程用于其他 JSON 数据源,这种方法可以更轻松地更改源位置。

设置 MCP 服务器

然后,我们使用 FastMCP(“IBM Tutorials”) 创建一个 MCP 服务器实例。此步骤充当我们定义的工具服务器将向 MCP 客户端公开的所有工具(例如 search_ibmtutorials)的中央控制器。

定义 MCP 工具

@mcp.tool 装饰器标记 search_ibmtutorials 作为 MCP 工具,此函数接收一个搜索词,使用 requests.get() 从 DOCS_INDEX_URL 下载教程索引(为确保网络安全,设置 10 秒超时),如果 HTTP 响应状态指示错误,则抛出异常。数据检索完成后,将其从 JSON 解析为 Python 对象。

搜索不区分大小写:查询词会被转换为小写,每个教程的标题和 URL 也会被转换为小写以进行匹配。如果某个教程的标题或 URL 中包含搜索词,则会将其添加到相关结果列表中。

格式化并返回结果

如果没有找到匹配的教程,该函数会返回一条友好的消息,提示未找到任何结果。如果有匹配项,该函数会生成一个格式化的编号列表,其中包含每个教程的标题、URL、日期以及(如果可用)作者信息。标题使用 Markdown 风格的粗体,以便在支持该格式的客户端中突出显示。最终的格式化文本将以单个字符串的形式返回。

错误处理

该功能包含针对性的异常处理:

requests.exceptions.RequestException 能够检测网络问题,例如超时或连接不良。

ValurError (可以通过.json () 引发)捕获响应不是有效 JSON 的情况。

通用异常处理程序会捕获任何其他意外情况。

每个错误都会向调用者返回一条描述性消息,而不是停止程序。

启动服务器

在底部, if name == “main” : 代码块确保 mcp.run() 仅在脚本直接运行时执行。此步骤启动 MCP 服务器,从而执行 search_ibmtutorials 操作。 任何 MCP 客户端均可使用此工具,例如 MCP Inspector66。此工具可用于排查和调试 MCP 服务器。它提供了一个用户界面,可用于调试 MCP 服务器并验证预期行为。

步骤 3:将 MCP 服务器添加到 IDE 中

服务器搭建完成后,您需要在 IDE 中启用它才能使用。许多客户端都支持 MCP,并且与该协议的集成程度各不相同。MCP 官方网站提供了详尽的客户端示例列表67。

如果您已安装 Cursor,则可以按照以下说明在 Cursor 中添加 MCP 服务器。

打开 Cursor 设置,导航至“工具与集成”。选择“新建 MCP 服务器”,然后将内容粘贴到 Cursor 在新标签页中打开的 mcp.json 文件中。请确保将 替换为您当前所在的目录。您可以在终端中运行 pwd 命令来获取完整路径。有关 Cursor 和 MCP 的更多信息,请参阅 Cursor 文档68。

{ "mcpServers": { "tutorials": { "command": "fastmcp", "args": ["run /ibmtutorialmcpserver/server.py"], "env": { } } } } "servers": { "IBM Tutorials": { "type": "stdio", "command": "fastmcp", "args": [ "run", "/ibmtutorialmcpserver/server.py" ] }, },

现在您已经启用了 MCP 服务器,让我们启动服务器,以便您可以使用 server.py 中创建的工具。如果您使用的是 VS Code,请查看这些文档69。

在 IDE 聊天中,我会问“有哪些 IBM 时间序列教程?” 下面显示的是收到的输出,但您的回复可能会因所使用的模型和 IDE 而异。

输出:

Here are some IBM time series tutorials: Time series forecasting with Lag-Llama (zero-shot learning) Tutorial link Predict overnight low temperatures using the Lag-Llama model in a zero-shot learning scenario. Using the watsonx.ai Time Series Forecasting API to predict energy demand Tutorial link Predict energy demand with the watsonx.ai Time Series Forecasting API. Authors: Aleksandra Kłeczek and Meredith Syed Let me know if you want details or help with a specific tutorial.

小结

在本教程中,您学习了如何构建一个 MCP 服务器,以便使用您喜欢的任何 MCP 客户端搜索我们所有的教程。您创建了一个 MCP 服务器,其中包含一个搜索工具,该工具从远程 JSON 索引中检索教程,根据搜索词筛选结果,并以易于阅读的格式返回结果。它使用 fastmcp 来注册和运行该工具,请求获取数据,并包含针对网络、解析和意外问题的错误处理机制。运行后,MCP 客户端可以连接到该服务器,实时查询我们所有的教程。∎

AI大模型从0到精通全套学习大礼包

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

只要你是真心想学AI大模型,我这份资料就可以无偿共享给你学习。大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!

如果你也想通过学大模型技术去帮助就业和转行,可以扫描下方链接👇👇
大模型重磅福利:入门进阶全套104G学习资源包免费分享!

01.从入门到精通的全套视频教程

包含提示词工程、RAG、Agent等技术点

02.AI大模型学习路线图(还有视频解说)

全过程AI大模型学习路线


03.学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的


04.大模型面试题目详解

05.这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

所有的视频由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌,构建起"前沿课程+智能实训+精准就业"的高效培养体系。

课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!


如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1215626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员必看!阿里Qwen3-TTS开源:3秒克隆声音,低至97ms延迟,多模态语音合成全家桶

阿里Qwen3-TTS是开源语音合成模型,具备三大核心功能:3秒音色克隆、自然语言音色设计和预设音色。模型支持10种语言,首包延迟仅97ms,适合实时对话。提供多种部署方式,包括在线Demo、本地部署、vLLM和ComfyUI集成。有1.7…

开发AI Agent不用从零开始:3个版本实现从入门到工业级应用

本文详细介绍AI Agent开发的核心原理与三种实现版本:极简版(半天可跑)、进阶版(多工具调用)和工业级(自主进化)。通过"规划-执行-反馈"三大模块,结合大模型与工具调用能力…

openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm 安装指南 解决依赖与常见报错

一、准备工作:先瞅一眼有没有装过 动手之前,最好先看一眼系统里是不是已经有这个包了,或者版本对不对。省得装重复了或者搞混。 打开终端,输入下面这个命令,然后回车: rpm -q openssl-libs 如果屏幕上显…

【AI大模型大厂面经】阿里一面,大模型SFT微调完全指南:从入门到精通,收藏必备!

本文全面介绍了大模型SFT微调技术,包括全参数微调的7种模式与选择策略、多种轻量级微调方法及其特点,以及SFT中可能出现的灾难性遗忘问题及缓解方法。文章详细讲解了SFT数据构建的质与量原则、Chat与Base模型选择考量、多能力优化策略,并探讨…

普通人意义感崩塌 = 内耗?

“普通人意义感崩塌 内耗?” —— 这不是等式,而是 因果链:意义感崩塌是内耗的深层根源,内耗是意义感崩塌的外显症状。二者共同构成现代人精神困境的“负反馈循环”。 一、神经科学:意义感崩塌如何触发内耗&#xff1…

Java全栈开发面试实录:从基础到实战的全面考察

Java全栈开发面试实录:从基础到实战的全面考察 一、面试背景介绍 今天,我作为一位有多年经验的资深工程师,参与了一场针对Java全栈开发岗位的面试。应聘者是一位28岁的硕士毕业生,拥有5年的开发经验,曾就职于一家中型…

MATLAB数据分析,基于遗传算法,粒子群优化算法优化BP神经网络GA-BP和PSO-BP的数...

MATLAB数据分析,基于遗传算法,粒子群优化算法优化BP神经网络GA-BP和PSO-BP的数据回归预测,LSSVM的粒子群优化算法和灰狼优化算法,径向基函数RBF(pso-rbf)预测,极限学习机ELM预测和广义神经网络G…

文字快速转为PPT播放工具:高效演示文稿制作新选择

在当今快节奏的工作和学习环境中,如何快速将文字内容转化为专业的演示文稿成为了许多人的需求。文字快速转为PPT播放工具正是为解决这一问题而设计的创新解决方案,它能够帮助用户将大段文字内容智能分页,生成适合演示的幻灯片格式。工具核心功…

手把手玩转西门子S7-200 Smart与施耐德ATV12的Modbus基情互动

西门子plc200smart与施耐德ATV12变频器modbus通讯程序,可以帮你学会modbus通讯,是程序,说明书,接线定义,参数调试! 搞工控的兄弟应该都懂,设备之间没通讯就像谈恋爱没微信——浑身难受。今天咱们就拿西门子…

C#工业触摸屏上位机源码:强大功能、多种通信方式、用户权限管理、多线程编程与WEB服务对接

C#工业触摸屏上位机源码 项目由本人开发,不懂可以咨询。 0, 纯源代码。 1, 替代传统plc搭载的触摸屏。 2, 工控屏幕一体机直接和plc通信。 3, 功能强大,多级页签。 4, 可以自由设定串口或以太网通信。 5, 主页。 6, 报警页。 7,触摸键盘模拟输…

微网优化模型 多目标matlab 编程语言:matlab 方法:多目标粒子群mopso 内容摘要

微网优化模型 多目标matlab 编程语言:matlab 方法:多目标粒子群mopso 内容摘要:考虑风光储的独立微网优化模型,以经济性和可靠性作为目标,考虑蓄电池荷电状态约束、充放电功率约束以及发电系统数量约束,程序…

光伏并网逆变器设计方案,附有相关的matlab电路仿真文件,以及DSP的程序代码

光伏并网逆变器设计方案,附有相关的matlab电路仿真文件,以及DSP的程序代码,方案、仿真文件、代码三者结合使用效果好,事半功倍。光伏并网逆变器的设计就像搭积木,既要保证结构稳固又得玩得转实时控制。咱们直接切入核心&#xff1…

拒绝背锅!服务器卡顿CPU却空闲?一文揪出磁盘I/O这个“隐形杀手”

大家好,我是三味。 最近在技术群里(QQ群:949793437),有位朋友提出了一个非常经典的问题:“AlmaLinux 9.7 系统,怎么看磁盘的负载?我担心磁盘影响性能,只会用 uptime 和 df 够吗?”这简直是灵魂发问! 很多时…

彼得林奇对公司并购后文化整合成功因素的案例研究

彼得林奇对公司并购后文化整合成功因素的案例研究 关键词:彼得林奇、公司并购、文化整合、成功因素、案例研究 摘要:本文围绕彼得林奇对公司并购后文化整合成功因素展开深入的案例研究。首先介绍研究的背景、目的、预期读者等内容,阐述相关核心概念。接着剖析核心算法原理(…

React 组件状态(State)

React 组件状态(State) 组件可以拥有状态(state),它是组件数据的私有部分,可以用来管理动态数据。 状态仅适用于类组件,或者使用 React 的 Hook 时可以在函数组件中使用。 React 把组件看成是一个状态机&#xff08…

从零开始:Gitee 仓库创建与本地项目纳管全流程详解

目录 一、Gitee 仓库创建:打好代码托管的基础 1.1 准备工作 1.2 仓库创建步骤 二、本地生成 SSH 公钥:实现免密提交代码 2.1 SSH 公钥的作用原理 2.2 本地生成 SSH 公钥的步骤 步骤 1:检查 Git 环境 步骤 2:打开命令行工具 步骤 3:执行生成公钥的命令 2.3 将公钥…

法律服务效率提升的架构创新:AI应用架构师详解法律AI智能体微服务设计

法律服务效率提升的架构创新:AI应用架构师详解法律AI智能体微服务设计 一、引言:传统法律服务的效率困局与AI智能体的破局点 1.1 传统法律服务的三大效率痛点 在律师事务所、企业法务部或公共法律服务中心,你常能看到这样的场景: 重复劳动过载:一名律师每天要处理5-10份…

并行计算: CUDA 12.9 (支持 GPU 加速), OpenMP (多核 CPU)

这是一个非常核心且现代的高性能计算技术组合。我们来详细拆解这两项技术,以及它们如何协同工作。 核心思想:并行计算 在开始前,先理解目标:把一个大任务拆分成许多小任务,同时(并行地)处理它们…

Qt中connect()实现信号与槽连接这一核心机制

深入讲解Qt中connect()实现信号与槽连接这一核心机制。这是Qt框架最著名、最强大的特性之一,也是Qt区别于其他GUI框架的关键所在。一、核心概念:什么是信号与槽?1. 信号(Signal)定义:当对象的内部状态发生改…

HDF5与CGNS文件格式详解

我将为您全面解析这两种在科学计算和工程仿真领域至关重要的文件格式,以清晰易懂的方式解释它们的概念、关系和实际应用。 一、HDF5:科学计算的"瑞士军刀" 1. 基本概念 HDF5是Hierarchical Data Format version 5的缩写,即层次数…