<?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 Server on Weiuou的博客</title><link>https://blog.weiuou.top/tags/mcp-server/</link><description>Recent content in MCP Server on Weiuou的博客</description><image><title>Weiuou的博客</title><url>https://blog.weiuou.top/avatar.png</url><link>https://blog.weiuou.top/avatar.png</link></image><generator>Hugo</generator><language>zh-cn</language><copyright>Weiuou</copyright><lastBuildDate>Sun, 05 Jul 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://blog.weiuou.top/tags/mcp-server/index.xml" rel="self" type="application/rss+xml"/><item><title>MCP 学习路线</title><link>https://blog.weiuou.top/topics/mcp-learning-path/</link><pubDate>Sun, 05 Jul 2026 18:00:00 +0800</pubDate><guid>https://blog.weiuou.top/topics/mcp-learning-path/</guid><description>MCP 学习路线：从 MCP 是什么、MCP 架构到 Server 的 Tools、Resources 和 Prompts。</description><content:encoded><![CDATA[<p>MCP 的价值在于把 AI 应用和外部系统之间的连接方式标准化。理解 MCP 时，不要只看“它能调用工具”，还要看 Host、Client、Server 如何分工。</p>
<h2 id="一句话定义">一句话定义</h2>
<p>MCP 是一种让 AI 应用连接外部工具、数据源和提示模板的开放协议，可以把它理解为 AI 应用访问外部上下文的标准接口。</p>
<h2 id="推荐阅读顺序">推荐阅读顺序</h2>
<ol>
<li><a href="/posts/what-is-mcp/">什么是 MCP</a></li>
<li><a href="/posts/mcp-architecture/">MCP 架构</a></li>
<li><a href="/posts/mcp-server-tools-resources-prompts/">MCP Server</a></li>
<li><a href="/topics/ai-agent-development/">AI Agent 开发</a></li>
</ol>
<h2 id="核心概念表">核心概念表</h2>
<table>
	<thead>
			<tr>
					<th>概念</th>
					<th>作用</th>
					<th>常见例子</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>MCP Host</td>
					<td>使用 MCP 能力的 AI 应用</td>
					<td>Codex、Claude Desktop</td>
			</tr>
			<tr>
					<td>MCP Client</td>
					<td>Host 内部负责连接某个 Server 的组件</td>
					<td>每个 Server 通常对应一个 Client</td>
			</tr>
			<tr>
					<td>MCP Server</td>
					<td>向 AI 应用暴露能力的程序</td>
					<td>文件系统、GitHub、数据库、浏览器</td>
			</tr>
			<tr>
					<td>Tools</td>
					<td>主动执行动作的接口</td>
					<td>搜索、写入、调用 API</td>
			</tr>
			<tr>
					<td>Resources</td>
					<td>只读上下文或数据源</td>
					<td>文件、文档、数据库记录</td>
			</tr>
			<tr>
					<td>Prompts</td>
					<td>可复用的任务模板</td>
					<td>代码审查模板、调研模板</td>
			</tr>
	</tbody>
</table>
<h2 id="学习路径">学习路径</h2>
<p>先弄清楚 MCP 解决的是“连接标准化”问题，再理解 C-S 架构里的 Host、Client、Server。之后再看 Server 暴露的三类能力：Tools、Resources、Prompts。</p>
<p>如果你已经在做 Agent 应用，可以把 MCP 放到工具生态和上下文管理里理解：它不是替代 Agent Harness，而是给 Harness 提供更标准的能力入口。</p>
<h2 id="延伸阅读">延伸阅读</h2>
<ul>
<li><a href="/posts/function-calling-notes/">Function Calling</a></li>
<li><a href="/posts/agent-development-common-problems/">Agent开发中的常见问题</a></li>
</ul>
]]></content:encoded></item><item><title>MCP Server</title><link>https://blog.weiuou.top/posts/mcp-server-tools-resources-prompts/</link><pubDate>Wed, 24 Jun 2026 09:30:00 +0800</pubDate><guid>https://blog.weiuou.top/posts/mcp-server-tools-resources-prompts/</guid><description>MCP Server 通过 Tools、Resources 和 Prompts 三类能力，向 AI 应用提供特定功能。</description><content:encoded><![CDATA[<p>MCP Server 是通过标准化的协议接口，向 AI 应用提供特定功能的程序，常见的包括文件系统服务器、GitHub 服务器等。</p>
<h2 id="核心功能主要包含三类">核心功能主要包含三类</h2>
<ol>
<li>Tools：AI 应用可以根据用户请求主动决定调用这些功能，实现类似于向数据库写数据、调用外部 API、修改文件等操作。</li>
<li>Resources：被动型的数据源，提供只读的访问权限，用来获取文件内容等。</li>
<li>Prompts：预先构建好的指令模板，用来指导 AI 使用特定工具和资源来完成任务（MCP Server 官方说明书）。</li>
</ol>
<p>MCP 使用 JSON Schema 来进行验证，每个工具只执行一项操作，输入和输出都是明确定义的。</p>
<h2 id="tools">Tools</h2>
<table>
	<thead>
			<tr>
					<th>方法</th>
					<th>用途</th>
					<th>返回内容</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>tools/list</code></td>
					<td>获取可用的工具以及描述</td>
					<td>包含各种工具定义的列表</td>
			</tr>
			<tr>
					<td><code>tools/call</code></td>
					<td>执行特定的工具/命令</td>
					<td>工具执行结果</td>
			</tr>
	</tbody>
</table>
<p>以下是一个简单的工具定义：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;searchFlights&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;Search for available flights&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;inputSchema&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;object&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;properties&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;origin&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;string&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;Departure city&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;destination&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;string&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;Arrival city&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;date&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;string&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;format&#34;</span><span class="p">:</span> <span class="s2">&#34;date&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;Travel date&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&#34;required&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;origin&#34;</span><span class="p">,</span> <span class="s2">&#34;destination&#34;</span><span class="p">,</span> <span class="s2">&#34;date&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>示例：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">searchFlights(origin: &#34;NYC&#34;, destination: &#34;Barcelona&#34;, date: &#34;2024-06-15&#34;)
</span></span></code></pre></div><p>通常 AI 应用可以自主地发现并调用这些工具，不过 MCP 通过多种机制来确保人类可以起到监督的作用，例如：</p>
<ul>
<li>UI 中显示各种可用工具，让用户能够决定在特殊的交互场景中是否使用某项工具。</li>
<li>针对工具执行的确认对话框。</li>
<li>对于涉及权限的操作进行预先审批。</li>
<li>工具调用的过程以及结果的日志记录。</li>
</ul>
<h2 id="resources">Resources</h2>
<p>为 AI 应用提供结构化的方式来获取信息，随后可以用于模型的输入数据或上下文信息。</p>
<p>资源支持两种发现模式：</p>
<ul>
<li>直接资源：指向特定数据的固定 URI。</li>
<li>资源模板：用带参数的动态 URI 实现灵活的查询。</li>
</ul>
<table>
	<thead>
			<tr>
					<th>方法</th>
					<th>用途</th>
					<th>返回值</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>resources/list</code></td>
					<td>列出可用的直接资源</td>
					<td>资源描述列表</td>
			</tr>
			<tr>
					<td><code>resources/templates/list</code></td>
					<td>列出可用的资源模板</td>
					<td>资源模板定义列表</td>
			</tr>
			<tr>
					<td><code>resources/read</code></td>
					<td>检索资源内容</td>
					<td>包含元数据的资源数据</td>
			</tr>
			<tr>
					<td><code>resources/subscribe</code></td>
					<td>监控资源变化情况</td>
					<td>订阅确认</td>
			</tr>
	</tbody>
</table>
<p>示例：</p>
<ul>
<li>日历数据（<code>calendar://events/2024</code>）：查看用户的可用时间。</li>
<li>证件（<code>file://Documents/Travel/IdCard.pdf</code>）：查看身份证复印件。</li>
</ul>
<p>AI 应用可以获取这些资源并决定如何处理它们，模型就能了解各种资源的可用性，并据此做出更准确的决策。</p>
<p>资源模板示例：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;uriTemplate&#34;</span><span class="p">:</span> <span class="s2">&#34;weather://forecast/{city}/{date}&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;weather-forecast&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;title&#34;</span><span class="p">:</span> <span class="s2">&#34;Weather Forecast&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;Get weather forecast for any city and date&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;mimeType&#34;</span><span class="p">:</span> <span class="s2">&#34;application/json&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;uriTemplate&#34;</span><span class="p">:</span> <span class="s2">&#34;travel://flights/{origin}/{destination}&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;flight-search&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;title&#34;</span><span class="p">:</span> <span class="s2">&#34;Flight Search&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;Search available flights between cities&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;mimeType&#34;</span><span class="p">:</span> <span class="s2">&#34;application/json&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>资源模板使查询更加灵活。对于天气数据，AI 应用可以查询任意城市/日期的天气预报组合；对于航班信息，可以查询任意两个城市机场之间的航线，为 AI 应用规划行程提供详细数据。</p>
<p>动态资源支持参数补全，例如输入 <code>Par</code> 作为 <code>weather://forecast/{city}</code> 的参数，很可能是想输入 <code>Paris</code>，系统可以帮助用户在不明确了解格式要求时查到准确的数据。</p>
<h2 id="prompts">Prompts</h2>
<p>提示词是一种结构化的模板，用来定义所需的输入内容以及交互方式，由用户来控制，需要用户主动触发，还具有情景感知能力，可以利用现有的资源和工具来构建完整的工作流程。与资源类似，提示词也支持参数补全，来帮助用户确定合适的参数。</p>
<p>示例：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;plan-vacation&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;title&#34;</span><span class="p">:</span> <span class="s2">&#34;Plan a vacation&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;Guide through vacation planning process&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&#34;arguments&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;destination&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;string&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;required&#34;</span><span class="p">:</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;duration&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;number&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;description&#34;</span><span class="p">:</span> <span class="s2">&#34;days&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;budget&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;number&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;required&#34;</span><span class="p">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;interests&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;array&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&#34;items&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;string&#34;</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">  <span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>相比于无结构的自然语言，提示词系统能够实现：</p>
<ol>
<li>选择“规划假期”这个模板。</li>
<li>然后结构化输入目的地、时间、预算以及偏好。</li>
<li>并执行基于模板的标准化工作流的执行方式。</li>
</ol>
<p>这些提示由用户自行控制，需要用户主动触发才能显示，这常意味着开发者需要设计与其风格相协调的界面，通常包含以下原则：</p>
<ul>
<li>可以轻松找到可用的 Prompt。</li>
<li>对每个 Prompt 用来做什么进行详细说明。</li>
<li>透明地展示 Prompt 依赖的底层模板。</li>
</ul>
<blockquote>
<p>虽然很多面试题中会有一个常见的“MCP 和 Skill 有什么区别”，但是从我的感觉来看，MCP 中的 Prompt 其实就类似于一个官方的 Skill，类似于一个说明书，给出你“装了这个 MCP Server 之后都可以做什么”的一个最佳实践。<a href="https://modelcontextprotocol.io/docs/learn/server-concepts#example-multi-server-travel-planning">MCP官方文档</a>中还有一段关于将多个 MCP Server 组合在一起的内容，我觉得更类似于当前语境下的 Skill。</p>
</blockquote>
]]></content:encoded></item><item><title>MCP 架构</title><link>https://blog.weiuou.top/posts/mcp-architecture/</link><pubDate>Wed, 24 Jun 2026 09:20:00 +0800</pubDate><guid>https://blog.weiuou.top/posts/mcp-architecture/</guid><description>MCP 采用 C-S 架构，MCP Host 会通过 MCP Client 与一个或多个 MCP Server 建立连接。</description><content:encoded><![CDATA[<h2 id="本文结论">本文结论</h2>
<ul>
<li>MCP 采用 C-S 架构：Host 通过 Client 连接一个或多个 Server。</li>
<li>Host 是用户直接使用的 AI 应用，Client 是 Host 内部的连接组件，Server 是暴露能力的外部程序。</li>
<li>一个 Host 可以同时连接多个 MCP Server，每个 Server 可以提供 Tools、Resources 和 Prompts。</li>
<li>传输方式会影响部署形态：本地 Server 常用 stdio，远程 Server 通常使用 HTTP 类传输。</li>
</ul>
<h2 id="适合谁读">适合谁读</h2>
<ul>
<li>已经知道 MCP 是什么，想进一步理解 Host、Client、Server 分工的人。</li>
<li>准备开发 MCP Server，想知道它和 AI 应用之间如何连接的人。</li>
<li>想把 MCP 放进 Agent 工具体系里的人。</li>
</ul>
<h2 id="mcp-的组成">MCP 的组成</h2>
<p>MCP 采用 C-S 架构，常见的 MCP Host 如 Codex、Claude 会与多个 MCP Server 建立连接。例如，本地的 computer-use MCP Server 和在远端的 GitHub MCP Server，Host 会为每个 MCP Server 创建对应的 Client，来保持专用的连接。</p>
<p>如上面所说，MCP Server 可以在本地也可以在远程，可以通过使用不同的传输协议来实现。使用 STDIO 的本地 MCP Server 通常只服务于本地的 MCP 客户端，而使用 Streamable HTTP 的远程服务器则通常可以服务于多个 MCP 客户端。</p>
<p>通常 MCP 生态里还会包含：</p>
<ul>
<li>MCP 规范：定义协议和消息结构。</li>
<li>MCP SDK：帮助开发者实现 Client 或 Server。</li>
<li>MCP 开发工具：用于调试和测试 MCP Server。</li>
<li>MCP Server 的参考实现：例如文件系统、GitHub、数据库等 Server。</li>
</ul>
<h2 id="hostclientserver-的区别">Host、Client、Server 的区别</h2>
<p>MCP 架构中主要组成部分包括 3 类：</p>
<ol>
<li>MCP Host：负责协调管理一个或多个 MCP Clients 的 AI 应用，例如 Codex。</li>
<li>MCP Client：与 MCP Server 保持连接的组件，从 MCP Server 获取数据，供 MCP Host 使用。</li>
<li>MCP Server：一种为 MCP Client 提供所需上下文的程序。</li>
</ol>
<p>可以这样理解：</p>
<table>
	<thead>
			<tr>
					<th>组件</th>
					<th>更像什么</th>
					<th>关注点</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>MCP Host</td>
					<td>用户正在使用的 AI 应用</td>
					<td>任务理解、模型调用、用户交互</td>
			</tr>
			<tr>
					<td>MCP Client</td>
					<td>Host 内部的连接适配器</td>
					<td>与某个 Server 建立连接、发送请求、接收响应</td>
			</tr>
			<tr>
					<td>MCP Server</td>
					<td>外部能力提供者</td>
					<td>暴露工具、资源和提示模板</td>
			</tr>
	</tbody>
</table>
<h2 id="一个请求如何流动">一个请求如何流动</h2>
<p>一个简化的 MCP 调用过程大概是：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">用户提出任务
</span></span><span class="line"><span class="cl">-&gt; Host 判断需要外部能力
</span></span><span class="line"><span class="cl">-&gt; Host 通过对应 Client 请求某个 Server
</span></span><span class="line"><span class="cl">-&gt; Server 返回工具列表、资源内容或工具执行结果
</span></span><span class="line"><span class="cl">-&gt; Host 把结果放回模型上下文
</span></span><span class="line"><span class="cl">-&gt; 模型继续生成或继续调用工具
</span></span></code></pre></div><p>这里最重要的是：Server 不直接替模型做所有决策。Server 提供能力，Host 和模型决定什么时候使用这些能力，而 Harness 或应用层负责权限、确认和审计。</p>
<h2 id="常见误区">常见误区</h2>
<h3 id="mcp-client-不是用户侧应用本身">MCP Client 不是用户侧应用本身</h3>
<p>用户通常看到的是 Host。Client 更像 Host 内部和某个 Server 通信的连接层。</p>
<h3 id="一个-host-不只连接一个-server">一个 Host 不只连接一个 Server</h3>
<p>实际使用中，一个 AI 应用可以同时连接文件系统、GitHub、浏览器、数据库等多个 MCP Server。</p>
<h3 id="mcp-架构不自动等于安全架构">MCP 架构不自动等于安全架构</h3>
<p>MCP 只是把连接标准化。是否允许写文件、是否允许调用某个 API、是否需要人工确认，仍然要由应用和 Server 共同设计。</p>
<h2 id="延伸阅读">延伸阅读</h2>
<ul>
<li><a href="/topics/mcp-learning-path/">MCP 学习路线</a></li>
<li><a href="/posts/what-is-mcp/">什么是 MCP</a></li>
<li><a href="/posts/mcp-server-tools-resources-prompts/">MCP Server</a></li>
</ul>
]]></content:encoded></item></channel></rss>