MCP Server 教程 2026:从零搭建你的第一个 MCP Server
概念懂了但不知从哪下手?本文用两个完整可跑的示例(文件阅读器+天气查询),10分钟从零搭出第一个MCP Server,并讲清stdio与SSE怎么选。
💡 你将学到
概念懂了但不知从哪下手?本文用两个完整可跑的示例(文件阅读器+天气查询),10分钟从零搭出第一个MCP Server,并讲清stdio与SSE怎么选。
📜 目录
MCP Server 教程 2026:从零搭建你的第一个 MCP Server
上篇文章讲了 MCP(Model Context Protocol)是什么:它让AI客户端(如 Claude Desktop、Cursor)通过一套统一标准调用外部工具和数据。概念好懂,但很多读者卡在"不知道从哪下手"。这篇直接动手:从装 SDK 到跑通两个真实可用的 Server,全程代码,十分钟搞定。
一、环境准备:两样就够
- Python 3.10+(终端执行
python --version确认) - pip(Python 自带,装包用)
不需要 GPU、不需要服务器,本地电脑就能跑。
二、安装官方 SDK
pip install mcp
装完可以验证一下:
python -c "import mcp; print('OK')"
三、第一个 MCP Server:文件阅读器
下面这个 Server 注册两个工具:read_file(读文件)和 list_files(列目录),让 AI 能直接读你电脑上的文件。用官方推荐的 FastMCP 写法:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("file-reader")
@mcp.tool()
def read_file(path: str) -> str:
"""读取本地文件内容"""
with open(path, "r", encoding="utf-8") as f:
return f.read()
@mcp.tool()
def list_files(directory: str) -> list[str]:
"""列出目录下的文件名"""
import os
return os.listdir(directory)
if __name__ == "__main__":
mcp.run()
保存为 file_reader_server.py。代码里每个函数上的文档字符串("""...""")就是"工具说明书",AI 靠它判断什么时候调用哪个工具——所以描述要写清楚。
四、跑起来 + 让 AI 连上它
第一步,启动:
python file_reader_server.py
启动后程序会通过 stdio(标准输入输出)等待客户端连接,终端不会有花哨输出,这是正常的。
第二步,连接客户端: 以 Claude Desktop 为例(其他支持 MCP 的客户端类似):
1. 打开设置 → 找到 MCP / Developer 相关入口(不同版本菜单位置略有差异,以官方文档为准)
2. 添加一个 MCP Server,命令填:python /绝对路径/file_reader_server.py
3. 保存后重启客户端
连接成功后,你直接说"帮我读一下桌面的 notes.txt",AI 就会自动调用 read_file 工具——这就是 MCP 的威力:AI 从"只能聊天"变成"能操作你的电脑"。
五、第二个示例:天气查询 Server(调用外部 API)
MCP 工具不只是读本地文件,还能调外部 API。下面用免费天气服务 wttr.in 做一个天气查询工具:
from mcp.server.fastmcp import FastMCP
import urllib.request
mcp = FastMCP("weather")
@mcp.tool()
def get_weather(city: str) -> str:
"""查询指定城市的当前天气"""
url = f"https://wttr.in/{city}?format=%C+%t+%w"
with urllib.request.urlopen(url, timeout=10) as r:
return r.read().decode("utf-8")
if __name__ == "__main__":
mcp.run()
这个例子展示了完整链路:AI 收到用户问题 → 识别需要天气工具 → 调 get_weather → 拿到数据 → 组织成自然语言回答。想接自己的 API(查数据库、查订单、发消息),照这个模式加工具就行。
六、stdio vs SSE:本地和远程怎么选
| 传输方式 | 适用场景 | 特点 |
|---|---|---|
| stdio | 本地个人使用、开发调试 | 简单直接,启动即连,无需网络端口 |
| SSE(HTTP流) | 远程部署、多客户端共享 | 走 HTTP,可部署到服务器供远程访问 |
个人电脑上自己用,选 stdio 就够了;要做成团队服务、部署在服务器上,再看官方文档用流式 HTTP 传输。
七、进阶:一个 Server 注册多个工具
一个 MCP Server 可以注册任意多个工具:文件、天气、数据库查询、网页搜索……AI 客户端会自动发现全部工具,根据你的请求挑合适的调用。工具描述写得好,AI 才用得准——建议每个工具都用"做什么+什么时候用"的句式写说明。
常见问题
Q:报错 ModuleNotFoundError: No module named 'mcp'?
A:SDK 没装上或装错了 Python 环境。确认执行 pip install mcp 后再跑;用了虚拟环境(venv)的话,要确保启动脚本用的也是同一个环境的 Python。
Q:启动后终端什么都没显示,是不是挂了? A:没挂。stdio 模式的 Server 启动后静默等待输入,这是正常行为;接上客户端后调用工具才有输出。
Q:MCP Server 和普通 API 有什么区别? A:普通 API 要你写代码去"调"它;MCP Server 是让 AI 客户端"发现并调用"它,省去为每个工具写集成代码的功夫,而且一次写好,支持 MCP 的客户端通用。
Q:能部署到云服务器上吗? A:可以。远程部署要用流式 HTTP 传输(SSE / Streamable HTTP),并自行处理鉴权和防火墙,具体配置以 MCP 官方文档为准。
注:SDK 接口随版本迭代可能微调,如遇报错以 MCP 官方文档(modelcontextprotocol.io)为准。
相关文章
❓ 常见问题
报错 ModuleNotFoundError: No module named 'mcp'?
SDK 没装上或装错了 Python 环境。确认执行 `pip install mcp` 后再跑;用了虚拟环境(venv)的话,要确保启动脚本用的也是同一个环境的 Python。
启动后终端什么都没显示,是不是挂了?
没挂。stdio 模式的 Server 启动后静默等待输入,这是正常行为;接上客户端后调用工具才有输出。
MCP Server 和普通 API 有什么区别?
普通 API 要你写代码去"调"它;MCP Server 是让 AI 客户端"发现并调用"它,省去为每个工具写集成代码的功夫,而且一次写好,支持 MCP 的客户端通用。
能部署到云服务器上吗?
可以。远程部署要用流式 HTTP 传输(SSE / Streamable HTTP),并自行处理鉴权和防火墙,具体配置以 MCP 官方文档为准。 > 注:SDK 接口随版本迭代可能微调,如遇报错以 MCP 官方文档(modelcontextprotocol.io)为准。
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。
