到底什么是MCP?
一、什么是 MCP?
1.1 解决什么痛点
如果把你的项目比作一栋房子,你想借朋友房子里的几本书,就可以用 MCP 接入。接入后,你直接走到他的房间里拿书就行了。
反过来,如果你写了很多天气相关的 API 接口,也可以把它们封装成一个 MCP 服务,直接交给对方用,别人不需要知道底层 API 长什么样。
1.2 MCP 的本质
MCP 本质上是一个协议,是一套让 AI 用同一种方式去调用各种不同工具的通用约定。它把“为每个工具单独写一段对接代码”变成了“只用一套语言就能调用所有工具”。
二、MCP 有哪些模式?
目前 MCP 主流的传输模式有两种:
2.1 stdio(标准输入输出)
比喻:在你自己的房子里加盖一个朋友的房间,你想借书的时候,直接开门走过去拿,速度非常快。
- 优点:速度最快,延迟最低,本地安全
- 缺点:只能在你自己的电脑上使用(因为本质是启动了本地的一个子进程)
- 适用场景:本地开发和测试、同一台服务器内的服务调用、个人 AI 工具
2.2 Streamable HTTP(流式 HTTP)
比喻:在你和朋友的两栋房子之间建一部双向电梯,双方可以随时互相传送东西,你也可以直接去他家拿书,他家同时还能接待其他人。
- 优点:可以远程访问,部署在服务器上后随时可用,支持多人共用
- 缺点:比 stdio 慢一些(经过网络),需要额外处理安全和部署问题
- 适用场景:需要远程、多人使用,想把服务发布出去供别人调用,需要实时推送
三、简单部署一个 MCP(FastMCP)
from mcp.server.fastmcp import FastMCP
# 创建一个服务器实例,起个名字
mcp = FastMCP("hudada-server")
# 创建工具1:查天气
@mcp.tool()
async def get_weather(city: str) -> str:
"""查询指定城市的天气"""
return f"{city}的天气超级好"
# 创建工具2:查省份里的城市
@mcp.tool()
async def get_city(province: str) -> str:
"""根据省份获取一个城市"""
return f"{province}这个省里有重庆这个城市"
# 启动 stdio 模式服务器
if __name__ == "__main__":
mcp.run(transport="stdio")

浙公网安备 33010602011771号