ai
  • index
  • 1.首页
  • 2.介绍
  • 3.架构概览
  • 4.服务器概念
  • 5.客户端概念
  • 6.版本控制
  • 7.连接到远程MCP服务器
  • 8.连接到本地MCP服务器
  • json_rpc
  • 9.构建一个MCP服务器
  • 10.检查员
  • 11.构建一个MCP客户端
  • 14.架构
  • 15.基础协议概述
  • 16.生命周期
  • 17.传输
  • 18.授权
  • 19.安全最佳实践
  • 20.取消
  • 21.Ping
  • 22.进展
  • 23.Roots
  • 24.采样
  • 25.启发
  • 26.服务器特性
  • 27.提示词
  • 28.资源
  • 29.工具
  • 30.完成
  • 31.日志记录
  • 32.分页
  • 33.架构参考
  • URI模板
  • 12.实现
  • http.server
  • 动态客户端注册协议
  • 受保护资源元数据
  • 授权服务器元数据
  • JWKS
  • PKCE
  • PyJWT
  • secrets
  • watchfiles
  • 实现authorization
  • 实现cancel
  • 实现completion
  • 实现logging
  • 实现pagination
  • 实现process
  • 实现transport
  • psutil
  • pytz
  • zoneinfo
  • contextlib
  • Starlette
  • mcp.1.starter
  • mcp.2.Resource
  • mcp.3.structured_output
  • mcp.4.prompts
  • mcp.5.context
  • mcp.6.streamable
  • mcp.7.lowlevel
  • mcp.8.Completion
  • mcp.9.Elicitation
  • mcp.10.oauth
  • mcp.11.integration
  • mcp.12.best
  • mysql-mcp
  • databases
  • uvicorn
  • asynccontextmanager
  • AsyncExitStack
  • streamable
  • aiohttp
  • publish
  • email
  • schedule
  • twine
  • 1.教学文档总览
  • 2.教师使用指南
  • 3.教学系统快速参考
  • 4.新生入门指南
  • 5.学生使用指南
  • 1. MCP服务器概念:构建智能数据提供者
  • 2. 🎯 什么是MCP服务器
    • 2.1 常见服务器类型
  • 3. 🏗️ 核心构建模块
  • 4. 🛠️ 工具(Tools)
    • 4.1 概述
    • 4.2 协议操作
    • 4.3 工具定义示例
    • 4.4 实际应用示例
    • 4.5 用户交互模型
  • 5. 📁 资源(Resources)
    • 5.1 概述
    • 5.2 协议操作
    • 5.3 资源类型
      • 5.3.1 直接资源
      • 5.3.2 资源模板
    • 5.4 实际应用示例
    • 5.5 参数补全
    • 5.6 用户交互模型
  • 6. 💬 提示词(Prompts)
    • 6.1 概述
    • 6.2 协议操作
    • 6.3 提示词示例
    • 6.4 实际应用示例
    • 6.5 用户交互模型
  • 7. 🔄 多服务器协同工作
    • 7.1 多服务器旅行规划示例
    • 7.2 完整工作流程
      • 7.2.1 用户调用提示词
      • 7.2.2 用户选择资源
      • 7.2.3 AI处理请求
  • 8. 🎯 总结
    • 8.1 工具(Tools)
    • 8.2 资源(Resources)
    • 8.3 提示词(Prompts)
    • 8.4 🔄 协同工作

1. MCP服务器概念:构建智能数据提供者 #

深入理解MCP服务器的核心概念和构建模块,学会创建自己的MCP服务器

2. 🎯 什么是MCP服务器 #

MCP服务器是通过标准化协议接口向AI应用暴露特定功能的程序。每个服务器专注于为特定领域提供功能,让AI应用能够访问和操作各种数据源。

2.1 常见服务器类型 #

服务器类型 功能描述 应用场景
文件系统服务器 文档管理和文件操作 读取文档、搜索文件
电子邮件服务器 邮件处理和消息管理 发送邮件、查看收件箱
旅行服务器 行程规划和预订 搜索航班、预订酒店
数据库服务器 数据查询和管理 执行SQL查询、数据检索

3. 🏗️ 核心构建模块 #

MCP服务器通过三个基本构建模块提供功能:

构建模块 目的 控制方 实际应用案例
🛠️ 工具 针对AI操作 模型控制 搜索航班、发送消息、创建日历事件
📁 资源 用于上下文数据 应用控制 文档、日历、电子邮件、天气数据
💬 提示词 交互模板 用户可控 "规划一次度假"、"总结我的会议"、"起草一封邮件"

4. 🛠️ 工具(Tools) #

4.1 概述 #

工具使AI模型能够通过服务器实现的函数执行操作。每个工具定义了具有类型化输入和输出的特定操作,模型会根据上下文请求工具执行。

关键特点:

  • 用户批准:每次工具执行都需要用户明确批准
  • 类型安全:使用JSON Schema进行输入验证
  • 单一职责:每个工具执行单一操作
  • 明确定义:具有明确的输入和输出

4.2 协议操作 #

方法 目的 返回
tools/list 发现可用工具 带有模式定义的工具数组
tools/call 执行特定工具 工具执行结果

4.3 工具定义示例 #

{
  // 工具名称,唯一标识该工具
  name: "searchFlights",
  // 工具描述,简要说明工具的功能
  description: "Search for available flights",
  // 输入参数的JSON Schema定义
  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"]
  }
}

4.4 实际应用示例 #

在旅行规划场景中,AI应用可能会使用多种工具:

  1. 搜索航班:

    searchFlights(origin: "纽约", destination: "巴塞罗那", date: "2024-06-15")
  2. 创建日历事件:

    createCalendarEvent(title: "巴塞罗那之旅", startDate: "2024-06-15", endDate: "2024-06-22")
  3. 发送邮件通知:

    sendEmail(to: "team@work.com", subject: "外出办公", body: "...")

4.5 用户交互模型 #

工具由模型控制,但强调人工监督:

  • 清晰展示:应用程序应在UI中清晰展示可用工具
  • 视觉提示:在考虑或使用工具时提供视觉提示
  • 批准对话框:任何工具执行前,必须向用户呈现明确的批准对话框
  • 活动日志:记录所有工具执行结果的活动日志

5. 📁 资源(Resources) #

5.1 概述 #

资源提供了结构化信息访问方式,宿主应用程序可检索这些信息并将其作为上下文提供给AI模型。资源能够从文件、API、数据库或任何AI需要理解上下文的来源中暴露数据。

关键特点:

  • 基于URI:每个资源都拥有唯一的URI
  • MIME类型:声明MIME类型以实现恰当的内容处理
  • 两种模式:直接资源和资源模板
  • 动态访问:支持参数化URI模板

5.2 协议操作 #

方法 目的 返回
resources/list 列出可用的直接资源 资源描述符数组
resources/templates/list 发现资源模板 资源模板定义数组
resources/read 获取资源内容 带有元数据的资源数据
resources/subscribe 监控资源变更 订阅确认

5.3 资源类型 #

5.3.1 直接资源 #

使用固定URI的资源,例如:

  • file:///path/to/document.md
  • calendar://events/2024
  • file:///Documents/Travel/passport.pdf

5.3.2 资源模板 #

使用参数化URI的资源,例如:

  • uriTemplate :资源的URI模板,支持城市和日期参数
  • name:资源模板的唯一名称
  • title:资源模板的标题
  • description:资源模板的描述信息
  • mimeType:资源返回的数据类型,这里为JSON
{
  "uriTemplate": "weather://forecast/{city}/{date}",
  "name": "weather-forecast",
  "title": "天气预报",
  "description": "获取任意城市和日期的天气预报",
  "mimeType": "application/json"
}
{
  "uriTemplate": "travel://flights/{origin}/{destination}",
  "name": "flight-search",
  "title": "航班查询",
  "description": "搜索城市间可用航班",
  "mimeType": "application/json"
}

5.4 实际应用示例 #

在旅行规划中,资源为AI应用提供访问相关信息的途径:

  • 日历数据 (calendar://events/2024) - 检查可用性
  • 旅行证件 (file:///Documents/Travel/passport.pdf) - 重要信息
  • 之前的行程 (trips://history/barcelona-2023) - 用户选择遵循哪种过往旅行风格

5.5 参数补全 #

动态资源支持参数自动补全功能:

  • 输入"Par"作为weather://forecast/{city}可能会建议"Paris"或"Park City"
  • 该系统无需掌握精确的格式知识即可帮助发现有效值

5.6 用户交互模型 #

资源的使用由应用程序驱动,常见的交互模式包括:

  • 树状或列表视图:用于以类似文件夹的熟悉结构浏览资源
  • 搜索和筛选界面:用于查找特定资源
  • 自动包含上下文:基于启发式或AI选择
  • 手动选择界面:用户手动选择需要的资源

6. 💬 提示词(Prompts) #

6.1 概述 #

提示词提供了可复用的模板,让MCP服务器的作者能够为特定领域提供参数化的提示词模板,或展示如何最佳地使用MCP服务器。

关键特点:

  • 结构化模板:定义预期的输入和交互模式
  • 用户控制:需要显式调用而非自动触发
  • 上下文感知:能引用可用资源和工具
  • 参数补全:支持参数补全功能

6.2 协议操作 #

方法 目的 返回
prompts/list 探索可用提示 提示描述符数组
prompts/get 获取提示详情 完整提示定义及参数

6.3 提示词示例 #

  • name :提示词的唯一名称
  • title :提示词的标题
  • description :提示词的描述信息
  • arguments :提示词的参数列表
    • name :参数的名称
    • type :参数的类型
    • required :是否必填
    • description :参数的描述信息
{
  "name": "plan-vacation",
  "title": "规划一次假期",
  "description": "引导用户完成假期规划流程",
  "arguments": [
    { "name": "destination", "type": "string", "required": true, "description": "目的地" },
    { "name": "duration", "type": "number", "description": "天数" },
    { "name": "budget", "type": "number", "required": false, "description": "预算" },
    { "name": "interests", "type": "array", "items": { "type": "string" }, "description": "兴趣偏好" }
  ]
}

6.4 实际应用示例 #

提示为常见任务提供了结构化模板。在旅行规划场景中:

  1. 选择模板:用户选择"Plan a vacation"模板
  2. 结构化输入:填写目的地、时长、预算等参数
  3. 一致化工作流:基于模板的一致化工作流执行

6.5 用户交互模型 #

提示词由用户控制,需要显式调用。应用程序通常通过多种UI模式来展示:

  • 斜杠命令:输入"/"可查看可用提示词如/plan-vacation
  • 命令面板:支持搜索的命令面板
  • 专用UI按钮:为高频提示词设计的专用UI按钮
  • 上下文菜单:能推荐相关提示词的上下文菜单

7. 🔄 多服务器协同工作 #

MCP的真正威力在于多台服务器协同工作时,通过统一接口整合各自的专长能力。

7.1 多服务器旅行规划示例 #

设想一个由三台互联服务器组成的AI应用:

  1. 旅行服务器 - 处理航班、酒店和行程安排
  2. 天气服务器 - 提供气候数据和预报
  3. 日历/邮件服务器 - 管理日程安排与沟通协调

7.2 完整工作流程 #

7.2.1 用户调用提示词 #

  • prompt :提示词的名称
  • arguments :提示词的参数列表
    • destination :目的地
    • departure_date :出发日期
    • return_date :返回日期
    • budget :预算
    • travelers :旅行者人数
{
  "prompt": "plan-vacation",
  "arguments": {
    "destination": "巴塞罗那",
    "departure_date": "2024-06-15",
    "return_date": "2024-06-22",
    "budget": 3000,
    "travelers": 2
  }
}

7.2.2 用户选择资源 #

  • calendar://my-calendar/June-2024(来自Calendar Server)
  • travel://preferences/europe(来自Travel Server)
  • travel://past-trips/Spain-2023(来自Travel Server)

7.2.3 AI处理请求 #

AI首先会阅读所有选定的资源以收集背景信息:

  • 从日历中:识别出可用的日期
  • 从旅行偏好中:了解偏爱的航空公司和酒店类型
  • 从过往行程中:发现曾经喜欢的旅行地点
  • 通过天气数据:核查旅行期间的气候条件

利用这一上下文,AI随后会请求用户批准执行一系列协调的工具调用。

8. 🎯 总结 #

MCP服务器是AI应用生态系统的核心组件,通过三个基本构建模块提供功能:

8.1 工具(Tools) #

  • 让AI模型执行具体操作
  • 需要用户明确批准
  • 提供类型安全的接口

8.2 资源(Resources) #

  • 为AI提供上下文数据
  • 支持直接资源和模板
  • 应用程序控制访问

8.3 提示词(Prompts) #

  • 提供可复用的交互模板
  • 用户控制调用
  • 支持参数化配置

8.4 🔄 协同工作 #

  • 多服务器无缝集成
  • 统一接口标准
  • 强大的组合能力

通过理解这些核心概念,您可以构建功能强大的MCP服务器,为AI应用提供丰富的功能和数据访问能力。

访问验证

请输入访问令牌

Token不正确,请重新输入