
2025年5月24日
外行如何理解什么是MCP?
什么是MCP?
想象你在一家餐厅点餐:
- **你(用户)**是来点餐的;
- **服务员(Controller 控制器)**负责把你的点菜请求传达给厨房;
- **厨房(Model 模型)**负责真正做菜;
- 服务员还会把菜送到你面前,并解释一下(Presenter 展示器)。
MCP就是把这些“角色”分开,各自干好各自的事:
- Model(模型) 管理数据和规则(比如:菜怎么做);
- Controller(控制器) 处理用户的操作请求(比如你点了什么);
- Presenter(展示器) 负责把结果展示得清楚、好看(比如菜单排版,菜端上来怎么摆)。
MCP 给软件设计带来的好处:
- 更容易维护和修改:
比如你要换菜单样式,只要改Presenter部分,不用动厨房(Model)或服务员(Controller); - 分工清晰,开发更快:
不同人可以同时干不同部分,一个人做Model,一个人做Presenter,互不干扰; - 测试更方便:
你可以只测试“厨房”做菜是否正确,而不用管服务员是否走错桌子。
简单说,MCP就像把一个复杂的软件拆成几个“专业岗位”,每个负责一件事,让整个系统更清晰、更稳定、更好改。
我们用一个简单的实际例子来说明 MCP 在软件编写中的作用:一个天气查询应用。
🌤 场景:天气查询App
用户打开App,输入城市名,点击“查询”,然后界面显示这个城市的天气。
🔧 用 MCP 来划分角色:
🧠 Model(模型)
负责:处理数据、访问接口
- 它负责连接天气API,获取某城市的天气数据。
- 例如:它知道去哪个网站获取北京的天气,返回温度、湿度、风速等信息。
pythonCopyEditclass WeatherModel:
def get_weather(city_name):
# 假设调用天气API并返回数据
return {"city": city_name, "temp": "25°C", "condition": "晴"}
🧭 Controller(控制器)
负责:接收用户操作,协调其他部分
- 用户点了“查询”按钮,Controller收到这个动作。
- 它会告诉Model:“帮我查一下这个城市的天气”
- 然后拿到结果,传给Presenter。
pythonCopyEditclass WeatherController:
def __init__(self, model, presenter):
self.model = model
self.presenter = presenter
def on_search_city(city_name):
data = self.model.get_weather(city_name)
self.presenter.show_weather(data)
🖼 Presenter(展示器)
负责:展示结果,让用户看得懂
- 它负责把拿到的天气数据显示在界面上,格式化好,清清楚楚。
- 比如:“北京:25°C 晴天”这样的形式。
pythonCopyEditclass WeatherPresenter:
def show_weather(data):
print(f"{data['city']}:{data['temp']} {data['condition']}")
✅ MCP 的优势:
- 换API只改Model,不动界面或控制器;
- 换UI风格只改Presenter,不改其他逻辑;
- 控制逻辑变化(比如加搜索历史),只改Controller;
- 每部分都能独立测试,不容易出错。
如果你想,我可以把这个例子做成完整的代码或可视化流程图来帮助你更深入理解。要继续吗?
可视化流程图: