MCP 这个词,去年年底刚火起来的时候,我就觉得不对劲——不是它没用,而是它火得有点晚。结果等我刚把 MCP 协议、MCP Server 部署、工具调用流程这些捋清楚,还没捂热乎,MCPO 又冒出来了。很多群里的小伙伴直接懵了:MCP 是什么我还没弄明白,MCPO 又是啥?跟 MCP 什么关系?是不是又要重新学一套东西?
这篇文章我就用自己实际的折腾经历,把 MCP 到 MCPO 这中间的演进逻辑、核心变化、以及你现在到底该学什么、怎么学,一次说清楚。不管你是刚接触大模型应用开发的新手,还是已经在本地部署过 Ollama、写过 MCP Server 的老手,这篇文章都能帮你把这团乱麻理顺。
1. 先把 MCP 这门课补完:它是来干什么的
先说个结论:如果你连 MCP 都没搞清楚,直接去追 MCPO 就是空中楼阁。MCPO 是对 MCP 暴露出来的问题的回应,不是替代品。所以咱先把基础打牢。
1.1 MCP 协议解决的本质问题
在没有 MCP 之前,大模型应用想调用外部工具,基本是每个应用自己写一套对接逻辑。你做一个 AI 助手要查天气,得单独写天气 API 的调用代码;要查数据库,又得写一套数据库连接代码。每换一个模型、每换一个工具,都得重新适配一遍。
MCP(Model Context Protocol,模型上下文协议)做的就是一件事:统一工具接入标准。它把"模型怎么调工具"这件事规范化了,让任何大模型应用都可以通过同一个标准协议,去连接任何支持 MCP 的工具服务。
打个比方:以前你家里每个电器都自带一个专属插座,电视插头只能插电视插座,洗衣机插头只能插洗衣机插座,乱得不行。MCP 就是统一了国标插座,电器厂家按照标准生产插头,你只需要一个通用插座板就能全插上。
MCP 的架构也不复杂,核心就三个角色:
- Host:模型交互的主程序,比如 Claude Desktop、Cursor、VS Code 装 Claude Code 插件,它就是宿主。
- Server:提供具体工具能力的服务端,比如一个能查数据库的 MCP Server、一个能操作浏览器的 Playwright MCP Server。
- Client:Host 和 Server 之间的连接器,负责协议转发。
我最早在本地搭建的时候,环境很简单:一个 Python 写的 MCP Server,提供两个工具,一个读取本地文件,一个查询 SQLite 数据库。然后在 Claude Desktop 里注册一下这个 Server 的启动命令,就能在对话里直接说"帮我查一下数据库里这个月的订单量",Claude 会自己决定调用哪个工具,把结果拿回来再组织语言回复你。
1.2 完整跑通一次 MCP 工具调用
这里我把自己踩过坑之后的完整流程写出来,照着做一遍你就明白 MCP 到底在做什么了。
我用的环境是 VS Code + Claude Code 插件,本地模型用 Ollama 部署的 Qwen 系列。MCP Server 用 Python 的官方 SDK 写。先看最核心的配置代码:
json复制{
"mcpServers": {
"local-db": {
"command": "python",
"args": [
"-m",
"mcp_server_custom",
"--db-path",
"/data/app.db"
],
"cwd": "/home/user/mcp-server"
}
}
}
这段配置写了什么?它告诉宿主:有一个叫 local-db 的 MCP 服务,启动方式是执行 python -m mcp_server_custom 这个命令,服务的工作目录在 `/home/us
