[AIAgent-MCP]MCP Server 全景:Tools、Resources、Prompts 一次讲透
本文预览:
- MCP Server 到底是什么
- Tools / Resources / Prompts 分别做什么
- 常用协议方法怎么理解与使用
是什么
MCP Server 是通过标准化协议接口把**"外部能力"****标准化**暴露给 AI 应用的程序,让模型能安全、可控地使用工具和数据。
类似于一个"外部能力"供应商,AI应用可以根据标准协议从这里获取额外的能力。
常见 server 场景:
- 文件系统(读写文档)
- 数据库查询
- Slack/飞书消息、等三方软件调用
MCP Server核心
三大核心 Tools 工具、Resources 资源** 、****Prompts 提示**
Tools
由 Model模型 控制, LLM 可以主动调用这些函数,让模型扩展外部能力。
工具可以写入数据库、调用外部 API、修改文件或触发其他逻辑。
在 **Server **端, **tools**以 **JSON Schema**的方式进行注册与呈现,每个工具都执行单一操作,并具有明确定义的输入和输出。
可接收的协议操作方法
tools/list :一般由客户端发起,获取本服务端**查可用的工具列表**,返回工具列表数组及工具相关的定义信息- **
tools/call:一般由客户端发起,通过工具名称+参数**进行工具调用,返回工具执行的结果
常见定义数据结构
{
name: "searchFlights",
description: "Search for available flights",
inputSchema: {
type: "object",
properties: {
origin: { type: "string", description: "Departure city" },
destination: { type: "string", description: "Arrival city" },
date: { type: "string", format: "date", description: "Travel date" }
},
required: ["origin", "destination", "date"]
}
}
Name:工具的名称Description:工具的描述,描述具体的作用什么,方便模型识别调用inputSchema:输入参数结构定义type:参数结构类型properties:参数的属性origin:表示参数字段,一般为自定义type:字段的类型description:字段的描述
required:必穿的字段集合
调用示例:
searchFlights(origin: "NYC", destination: "Barcelona", date: "2024-06-15")
大家注意层级对照查看阅读
** 工具使用注意**
Tools由LLM模型控制,这意味着人工智能模型可以自动发现并调用它们。然而,MCP 通过多种机制强调人工监督。
- 工具可见性:AI应用前端展示当前可调用工具
- 执行审批:高风险工具二次确认
- 权限分级:安全操作可预授权,危险操作需人工确认
- 审计日志:记录每次 tool 调用及结果
Resources
由 AI应用程序 自主控制, 可以从文件、API、数据库或人工智能理解上下文所需的任何其他来源获取数据,将获取的信息作为**上下文提供给模型**。
可接受的协议方法
- **
resources/list****: **列出可用资源列表 resources/templates/list:列出资源模板列表- **
resources/read:**读取资源信息 - **
resources/subscribe:**订阅监控资源变更
资源定义
每个资源由唯一固定的**URL**+ **MIME type**进行定义:
- **
URL****😗*定义资源的唯一地址 - **
MIME type****: **定义资源属于哪种类型text/plain:纯文本text/html:网页 HTMLapplication/json:JSON 数据image/jpeg:JPEG 图片image/png:PNG 图片application/pdf:PDF 文件
资源的展现形式:
直接资源(资源模板): 指向特定数据的固定 URI。例如:calendar://events/2024- 返回 2024 年的日历可用性资源模板(Resource Templates):带有参数的动态 URI,可实现灵活的查询,travel://activities/{city}/{category}将city和category作为动态参数接入,实现灵活访问。资源模板包含标题、描述和预期 MIME 类型等元数据,使其可被发现且具有自文档性。
**资源模板**示例:
{
"uriTemplate": "weather://forecast/{city}/{date}",
"name": "weather-forecast",
"title": "Weather Forecast",
"description": "Get weather forecast for any city and date",
"mimeType": "application/json"
}
使用注意
- 可浏览
提供树状/列表视图(像文件夹一样找资源),让用户先看见"有哪些资源可用"
- 可搜索
支持关键词搜索 + 条件筛选(类型、时间、来源),减少用户手动翻找成本 - 可预览
选中资源先预览摘要/片段,再决定是否加入上下文,防止一次塞太多无关信息
- 可控注入
支持单选/多选/批量加入上下文,允许"自动推荐 + 用户手动确认"两种模式共存
Prompts
由**用户自己控制, 在 MCP 里,Prompts 是可复用的任务模板**。
它的作用是:把"我要做什么"从随意自然语言,变成结构化、可复用、可参数化的流程入口。
你可以把它理解为:
定义"任务模板 + 参数表单 + 固定执行框架" ,引导模型如何组合 tools 和 resources 来完成任务,实现稳定、可复用的执行体验。
可接受的协议方法
- **
prompts/list:**发现提示词列表 - **
prompts/get:**获取提示词详情,完整 prompt 定义 + 参数
先用 prompts/list 看"有哪些模板",再用 prompts/get 看"某模板怎么填"。
例子
Promots 模板如下
{
"name": "旅游规划",
"title": "旅游规划",
"description": "引导完成旅行规划",
"arguments": [
{ "name": "destination", "type": "string", "required": true },
{ "name": "duration", "type": "number", "description": "days" },
{ "name": "budget", "type": "number", "required": false },
{ "name": "interests", "type": "array", "items": { "type": "string" } }
]
}
用户如何使用:
- 选择"
旅游规划"模板 - 根据模板参数结构输入结:巴塞罗那,7 天,3000 美元,[“海滩”、“建筑”、“美食”]
- 就会得到,基于模板的一致工作流程执行,为用户制定出合适的旅游计划
作用: 减少歧义、提升稳定性、便于复用和团队协作。
使用注意
- 易发现:用户容易找到可用 prompt
- 易理解:每个 prompt 有清晰描述
- 易输入:参数输入自然且有校验
- 透明性:能看见详细的模板内容
我是小C,每天学一点 Agent 也拆一点 Agent;尽量把原理弄懂,框架每天都在迭代,不只看用法,更看实现思路。框架会变,原理不变。后续继续分享Agent相关知识笔记~
#MCP #AIAgent #大模型应用 #AI工程化 #Tools #Resources #Prompts #技术学习笔记
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)