到底什么是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")
posted @ 2026-07-14 21:37  Alfred404  阅读(6)  评论(0)    收藏  举报