<?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>AI on Zeepunt 日常随笔</title><link>https://zeepunt.github.io/tags/ai/</link><description>Recent content in AI on Zeepunt 日常随笔</description><generator>Hugo -- 0.152.1</generator><language>zh-cn</language><lastBuildDate>Thu, 25 Jun 2026 14:58:57 +0800</lastBuildDate><atom:link href="https://zeepunt.github.io/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>【AI】搭建一个 MCP 服务器</title><link>https://zeepunt.github.io/article/ai/ai%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA-mcp-%E6%9C%8D%E5%8A%A1%E5%99%A8/</link><pubDate>Thu, 25 Jun 2026 14:58:57 +0800</pubDate><guid>https://zeepunt.github.io/article/ai/ai%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA-mcp-%E6%9C%8D%E5%8A%A1%E5%99%A8/</guid><description>&lt;h1 id="什么是-mcp"&gt;什么是 MCP&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/modelcontextprotocol"&gt;MCP&lt;/a&gt;，Model Context Protocol，模型上下文协议。&lt;/p&gt;
&lt;p&gt;通过 MCP 协议，AI 应用（比如 Claude、ChatGPT、Qwen）可以访问指定的数据源（比如数据库、Markdown 文档）、运行指定的工具（比如搜索引擎、计算器）、执行指定的工作流等。&lt;/p&gt;
&lt;p&gt;&lt;img alt="img" loading="lazy" src="https://zeepunt.github.io/article/ai/ai%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA-mcp-%E6%9C%8D%E5%8A%A1%E5%99%A8/assets/mcp-simple-diagram.png"&gt;&lt;/p&gt;
&lt;h1 id="mcp-架构"&gt;MCP 架构&lt;/h1&gt;
&lt;h2 id="服务器"&gt;服务器&lt;/h2&gt;
&lt;p&gt;服务器提供三种功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;资源（Resources）&lt;/li&gt;
&lt;li&gt;工具（Tools）&lt;/li&gt;
&lt;li&gt;提示（Prompts）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="分层"&gt;分层&lt;/h2&gt;
&lt;p&gt;MCP 由两层组成：数据层（Data Layer）、传输层（Transport Layer）。&lt;/p&gt;
&lt;h3 id="数据层"&gt;数据层&lt;/h3&gt;
&lt;p&gt;数据层实现了一个基于 &lt;a href="https://jsonrpc.cn/"&gt;JSON-RPC 2.0&lt;/a&gt; 的交互协议，定义了消息结构和语义。&lt;/p&gt;
&lt;h3 id="传输层"&gt;传输层&lt;/h3&gt;
&lt;p&gt;支持两种传输机制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stdio&lt;/li&gt;
&lt;li&gt;Streamable HTTP&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;有些旧的还支持 SSE（Server-Sent Events）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="搭建-mcp-服务器"&gt;搭建 MCP 服务器&lt;/h1&gt;
&lt;h2 id="当前环境"&gt;当前环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;python 版本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python3 --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Python 3.12.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="操作命令"&gt;操作命令&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;创建目录&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir my_mcp_server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; my_mcp_server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创建并激活虚拟环境&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python3 -m venv .venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;source&lt;/span&gt; .venv/Scripts/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;激活后，可以输入 &lt;code&gt;deactivate&lt;/code&gt; 取消激活。&lt;/p&gt;</description></item></channel></rss>