参考

MCP: 理解Server概念: https://modelcontextprotocol.io/docs/learn/server-concepts

前言

本章节主要聚焦于C/S端data layer(数据层)的交互,为实际业务开发做准备。读者了解基础元素在json格式中的键值描述;明确使用到的交互方式

说明:实际开发中,借助MCP框架来实现json内容细节;帮助用户更聚焦逻辑和业务开发,降低用户对json实现的工作量。

Server

MCP Server需要实现并展示出所支持的功能;提供给AI 应用(MCP Host)。
注解:通过对MCP的学习,用户自定义Server的功能开发外;还可以通过代理的方式将其他MCP Server的功能注册到目标MCP Server,借次来增强目标的MCP Server的能力集。

特性

MCP Server通过三个基础元(Building block)来提供功能。

Feature 阐述 谁控制它?
Tools LLM可以调用的功能, 并基于用户请求而调用. (比如操作数据库, 调用其他的APIs, 修改文件, 或出发其他逻辑.) Model
Resources 以只读方式提供数据源和信息内容。(比如文件内容, 数据库表,API文档,文档遍历) Application
Prompts 预先构建好的指令模板,指示模型使用特定的tools和resources。 User

Tools

给AI models调用处理。 每个Tool都定义了输入输出。 该模型根据上下文要求执行相关工具操作。

工作方式

Tool是按照特定模式定义的接口,大型语言模型可以调用这些Tool接口。MCP使用JSON来实现这一功能,具有明确输入和输出。Model通过Tool控制响应来实现用户意图。

方法(Method ) 作用 返回值
tools/list 查询tools能力集 返回tool能力集数组
tools/call 调用特定的tool Tool运行结果

注意:可以将tool集合展示在用户UI上供调用,当然可行的。

例子

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

Key值简单说明(引入):

  1. 以上代码片段,并不是完整的tools/list返回内容只是tools能力集数组中其中一项;
  2. “name”: tool接口名称(方法访问key键)
  3. “description”: 展示给用户的可读化内容。
  4. “inputSchema”: 输入定义。
  5. “inputSchema::type”: 参数类型。规定了实际开发中传递給接口的形参格式。
  6. “inputSchema::properties”: 参数集。在这里的每一项可object,都是一个参数。
  7. “inputSchema::properties::{origin, destination, date}”:具体的参数。每个参数都有对应的说明。
  8. “inputSchema::required”:指定要求的必须传递的参数列表。

Resources

Resources是数据\信息访问接口。AI 应用(MCP Host)获取内容后,提供给model。

工作方式

Resources是AI需要理解的内容数据,可以来自文件, APIs, 数据库, 或者其他数据源。
AI应用可以直接使用这些数据,并决定什么使用使用它。无论是选取相关部分、使用嵌入进行搜索,还是将所有内容都传递给模型。

每个Resource都有唯一的URI (例如 file:///path/to/document.md) ;声明其为 MIME 类型。
Resources声明为MIME类型,有两种搜索模式:Resources直接访问和Resource Templates模版。

  • 直接资源(Direct Resource):固定路径下对应特定数据。

    • 例子:calendar://events/2024
  • Resource模版(Resource Templates): 带有参数的动态 URI 用于实现灵活的查询操作。
    例子:

    • travel://activities/{city}/{category}
    • travel://activities/barcelona/museums

Resource Templates包含标题、描述以及预期的 MIME 类型等元数据,这使得它们易于被发现并且具有自描述性。

方法(Method ) 作用 返回值
resources/list 查询Direct Resources Resource的描述j数组(json)
resources/templates/list 查询Resource Templates Resource Template定义数组(json)
resources/read 获取Resource内容 Resource data with metadata
resources/subscribe 监听Resource变更 订阅确认(Subscription confirmation)

AI应用(MCP Host)获得资源后,要决定怎么使用或处理;例如选择片段,数据筛选,或者源数据传递给Model模型。

Rsources能力集(json内容块):

{
  "uriTemplate": "weather://forecast/{city}/{date}",
  "name": "weather-forecast",
  "title": "Weather Forecast",
  "description": "Get weather forecast for any city and date",
  "mimeType": "application/json"
},
{
  "uriTemplate": "travel://flights/{origin}/{destination}",
  "name": "flight-search",
  "title": "Flight Search",
  "description": "Search available flights between cities",
  "mimeType": "application/json"
}

Prompts

Prompts 提供复用模版。 允许 MCP server用户定制Prompts能力, 或者展示如何更好使用MCP server。

工作方式

Prompts结构化的模版,定义了预期输入(expected inputs)和 交互模式(interaction patterns)。 Prompts由用户控制,需要明确的调用操作,而非自动触发。Prompts可以具备情境感知能力,能够参考可用的资源和工具来构建全面的工作流程。与Resources类似,Prompts支持参数补全功能,以帮助用户找到有效的参数值。

方法(Method ) 作用 返回值
prompts/list 查找Prompts能力集 Prompts能力集数组
prompts/get 获取Prompts细节 Prompts所定义的参数列表
{
  "name": "plan-vacation",
  "title": "Plan a vacation",
  "description": "Guide through vacation planning process",
  "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" } }
  ]
}

多MCP服务器协同

当多台MCP Server协同工作时,MCP 的真正强大之处便得以展现,它们通过统一的接口整合了各自的专业能力。AI应用会集合多个MCP Server的能力集和资源。

总结

  1. Tools,Resources,Prompts使用流程:先查询能力(list/xxx),再通过对应方式调用。
  2. Tools是功能调用结合。
  3. Resources是数据源,Resources分两种:Direct Resources、Resources Templates。
  4. Prompts是复用模版,规定了工作流程。(获取数据,调用方法处理)
  5. MCP 核心综合能力体现:整合多台MCP Server能力集,组建强大的AI应用。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐