<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>MCP on erpan&#39;s note</title>
    <link>https://940504.top/tags/mcp/</link>
    <description>Recent content in MCP on erpan&#39;s note</description>
    <image>
      <title>erpan&#39;s note</title>
      <url>https://940504.top/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://940504.top/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.154.5</generator>
    <language>en</language>
    <copyright>浙ICP备2021018236号-1</copyright>
    <lastBuildDate>Fri, 18 Apr 2025 20:19:19 +0800</lastBuildDate>
    <atom:link href="https://940504.top/tags/mcp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>基于Eino框架理解大模型工具调用</title>
      <link>https://940504.top/posts/%E5%9F%BA%E4%BA%8Eeino%E6%A1%86%E6%9E%B6%E7%90%86%E8%A7%A3%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%B7%A5%E5%85%B7%E8%B0%83%E7%94%A8/</link>
      <pubDate>Fri, 18 Apr 2025 20:19:19 +0800</pubDate>
      <guid>https://940504.top/posts/%E5%9F%BA%E4%BA%8Eeino%E6%A1%86%E6%9E%B6%E7%90%86%E8%A7%A3%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%B7%A5%E5%85%B7%E8%B0%83%E7%94%A8/</guid>
      <description>&lt;h2 id=&#34;函数调用-function-calling&#34;&gt;函数调用 Function Calling&lt;/h2&gt;
&lt;p&gt;Function Calling 是一种将大模型与外部工具和 API 相连的关键功能，大模型能够将用户的自然语言智能地转化为对特定工具或 API 的调用，从而高效满足各种场景需求，如动态信息查询、任务自动化等&lt;/p&gt;
&lt;p&gt;工具调用的一般步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;应用程序将用户问题和tools列表一起发送给大模型，tools列表表明模型可以调用的工具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LLM 对用户意图进行分析，决定是否需要使用工具以及使用哪些工具&lt;/p&gt;
&lt;p&gt;a. 无需工具则生成回答响应给应用程序&lt;/p&gt;
&lt;p&gt;b. 需要调用工具输出工具名和参数信息响应给应用程序&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;应用程序解析模型响应&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;有工具调用，则调用工具并将调用结果和之前的消息记录一并发给模型，继续处理&lt;/li&gt;
&lt;li&gt;无工具调用，继续处理程序逻辑或直接给用户&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;循环上面步骤，达到结束条件则会话完成&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;火山引擎文档中有一张图多轮工具调用的逻辑图，可以辅助理解  &lt;a href=&#34;https://www.volcengine.com/docs/82379/1262342#%E5%A4%9A%E8%BD%AE%E5%B7%A5%E5%85%B7%E8%B0%83%E7%94%A8&#34;&gt;多轮工具调用&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;mcp&#34;&gt;MCP&lt;/h2&gt;
&lt;p&gt;官网 &lt;a href=&#34;https://modelcontextprotocol.io/&#34;&gt;https://modelcontextprotocol.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MCP（Model Context Protocol）即模型上下文协议，与 function calling（函数调用）都是实现大语言模型与外部系统交互的关键技术概念&lt;/p&gt;
&lt;p&gt;MCP 主要负责规范化函数的具体执行过程，为 AI 模型和外部数据源或工具之间建立统一的通信接口。&lt;/p&gt;
&lt;p&gt;二者的关系表现为 function calling 是 MCP 生态下的一种具体功能实现形式。function calling 为 MCP 提供了函数调用的指令来源，而 MCP 则为 function calling 生成的指令提供了标准化的执行框架，确保这些指令能够在不同的外部系统中可靠地执行。&lt;/p&gt;
&lt;p&gt;MCP也可以简单理解为function的共享，因此MCP开源社区在最近几个月都非常活跃。&lt;/p&gt;
&lt;p&gt;MCP遵循CS架构（Client-Server），几个核心概念：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主机（Host）&lt;/strong&gt;：通常是发起连接的 LLM 应用程序，如 Claude Desktop、IDE 插件等，负责管理客户端实例和安全策略&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;客户端（Client）&lt;/strong&gt;：位于主机内，是主机与服务器之间的桥梁，与服务器建立 1:1 会话，处理协议协商和消息路由等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务器（Server）&lt;/strong&gt;：是独立运行的轻量级服务，通过标准化接口提供特定功能，如文件系统访问、数据库查询等&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心架构这块参考官方文档 &lt;a href=&#34;https://modelcontextprotocol.io/docs/concepts/architecture&#34;&gt;https://modelcontextprotocol.io/docs/concepts/architecture&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;传输机制&#34;&gt;传输机制&lt;/h3&gt;
&lt;p&gt;MCP的client-server间传输层协议当前有两种，都使用JSON-RPC2.0作为消息交换格式：&lt;/p&gt;
&lt;h4 id=&#34;stdio&#34;&gt;&lt;em&gt;Stdio&lt;/em&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;进程间通信&lt;/li&gt;
&lt;li&gt;适用于命令行等同服务器通信&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Client将Server作为子进程启动，Server从其标准输入 （&lt;code&gt;stdin&lt;/code&gt;） 读取 JSON-RPC 消息，并将消息发送到其标准输出 （&lt;code&gt;stdout&lt;/code&gt;）。Server可以将 UTF-8 字符串写入其标准错误 （&lt;code&gt;stderr&lt;/code&gt;） 以进行日志记录，Client可以捕获、转发或忽略此日志记录。Server不能向其 &lt;code&gt;stdout&lt;/code&gt; 写入任何不是有效 MCP 消息的内容，Client不能向Server的 &lt;code&gt;stdin&lt;/code&gt; 写入任何不是有效 MCP 消息的内容。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
