MCP(2) Server核心概念
参考
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值简单说明(引入):
- 以上代码片段,并不是完整的tools/list返回内容只是tools能力集数组中其中一项;
- “name”: tool接口名称(方法访问key键)
- “description”: 展示给用户的可读化内容。
- “inputSchema”: 输入定义。
- “inputSchema::type”: 参数类型。规定了实际开发中传递給接口的形参格式。
- “inputSchema::properties”: 参数集。在这里的每一项可object,都是一个参数。
- “inputSchema::properties::{origin, destination, date}”:具体的参数。每个参数都有对应的说明。
- “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的能力集和资源。
总结
- Tools,Resources,Prompts使用流程:先查询能力(list/xxx),再通过对应方式调用。
- Tools是功能调用结合。
- Resources是数据源,Resources分两种:Direct Resources、Resources Templates。
- Prompts是复用模版,规定了工作流程。(获取数据,调用方法处理)
- MCP 核心综合能力体现:整合多台MCP Server能力集,组建强大的AI应用。
更多推荐
所有评论(0)