一切技术都是纸老虎
一句话总结:
👉 MCP (Model Context Protocol) 就是一个基于「标准输入输出(STDIO)」的通信协议,结合 JSON-RPC 格式,让不同进程之间像调用本地函数一样调用 AI 工具或服务。
目录
一、MCP的核心思想
一句话总结:
👉 MCP 是一个进程通信规范,它让 AI 模型、浏览器、终端、数据库等「彼此独立的软件」之间能像乐高一样拼接起来,互相调用功能。
二、前置知识:STDIO(标准输入输出)
MCP 的底层不是魔法,它依赖的正是我们熟悉但常常忽视的「标准输入输出」。
每一个进程都有三个默认接口:
stdin
:标准输入stdout
:标准输出stderr
:标准错误输出这意味着进程不仅能把消息「打印出来」,也能「接收输入」。
示例代码:Node.js里的STDIO
// server.js// 这是一个最简单的进程通信例子// 监听输入(stdin),即外部进程写进来的内容process.stdin.on("data", (data) => { // data 是 Buffer,需要转成字符串 const input = data.toString().trim(); // 在这里可以做逻辑处理 const response = `AI回复: 我收到了你的输入 -> ${input}`; // 输出(stdout),发送给外部进程 process.stdout.write(response + "\n");});
运行方式:
node server.js
输入:
你好
输出:
AI回复: 我收到了你的输入 -> 你好
📌 这就是 MCP 的底层思想:通过 STDIO 把进程变成一个服务。
三、消息格式:JSON-RPC
仅仅有 STDIO 还不够,因为进程间的消息如果随便发,谁都看不懂。MCP 采用了 JSON-RPC 规范,这是一种「请求 - 响应」模式:
- 请求
{ "jsonrpc": "2.0", "id": 1, "method": "sum", "params": [2, 3]}
- 响应
{ "jsonrpc": "2.0", "id": 1, "result": 5}
这样我们就能约定清楚:👉 「我要调用 sum
方法,参数是 [2,3]
,结果返回给我。」
示例代码:支持JSON-RPC的服务
// rpc-server.js// 一个实现 JSON-RPC 协议的进程服务// 工具方法function sum(a, b) { return a + b;}process.stdin.on("data", (data) => { const msg = JSON.parse(data.toString()); // 根据 method 字段调用不同的方法 let result; if (msg.method === "sum") { result = sum(...msg.params); } else { result = "未知方法"; } // 返回 JSON-RPC 响应 const response = { jsonrpc: "2.0", id: msg.id, result, }; process.stdout.write(JSON.stringify(response) + "\n");});
测试:
echo '{"jsonrpc":"2.0","id":1,"method":"sum","params":[2,3]}' | node rpc-server.js
输出:
{"jsonrpc":"2.0","id":1,"result":5}
四、MCP为什么重要?
1. AI助手的「插件协议」
过去我们调用 AI,只能通过 REST API 或 SDK。MCP 提供了一种更轻量的方式:直接把本地进程注册为工具,AI 模型就能调用它。
2. 比 REST API 更快
REST API 需要走网络,而 MCP 通过本地 STDIO,效率极高,几乎没有延迟。
3. 天然安全
数据不会经过外部网络,所有调用都在本地完成,非常适合对隐私敏感的场景。
五、应用场景示例
示例1:AI自动化本地文件操作
// file-server.js// AI文件操作工具const fs = require("fs");process.stdin.on("data", (data) => { const msg = JSON.parse(data.toString()); if (msg.method === "createFile") { const [filename, content] = msg.params; fs.writeFileSync(filename, content); const response = { jsonrpc: "2.0", id: msg.id, result: "文件创建成功 ✅", }; process.stdout.write(JSON.stringify(response) + "\n"); }});
测试:
echo '{"jsonrpc":"2.0","id":1,"method":"createFile","params":["test.txt","Hello MCP"]}' | node file-server.js
结果:
- 控制台输出
{"jsonrpc":"2.0","id":1,"result":"文件创建成功 ✅"}
生成文件 test.txt
,内容是 Hello MCP
示例2:浏览器MCP Server
现在已经有开源项目能把 Chrome 浏览器功能暴露为 MCP 服务:AI 可以直接「打开网页、点击按钮、获取内容」。
相比传统 Puppeteer/Playwright:
特性 | REST API/Playwright | MCP Server |
---|---|---|
调用方式 | 远程网络请求 | 本地进程通信 |
延迟 | 较高(网络开销) | 极低 |
隐私安全 | 可能上传云端 | 完全本地 |
集成复杂度 | 需要额外依赖 | 即插即用 |
六、总结
我们今天从底层一步步推导出了 MCP 的核心逻辑:
- MCP 本质:一种基于 STDIO + JSON-RPC 的通信协议。解决的问题:让进程间能像调用函数一样调用功能。优势:高效、安全、易扩展,非常适合 AI 插件化生态。应用:AI调用本地工具、浏览器控制、自动化脚本、数据库查询……
✍️ 最终总结:👉 MCP 让 AI 不再只是一个回答问题的聊天机器人,而是一个可以真实调用你本地功能的「超级助手」。