本文预览:

  • 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")

大家注意层级对照查看阅读

** 工具使用注意**

ToolsLLM模型控制,这意味着人工智能模型可以自动发现并调用它们。然而,MCP 通过多种机制强调人工监督

  1. 工具可见性:AI应用前端展示当前可调用工具
  2. 执行审批:高风险工具二次确认
  3. 权限分级:安全操作可预授权,危险操作需人工确认
  4. 审计日志:记录每次 tool 调用及结果

Resources

AI应用程序 自主控制, 可以从文件、API、数据库或人工智能理解上下文所需的任何其他来源获取数据,将获取的信息作为**上下文提供给模型**。

可接受的协议方法

  • **resources/list****: **列出可用资源列表
  • resources/templates/list: 列出资源模板列表
  • **resources/read:**读取资源信息
  • **resources/subscribe:**订阅监控资源变更

资源定义

每个资源由唯一固定的**URL**+ **MIME type**进行定义:

  • **URL****😗*定义资源的唯一地址
  • **MIME type****: **定义资源属于哪种类型
    • text/plain:纯文本
    • text/html:网页 HTML
    • application/json:JSON 数据
    • image/jpeg:JPEG 图片
    • image/png:PNG 图片
    • application/pdf:PDF 文件

资源的展现形式:

  • 直接资源(资源模板): 指向特定数据的固定 URI。例如: calendar://events/2024 - 返回 2024 年的日历可用性
  • 资源模板(Resource Templates):带有参数的动态 URI,可实现灵活的查询,travel://activities/{city}/{category}citycategory 作为动态参数接入,实现灵活访问。资源模板包含标题、描述和预期 MIME 类型等元数据,使其可被发现且具有自文档性。

**资源模板**示例:

{
  "uriTemplate": "weather://forecast/{city}/{date}",
  "name": "weather-forecast",
  "title": "Weather Forecast",
  "description": "Get weather forecast for any city and date",
  "mimeType": "application/json"
}

使用注意

  • 可浏览

提供树状/列表视图(像文件夹一样找资源),让用户先看见"有哪些资源可用"

  • 可搜索
    支持关键词搜索 + 条件筛选(类型、时间、来源),减少用户手动翻找成本
  • 可预览
    选中资源先预览摘要/片段,再决定是否加入上下文,防止一次塞太多无关信息
  1. 可控注入

支持单选/多选/批量加入上下文,允许"自动推荐 + 用户手动确认"两种模式共存

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" } }
  ]
}

用户如何使用:

  1. 选择"旅游规划"模板
  2. 根据模板参数结构输入结:巴塞罗那,7 天,3000 美元,[“海滩”、“建筑”、“美食”]
  3. 就会得到,基于模板的一致工作流程执行,为用户制定出合适的旅游计划

作用: 减少歧义、提升稳定性、便于复用和团队协作。

使用注意

  1. 易发现:用户容易找到可用 prompt
  2. 易理解:每个 prompt 有清晰描述
  3. 易输入:参数输入自然且有校验
  4. 透明性:能看见详细的模板内容

我是小C,每天学一点 Agent 也拆一点 Agent;尽量把原理弄懂,框架每天都在迭代,不只看用法,更看实现思路。框架会变,原理不变。后续继续分享Agent相关知识笔记~

#MCP #AIAgent #大模型应用 #AI工程化 #Tools #Resources #Prompts #技术学习笔记

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐