游乐游手机版
首页/AI教程/文章详情

MCP Tools 是什么?一文全面详解定义、功能与使用方法

时间:2026-06-15 15:59
每次与大语言模型对话时,你是否也常幻想:如果它能直接帮我查天气、从数据库提取销售报告、或调用外部API执行实际任务,那该多好?Model Context Protocol(MCP)中的Tools功能正是为解决这一痛点而设计。它为大模型提供了一套标准化的操作机制,让模型不再局限于“纸上谈兵”,而是能够

每次与大语言模型对话时,你是否也常幻想:如果它能直接帮我查天气、从数据库提取销售报告、或调用外部API执行实际任务,那该多好?Model Context Protocol(MCP)中的Tools功能正是为解决这一痛点而设计。它为大模型提供了一套标准化的操作机制,让模型不再局限于“纸上谈兵”,而是能够真正“动手”——与外部系统交互,执行真实操作。

简单来说,MCP Tools 相当于给大模型配备了一个工具箱。每个工具都清晰标注了名称、功能和使用方法。模型能够根据对话上下文和用户意图,自主判断是否需要调用工具,无需用户逐个指令。

MCP Tools 的工作原理

MCP Tools 的核心交互模式是“模型主导”——决策权交由模型本身,它会基于上下文理解自动发现并调用工具,而非依赖用户逐句指挥。整个过程可分三步:发现、选择、调用。

第一步,发现。客户端(如集成了大模型的应用程序)先向服务器发送请求,询问:“你有哪些可用工具?”服务器返回一个工具清单,其中详细列出了每个工具的名称、功能描述及调用参数。

模型拿到清单后,就能明确自身能力范围。当用户问题确实需要外部信息或实际操作时,模型会从清单中挑选最合适的工具。这一选择完全基于对工具描述的理解及对当前任务的判断。

最后一步,调用。模型选定工具并确定参数后,客户端代表模型向服务器发送调用请求。服务器执行工具并将结果返回给客户端,客户端再将结果交给模型。模型利用这些新信息继续与用户对话或完成任务。

整个流程用消息流描述如下:

  1. 客户端向服务器请求工具列表。
  2. 服务器返回可用工具。
  3. 语言模型根据用户输入决定使用某个工具。
  4. 客户端向服务器发送工具调用请求。
  5. 服务器执行工具并返回结果。
  6. 客户端将结果交给语言模型处理。

MCP 的 Tools 是什么?一文介绍及使用

发现可用的 Tools

要让模型知道自己有哪些可用工具,第一步是向服务器获取工具列表。这通过发送 tools/list 请求实现。最简单的请求报文如下:

{"jsonrpc": "2.0","id": 1,"method": "tools/list","params": {}}

服务器收到后返回响应,其中包含一个 tools 数组,数组每一项就是一个可用工具。例如,一个查询天气的工具的定义可能如下:

{"jsonrpc": "2.0","id": 1,"result": {"tools": [{"name": "get_weather","title": "天气信息提供器","description": "获取一个地点的当前天气信息","inputSchema": {"type": "object","properties": {"location": {"type": "string","description": "城市名称或邮政编码"}},"required": ["location"]}}],"nextCursor": null}}

在这个响应中,get_weather 工具暴露了以下关键信息:

  • name:工具的唯一标识,后续调用依赖它。
  • title:对人类友好的标题,一目了然。
  • description:工具功能的详细描述——模型主要据此理解工具用途。
  • inputSchema:一个 JSON Schema 对象,精确规定了调用该工具所需的参数。此处说明需要 location 字符串。

模型正是通过 descriptioninputSchema 精准理解每个工具的功能和使用方法。

调用一个 Tool

当模型决定使用某个工具后,客户端会发送 tools/call 请求。该请求必须包含要调用的工具 name,以及符合其 inputSchemaarguments

仍以查询天气为例。如果用户问“纽约天气如何?”,模型会指示客户端发出以下调用:

{"jsonrpc": "2.0","id": 2,"method": "tools/call","params": {"name": "get_weather","arguments": {"location": "New York"}}}

服务器执行 get_weather 后返回结果。一个成功的调用结果通常包含工具输出,且 isError 字段为 false

{"jsonrpc": "2.0","id": 2,"result": {"content": [{"type": "text","text": "纽约当前天气:\n温度:22°C\n天气状况:局部多云"}],"isError": false}}

模型收到结果后,就能自然地组织出回答:“纽约现在是局部多云,温度22摄氏度。”

理解 Tool 的返回结果

Tool 的执行结果大致分为两类:非结构化内容和结构化内容。不同场景各有适用方式。

非结构化内容

非结构化内容是最常见的返回形式,它位于 result 对象的 content 字段中。content 是一个数组,可包含不同类型的数据块,例如:

  • text:纯文本信息,如上面的天气查询结果。
  • image:Base64 编码的图片。
  • audio:Base64 编码的音频。
  • resource_link:指向其他资源的链接,如文件路径 URI。
  • resource:直接嵌入的资源内容。

这种机制非常灵活,适合返回自然语言描述、多媒体文件或简单信息片段。

结构化内容

当场景需要精确数据且要求程序能直接处理时,应使用结构化内容。这需要 Tool 在定义时提供 outputSchema 描述输出数据结构,并在返回结果时使用 structuredContent 字段。

例如,返回更详细天气数据的工具 get_weather_data,其定义中包含了 outputSchema

{"name": "get_weather_data","description": "获取一个地点的结构化天气数据","inputSchema": {"type": "object","properties": { "location": { "type": "string" } },"required": ["location"]},"outputSchema": {"type": "object","properties": {"temperature": { "type": "number", "description": "单位:摄氏度" },"conditions": { "type": "string" },"humidity": { "type": "number", "description": "湿度百分比" }},"required": ["temperature", "conditions", "humidity"]}}

调用该工具后,有效的返回结果会同时包含 structuredContent 和作为后备的 content

{"jsonrpc": "2.0","id": 5,"result": {"content": [{"type": "text","text": "{\"temperature\": 22.5, \"conditions\": \"Partly cloudy\", \"humidity\": 65}"}],"structuredContent": {"temperature": 22.5,"conditions": "Partly cloudy","humidity": 65}}}

结构化返回的优势很明显:客户端应用可以直接解析、验证这些数据,无需费力处理复杂文本字符串。

下表总结了非结构化内容与结构化内容的区别:

特性非结构化内容结构化内容
承载字段contentstructuredContent
数据格式包含文本、图片、音频等对象的数组符合 outputSchema 的 JSON 对象
验证方式无内置模式验证可通过 outputSchema 进行严格验证
适用场景返回自然语言描述、多媒体文件或简单文本信息返回需要程序化处理的精确数据,如 API 响应体

错误处理与安全考量

与外部系统交互时,错误与安全问题不可避免。MCP 为 Tools 设计了两种明确的错误报告机制。

第一种是协议层面的错误。如果客户端请求不符合规范(如调用不存在的工具),服务器会返回标准的 JSON-RPC error 对象。

{"jsonrpc": "2.0","id": 3,"error": {"code": -32602,"message": "Unknown tool: invalid_tool_name"}}

第二种是工具执行过程中的错误,例如外部 API 调用失败或输入数据无效。这种错误会在 result 对象中将 isError 设为 true,并在 content 中提供错误详情。

{"jsonrpc": "2.0","id": 4,"result": {"content": [{"type": "text","text": "获取天气数据失败:API 调用频率超限"}],"isError": true}}

下表对两种错误进行了对比:

错误类型触发场景报告方式示例
协议错误客户端请求不符合协议规范标准 JSON-RPC error 对象调用不存在的 tool
工具执行错误Tool 执行过程中内部失败result 对象中设置 isError: true外部 API 调用失败

除错误处理外,安全是使用 Tool 时最受关注的一环。由于模型可能在用户未直接下达指令时调用工具,因此必须设置“人在环”的保险机制。应用程序应在模型调用工具时给出清晰视觉提示,并在执行敏感操作(如修改文件、发送邮件)前弹出确认对话框。这样才能有效防止误操作或恶意行为,确保技术始终在安全可控的范围内为人服务。

来源:https://apifox.com/apiskills/mcp-tools-introduction-and-usage/
上一篇虾聊是什么?Agent社区保姆级接入与避坑指南 下一篇MCP客户端是什么?一文带你全面了解
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Windows Docker Desktop RabbitMQ生产级部署完整指南
AI教程 · 2026-06-29

Windows Docker Desktop RabbitMQ生产级部署完整指南

前言 在 Windows 本地开发环境中,直接安装 RabbitMQ 确实颇为周折:需要单独配置 Erlang 运行环境、手动管理环境变量、服务启停全凭手工操作。更令人困扰的是,版本兼容冲突、端口占用、环境不一致等问题层出不穷。笔者见过不少开发者为搭建环境就得耗费整整半天时间。 相比之下,借助 Do

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践
AI教程 · 2026-06-29

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践

先分享一个切实感受。过去两年,我们与福建制造企业合作较为频繁,发现一个非常突出的现象:超过80%的企业官网,产品参数仍然存放在PDF或图片中。AI爬虫?根本无法抓取。这些企业技术实力不弱、资质证照齐全、应用案例也丰富,但在AI搜索这一全新战场上,它们几乎处于隐身状态。 一、一个正在发生的行业变化 A

阿里云Token Plan团队版功能价格与省钱购买指南
AI教程 · 2026-06-29

阿里云Token Plan团队版功能价格与省钱购买指南

阿里云百炼近期推出了名为“Token Plan 团队版”的全新服务,这一服务专为企业与开发者量身打造,定位为AI大模型订阅平台。通过引入Credits作为统一计量单位,将文本生成、图像生成等多模态AI能力纳入单一计费体系,同时无缝兼容主流AI编程工具及智能体(Agent)生态系统。其核心亮点包括:全

阿里云物联网.NET Core客户端位置信息上报
AI教程 · 2026-06-29

阿里云物联网.NET Core客户端位置信息上报

阿里云物联网平台的位置服务并非一个完全独立的功能模块。位置信息可包含二维坐标与三维坐标,而位置数据的来源本质上是借助设备属性进行上传。换言之,若要让设备上报位置,您需先将其视为一个普通属性进行处理。 1)添加二维位置数据 操作过程十分简洁。进入数据分析 → 空间数据可视化 → 二维数据,点击添加,将

年阿里云服务器选型配置与网站部署全攻略
AI教程 · 2026-06-29

年阿里云服务器选型配置与网站部署全攻略

2026年,阿里云服务器生态已高度成熟,形成了清晰的轻量应用服务器与ECS云服务器两大产品阵营。无论你是计划搭建个人博客、企业官网,还是运营电商平台、进行应用开发,基本都能找到理想的解决方案。本指南将从服务器选型、配置选择、部署流程到安全运维,系统梳理2026年最实用的操作要点,帮助你少走弯路,让网