MCP的远程模式和本地模式

在 MCP (Model Context Protocol) 的配置文件中,这两种写法代表了两种截然不同的传输协议(Transport)和运行模式。

mcpserver可以配置url和包 这两个有什么区别 ?

{
  "mcpServers": {
    "guan": {
      "url": "https://guan-open.alibaba-inc.com/session/4347ef0c79ab595e9284f79cf3777558/sse"
    },
    "Figma": {
      "url": "https://mcp.figma.com/mcp"
    },
    "weavefox": {
      "command": "weavefox",
      "args": [
        "server"
      ],
      "disabled": false,
      "autoApprove": []
    },
    "ftraffic-code": {
      "url": "https://mcp.alibaba-inc.com/ftraffic-code/mcp",
      "headers": {}
    },
    "browsermcp": {
      "command": "npx",
      "args": [
        "@browsermcp/mcp@latest"
      ]
    }
  }
}

简单来说:url 是远程模式(SSE),command 是本地模式(Stdio)。

以下是详细的区别对比:


1. url 模式 (SSE Transport) 🔗︎

这种配置用于连接一个已经在运行的 Web 服务器。

  • 工作原理: 客户端(如 Claude Desktop 或浏览器插件)作为 HTTP 客户端,通过 SSE (Server-Sent Events) 协议连接到该 URL。
  • 示例中的 guan 或 Figma:
    • 它们是已经部署在云端或公司内网的 HTTP 服务。
    • 服务端代码已经跑在某台服务器上了。
  • 优点:
    • 无需本地环境: 你的电脑不需要安装 Node.js、Python 或任何依赖包。
    • 跨平台: 只要能连上网,不管是 Windows、Mac 还是浏览器里都能用。
    • 集中管理: 公司可以统一维护一个 Server,所有员工配置同一个 URL 即可。
  • 缺点: 无法直接操作你本地的文件系统(除非该 Server 运行在你的 localhost)。

2. command / args 模式 (Stdio Transport) 🔗︎

这种配置用于启动一个 本地进程。

  • 工作原理: 客户端会直接在你的电脑上创建一个子进程(Subprocess),通过标准输入输出 (stdio/stdin/stdout) 进行数据交换。
  • 示例中的 browsermcp 或 weavefox:
    • command: "npx":意味着客户端会自动运行 npx @browsermcp/mcp@latest。
    • 这会在你本地临时下载并启动这个工具。
  • 优点:
    • 本地权限: 该进程拥有你的本地权限,可以读写你的文件、操作你的浏览器、访问本地数据库。
    • 按需启动: 只有当你打开 AI 客户端时,这个进程才会被启动;关闭客户端时,进程自动销毁。
  • 缺点:
    • 依赖环境: 你的电脑必须装有对应的运行环境(如 Node.js 或 Python)。
    • 消耗本地资源: 每个 Server 都是一个独立的本地进程。

3. 核心区别对照表 🔗︎

特性url (SSE)command (Stdio)
连接对象远程 Web 服务 / 已运行的服务本地可执行文件 / 脚本
启动方式客户端仅连接,不负责启动服务客户端负责启动和杀死该进程
通信协议HTTP / SSEStdin / Stdout (管道)
本地依赖无 (只需网络)需要安装对应的 Runtime (Node/Py)
典型用途SaaS 服务 (Figma)、公司内部 API文件操作、本地脚本、数据库管理
安全性数据通过网络传输 (需 HTTPS)数据在本地进程间传输