让AI看见世界:MCP协议与服务器的工作原理

打印 上一主题 下一主题

主题 945|帖子 945|积分 2837

让AI看见世界:MCP协议与服务器的工作原理

  MCP(Model Context Protocol)是一种创新的通讯协议,旨在让大型语言模子可以或许安全、高效地与外部资源举行交互。在AI技能快速发展的今天,MCP正成为连接AI与实际世界的重要桥梁。
  本文以本人开发的fetch_news MPC Server为例 ,该项目基于MCP(Model Control Protocol)框架开发的消息获取和分析服务器,专门用于获取最新消息、搜索特定主题的消息,并对消息内容举行情感分析和择要生成。提供了一套完整的工具和资源,可用于快速检索和处理消息数据。
焦点功能(实际上就是提供的几个工具函数)



  • 最新消息获取:获取指定类别的最新消息,支持科技、财经、体育、娱乐、社会等类别 get_latest_news, 对于消息的获取我利用的是https://newsapi.org/提供的API
  • 消息搜索:根据关键词搜索迩来一段时间内的消息search_news
  • 情感分析:分析消息文本的情感倾向 analyze_sentiment
  • 消息择要:为消息内容生成简短择要summarize_news
提出问题

  我在Claude中输入"给我看看今天的十条关于人工智能的消息,给出链接和相关内容择要和情感分析",大家可以看到它给出的结果"我很抱歉,我的知识截止到2024年10月,所以我无法提供今天(2025年3月19日)的最新人工智能消息。别的,我没有直接的网络搜索功能来访问和提供当前消息链接。"大模子的知识受限于训练数据。

  其实同样,在CherryStudio中调用qwen-max时也不能给出最新的数据。

  以下为Claude Desktop中安装了fetch_news的MPC server后,变得可以举行实时搜索。

MCP是什么?

  简朴来说,MCP是一个标准化的通讯协议,旨在让大型语言模子与外部资源和工具实现顺畅的集成。它就像一座桥梁,连接了五个关键部分:主机(Host)、客户端(Client)、服务器(Server)、当地资源(Local Resources)和远程资源(Remote Resources)。这五个部分各司其职,但又必须遵守MCP的"游戏规则",才能协同工作。
以下为官方文档的架构图:
https://modelcontextprotocol.io/introduction

以下为官方对架构中各部分的形貌
  1. MCP Hosts: Programs like Claude Desktop, IDEs, or AI tools that want to access data through MCP
  2. MCP Clients: Protocol clients that maintain 1:1 connections with servers
  3. MCP Servers: Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol
  4. Local Data Sources: Your computer's files, databases, and services that MCP servers can securely access
  5. Remote Services: External systems available over the internet (e.g., through APIs) that MCP servers can connect to
复制代码
对这五个部分逐一剖析:
MCP Hosts: Programs like Claude Desktop, IDEs, or AI tools



  • 理解:“Hosts”,由于差别的步调(如Claude Desktop、VS Code、某个AI写作工具)都可以充当MCP的主机。每个主机是一个独立的应用步调,它们通过MCP协议访问外部数据或功能。
  • 场景

    • 用户可能同时运行Claude Desktop和一个IDE,这两个步调都作为Host,通过MCP获取文件或API数据。
    • 在企业环境中,多个AI工具可能并行工作,每个工具都是一个Host。

MCP Clients: Protocol clients that maintain 1:1 connections with servers



  • 理解: “Clients”,由于每个Host内部可以嵌入一个或多个MCP客户端,每个客户端与一个特定的服务器建立一对连续接。体系中可能有多个Client实例,分别处理差别的任务。
  • 场景

    • 一个IDE(Host)可能同时必要访问当地文件和远程API,它会创建两个Client:一个连接当地文件服务器,另一个连接API服务器。
    • 在多用户场景中,每个用户的Host可能都有自己的Client实例。

MCP Servers: Lightweight programs that each expose specific capabilities



  • 理解: “Servers”,由于MCP设计允许多个轻量级服务器步调运行,每个服务器负责暴露特定的功能(如文件读写、数据库查询、API调用)。这些服务器彼此独立,通过MCP协议服务于差别的Client。
  • 场景

    • 用户电脑上可能同时运行一个文件服务器(暴露当地文件)和一个网络服务器(连接远程API),两者都是MCP Servers。
    • 在分布式体系中,可以有多个Server分布在差别设备上,共同支持一个Host。

Local Data Sources: Your computer’s files, databases, and services



  • 理解: “Sources”,由于当地数据源种类繁多(文件、数据库、服务等),而且同一类型的数据源可能有多个实例。MCP服务器可以连接多个当地数据源以满意差别需求。
  • 场景

    • 一个Server可能同时访问你的文档文件夹(文件)和SQLite数据库,这两个都是Local Data Sources。
    • 在复杂应用中,可能有多个文件目录或服务(如当地Web服务)必要被访问。

Remote Services: External systems available over the internet



  • 理解
    “Services”,由于远程服务指的是互联网上的各种外部体系(如天气API、股票API、云存储)。MCP服务器可以连接多个远程服务,提供多样化的功能。
  • 场景

    • 一个MCP Server可能同时调用天气API和GitHub API,这两个都是Remote Services。
    • 在AI任务中,模子可能必要从多个云端服务获取数据,这些服务并存于体系中。

为什么必要MCP?

  你可能会问:为什么不直接让模子自己去抓数据,或者干脆用现有的协议呢?答案在于AI应用的特别需求和实际中的挑战。MCP的出现,正是为相识决这些问题:

  • 打破孤岛,提拔能力
      大型语言模子很智慧,但它们天生是"孤岛"——只能依靠训练数据或用户输入。如果想让模子读你的文件、查实时天气,乃至调用代码工具,就必要一个标准化的接口。MCP填补了这个空缺,让模子从"闭门造车"变成"开门迎客"。
  • 安全第一
      直接让模子访问当地文件或网络API,听起来很酷,但也很伤害。万一模子误删文件,或者被恶意指令利用怎么办?MCP通过服务器的中介作用,参加了权限控制和数据隔离,确保交互既强大又安全。
  • 标准化带来可扩展性
      想象一下,如果每个AI工具都用自己的方式连接外部资源,开发者得多累啊?MCP提供了一个同一的框架,无论是当地文件还是云端服务,无论是Mac还是Windows,只要遵守MCP,就能轻松集成。这不仅减轻了开发负担,还让生态体系更具扩展性。
  • 效率与机动性并存
       MCP基于JSON-RPC 2.0,轻量高效。它支持异步通知,意味着服务器可以在不打断客户端的环境下自动推送更新。这种机动性特别适合实时性要求高的场景,好比实时协作工具或动态数据分析。
MCP 的工作流程

  当用户说"给我看看今天的十条关于人工智能的消息,给出链接、相关内容择要及情感分析"时,整个体系是怎样协同工作的?让我们通过一个流程图来详细相识:
     步骤分解:

我来结合刚才的流程图,详细解释当用户请求"给我看看今天的十条关于人工智能的消息,给出链接、相关内容择要及情感分析"时,整个体系怎样协同工作的。按照流程图中的步骤举行详细形貌。
用户层

步骤1: 用户输入请求


  • 用户在界面上输入"给我看看今天的十条关于人工智能的消息,给出链接、相关内容择要及情感分析"
  • 请求被发送到Host体系
主机层

步骤2: Host传递请求给LLM


  • Host吸收到用户的自然语言请求
  • Host将这个请求转发给LLM(如Claude)举行处理
步骤3: LLM生成函数调用


  • LLM分析用户请求,理解用户必要:

    • 获取关于人工智能的最新消息
    • 生成内容择要
    • 举行情感分析

  • LLM确定必要调用多个工具函数来完成这个任务
步骤4: LLM生成函数调用请求并传递给Host


  • LLM创建一个结构化的函数调用请求,类似于:
  1. {
  2.   "function": "search_news",
  3.   "parameters": {
  4.     "query": "人工智能",
  5.     "limit": 10,
  6.     "days": 1
  7.   }
  8. }
复制代码
工具层

步骤5: Host剖析和执行函数


  • Host吸收到LLM生成的函数调用请求
  • Host找到对应的search_news函数
  • Host准备调用该函数,传入参数"人工智能"、限制10条、时间范围为1天
数据层

步骤6: 工具函数调用外部API


  • search_news函数连接到消息API服务
  • 函数发送请求获取最新的人工智能相关消息
步骤7: 外部服务返回数据


  • 消息API返回10条与人工智能相关的最新消息
  • 返回的数据包含消息标题、链接、发布日期等信息
相应层 (第一轮)

步骤8: 工具函数返回结果给Host


  • search_news函数将获取到的消息数据返回给Host
步骤9: Host将结果提供给LLM


  • Host将消息数据传递回LLM
  • LLM吸收到数据,分析后发现还必要举行择要和情感分析
第二轮函数调用 (重复步骤3-9)



  • LLM为每条消息生成进一步的函数调用
  • 对每条消息内容举行择要生成:
  1. {
  2.   "function": "summarize_news",
  3.   "parameters": {
  4.     "news_text": "新闻全文内容",
  5.     "max_length": 100
  6.   }
  7. }
复制代码


  • 对每条消息举行情感分析:
  1. {
  2.   "function": "analyze_sentiment",
  3.   "parameters": {
  4.     "news_text": "新闻全文内容"
  5.   }
  6. }
复制代码


  • Host执行这些函数
  • 外部服务举行择要生成和情感分析
  • 结果返回给Host,再传递给LLM
最终相应

步骤10: LLM生成最终回答


  • LLM整合所有获取到的信息:

    • 原始消息数据
    • 每条消息的择要
    • 每条消息的情感分析结果

  • LLM将这些信息组织成结构化的回答
步骤11: Host展示结果给用户


  • Host将LLM生成的最终回答呈现给用户
  • 用户看到10条人工智能相关消息,每条包含链接、择要和情感分析
体系各组件怎样协同工作(举例)


  • 用户请求:用户要求获取人工智能相关消息、择要和情感分析
  • LLM剖析请求:我(作为LLM)理解了需求,并开始生成函数调用
  • 首次函数调用:调用fetch_news_search函数搜索人工智能相关消息

    • 参数:查询词"人工智能"、迩来5天、限制2条
    • 结果:体系返回了2条相关消息

  • 后续函数调用

    • 对第一条消息举行择要(summarize_news)
    • 返回:简便的消息择要
    • 对第一条消息举行情感分析(analyze_sentiment)
    • 返回:情感得分1.5(积极)

  • 整合信息:我将所有获取到的信息(消息、择要、情感分析)整合成一个完整的回答
  通过这个过程,我们可以看到MCP(Model Context Protocol)怎样使LLM可以或许通过结构化函数调用与外部工具和数据源交互,从而提供更丰富、更实时的信息给用户。
消息查询服务时序图

       这个时序图详细展示了消息查询服务的完整流程,从用户发起请求到最终获得结果的整个过程。以下是对时序图的关键环节解释:

  • 初始请求阶段

    • 用户向主机体系发送请求,要求获取人工智能消息、择要和情感分析
    • 主机将请求转发给大语言模子(LLM)举行处理

  • 消息搜索阶段

    • LLM分析用户意图后,生成search_news函数调用
    • 主机执行该函数,通过工具层向外部消息API发送请求
    • API返回消息数据,经过工具层处理后回传给主机
    • 主机将消息数据提供给LLM

  • 内容处理阶段(循环处理每条消息):

    • LLM生成summarize_news函数调用,请求生成择要
    • 择要结果返回给LLM
    • LLM生成analyze_sentiment函数调用,请求情感分析
    • 情感分析结果返回给LLM

  • 最终相应阶段

    • LLM整合所有信息,生成结构化的最终回答
    • 主机将完整结果展示给用户

  这个时序图清晰地表现了体系各组件间的交互次序和信息流动路径,特别是通过循环结构展示了对多条消息的批量处理过程。图中的信息流向遵照了单向性原则,使整个流程更加清晰易懂。
  读懂这两张图后应该就清楚了:当你输入 “给我看看今天的十条关于人工智能的消息,给出链接、相关内容择要及情感分析”,就能得知调用 MPC Server 的机密。
小结:

  MCP焦点概念: 让LLM可以或许与外部工具和服务交互。
  MCP (Model Context Protocol) 是一种标准化通讯协议,它的焦点目标是让大型语言模子可以或许安全、高效地与外部资源和工具举行交互。它就像AI世界中的"HTTP协议",界说了差别组件之间怎样交换信息的规则,让语言模子摆脱"知识孤岛"的限制。
  MCP Server 是实现MCP协议的服务器步调,它在整个生态体系中扮演着"翻译官"和"守门人"的角色。就像我们例子中的fetch_news服务器,它负责吸收来自AI的请求,转化为对外部资源(如消息API)的调用,然后将获取的数据安全地返回给模子。每个MCP Server通常专注于提供一种特定能力(如文件访问、API调用、数据分析等)。
  简而言之,MCP是标准,MCP Server是实现。MCP界说了"游戏规则",而MCP Server则是遵照这些规则的"玩家"。这种分离设计带来了极大的机动性和安全性,使AI应用生态体系可以或许像积木一样组合差别功能。
  随着AI技能的普及,MCP有望成为连接AI与数字世界的重要桥梁,让语言模子不再范围于训练数据,而能实时获取和处理各类信息。未来,我们可能会看到更多专业化的MCP Server出现,形成一个丰富多彩的工具生态体系,大大扩展AI应用的边界。如果你对开发自己的MCP Server感兴趣,可以参考官方文档和开源项目,参加这个正在发达发展的生态体系。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表