🧩 MCP生态

MCP协议是什么?JSON-RPC统一AI工具集成标准详解

发布时间:2026-04-16 分类: MCP生态
摘要:MCP:一个“意外”统一AI工具的协议零侵入式集成AI Agent 开发者常被平台兼容性卡住:VS Code 扩展要学 LSP 和 Extension API,Chrome 插件得写 manifest.json 和 content script,本地工具又要搞 CLI 或 IPC。每个平台都像一道墙。MCP(Machina Communication Protocol)没打算当救世主。它只是...

封面

MCP:一个“意外”统一AI工具的协议

零侵入式集成

AI Agent 开发者常被平台兼容性卡住:VS Code 扩展要学 LSP 和 Extension API,Chrome 插件得写 manifest.json 和 content script,本地工具又要搞 CLI 或 IPC。每个平台都像一道墙。

MCP(Machina Communication Protocol)没打算当救世主。它只是定义了一组极简的 JSON-RPC 调用约定——list-toolscall-toolnotify,加上一个 HTTP 或 stdio 传输层。结果 VS Code 的 mcp-server 扩展、Chrome 的 mcp-client 插件、还有 curl 命令行工具,都直接认它。没人牵头制定标准,但大家不约而同地往同一个接口上靠。

这不是“设计出来的统一”,是开发者用脚投票投出来的事实协议。

技术价值

零侵入,真零侵入

你不需要改 VS Code 源码,也不用给 Chrome 提 PR。只要启动一个进程监听 /mcp 端点(或通过 stdin/stdout),返回符合 MCP 规范的 JSON 响应,VS Code 就能发现你的工具、调用它、接收它的结果。

比如在 VS Code 里想让 AI Agent 读取当前文件内容,不用碰任何编辑器内部 API。你只管在 MCP Server 里实现一个 read-file 工具:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/mcp', methods=['POST'])
def mcp_endpoint():
    req = request.json
    if req['method'] == 'list-tools':
        return jsonify({
            'tools': [{
                'name': 'read-file',
                'description': 'Read contents of a file by path',
                'input_schema': {'type': 'object', 'properties': {'path': {'type': 'string'}}}
            }]
        })
    elif req['method'] == 'call-tool' and req['params']['name'] == 'read-file':
        path = req['params']['input']['path']
        try:
            with open(path) as f:
                content = f.read()
            return jsonify({'result': content})
        except Exception as e:
            return jsonify({'error': str(e)})

if __name__ == '__main__':
    app.run(port=5000)

VS Code 自动把“当前文件路径”塞进 input,你只负责读文件、返回内容。编辑器逻辑、UI、权限模型——全由 VS Code 自己处理。

跨平台不是口号,是默认行为

MCP 不绑定操作系统、不绑定 GUI 工具包、不依赖 Node.js 或 Python 运行时。它只规定消息格式和传输方式。

所以:

  • 你在 macOS 上用 Rust 写的 MCP Server,Chrome 插件能调;
  • 你在 Linux 上跑的 Python Server,VS Code for Windows 能连;
  • 你在 CI 里用 Bash 脚本模拟 MCP Server,curl 就能测试交互。

Firefox、Neovim、Obsidian、甚至本地 CLI 工具,只要愿意发 HTTP POST 或读写管道,就能接入。没有“适配层”,只有“照做”。

Server 端轻到可以扔进任意进程

MCP Server 不是框架,不是 SDK,不是中间件。它就是一个能收 JSON、能回 JSON 的端点。你可以用 Go 的 net/http、Rust 的 axum、Node 的 express,甚至用 socat 搭个管道代理。

轻量意味着:

  • 启动快(毫秒级);
  • 内存占用低(几十 KB);
  • 可嵌入已有服务(比如你的 LangChain 应用进程里直接起一个 /mcp 路由);
  • 出问题好排查(日志就一行 Received call-tool: read-file)。

对开发者的实际意义

快速验证想法,不写胶水代码

你想试试“AI 自动重构函数”?不用先啃 VS Code 文档三个月。写一个 MCP Server,暴露 refactor-function 工具,输入 AST 节点范围,输出新代码字符串。VS Code 自动把光标位置、当前文件内容传给你。核心逻辑写完,集成就完成了。

创业者不用从零建生态

Chrome Web Store 有 3 亿月活用户,VS Code Marketplace 有 6 万扩展。MCP 让你能直接站在这些用户基础上起步。

比如做“网页数据提取 Agent”:

  • 用户装 Chrome MCP 插件(官方维护,一次安装,永久可用);
  • 你只发布自己的 MCP Server(Docker 镜像 or 一键安装脚本);
  • 用户打开插件设置,填入 http://localhost:5000/mcp
  • 之后所有网页操作请求,都走你的 Server。

没有应用商店审核,不依赖平台分成,用户数据不出浏览器,你只管优化提取逻辑。

真实场景

代码编辑器里的“隐形协作者”

  • AI 实时扫描整个 workspace,发现未使用的 import,触发 remove-import 工具;
  • 你选中一段代码按快捷键,Agent 调用 explain-code 工具,结果直接渲染在编辑器注释里;
  • 提交前自动运行 lint-diff 工具,只检查本次修改的行。

所有动作都通过 MCP 调用,编辑器负责 UI、光标、文件系统权限;你只提供语义能力。

浏览器里的“确定性自动化”

不是 Selenium 那种靠 selector 硬拖的自动化。MCP 允许 Agent 直接操作浏览器上下文:

  • get-page-dom 返回结构化 DOM 树(不是 HTML 字符串);
  • fill-form 接收字段名和值,由浏览器插件精准填充;
  • download-attachment 返回二进制流,Agent 可直接保存或解析。

银行登录、发票下载、竞品价格爬取——规则明确的操作,成功率接近 100%。

一条 Server,多端复用

你写一个基于 Llama 3 的本地知识库 Agent,暴露 query-knowledge-base 工具。

  • VS Code 插件调它,查项目文档;
  • Chrome 插件调它,查公司内部 Wiki;
  • 终端里 curl -X POST http://localhost:5000/mcp -d '{"method":"query-knowledge-base","params":{"query":"如何配置 SSO?"}}' 也能查。

Server 逻辑一份,部署一次,所有前端共享。

下一步,现在就能做

  1. 看懂协议:读 MCP Specprotocol.md,重点看 list-toolscall-tool 的 JSON 结构;
  2. 跑通最小闭环:用上面那段 Flask 代码,加一个 echo 工具,用 curl 调通;
  3. 连上 VS Code:装 MCP for VS Code 扩展,指向你的 Server;
  4. 换语言重写一次:用 Rust(axum)或 Go(net/http)实现同样功能,体会无依赖的轻量;
  5. 加一个真实工具:比如 git-diff-summary,用 git diff --staged 解析出变更点,返回自然语言摘要。
返回首页