V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aiyanbo
V2EX  ›  Apple

让 MCP 变得简单:每个人都应该可以一键实现服务集成

  •  
  •   aiyanbo · 158 天前 · 2116 次点击
    这是一个创建于 158 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Image

    原文地址

    MCP 的出现是一件让人兴奋的事情,它标志着大家可以在同一个标准下开发和集成自己需要的服务。目前它的发展非常迅速,在 OpenTools 上一共收录了 43 个常用服务,在 Smithery 则是达到了惊人的 1946 个。

    它们都提供了安装 MCP 服务的命令行,不过对于普通用户来说,想要在 Claude Desktop 上使用 MCP 服务可不那么简单。 因为:

    1. OpenTools 和 Smithery 提供的是 npx 命令,要使用它们需要先安装 npx (NodeJS 编程语言的一个包启动工具)。
    2. 遇到使用 Python 语言编写的 MCP 服务,还需要会设置 Python 运行环境,有的 MCP 服务需要 Python 3.11 以上,在默认的操作系统中可能并不提供。

    是的,当你去尝试安装 NPX 和 Python 环境时,可能你会在文档里面发现可能还需要再安装一个 uv 。好吧,这听起来就不是一件简单的事情。如果我们不使用 OpenTools 和 Smithery ,我们还需要能找到 claude_desktop_config.json 文件把 MCP 服务配置上去。然后还需要设置环境变量和参数,才能让 MCP 服务运行起来。

    所以我们有办法让 MCP 服务的安装和设置更简单吗?答案是肯定的。

    要做到简单,我们需要做到以下几点:

    1. MCP 的运行环境(例如:NodeJS, Python )等是自动安装的,我们不应该在这里花费时间。
    2. MCP 的运行环境需要是隔离的,因为这样可以避免它们相互影响,上面我们就提到有点 MCP 服务需要 Python 3.10, 有的需要 Python 3.11 。
    3. 应该有一个 GUI, 这样我们选择需要的 MCP 服务,然后鼠标点击一下就可以安装。
    4. 然后我们可以在 GUI 上设置参数和环境变量。
    5. 最后,我们只需通过点击,就可以让安装设置好的 MCP 服务连接到任意客户端上,例如:Claude Desktop

    接下来,我们探讨一下在技术上可以怎样实现这几点。

    阶段 1:安装运行环境

    NPX 命令包含在 NodJS 的安装包中,因此我们只需要根据平台和 CPU 架构下载 NodeJS 安装包,并且解压即可。例如:

    wget https://nodejs.org/dist/v22.14.0/node-v22.14.0-darwin-arm64.tar.gz
    
    tar -xzvf node-v22.14.0-darwin-arm64.tar.gz
    

    同理,我们可以得到一个 Python 的运行环境。这些运行环境我们需要单独管理,让它们隔离起来,以免对系统的其他部分产生影响。

    PS: 在 macOS 中有一个默认的 Python 程序,不过它的版本较低,因此我们还是需要安装它。

    阶段 2:整理 MCP 服务数据

    MCP 官方的 Github ( https://github.com/modelcontextprotocol/servers/tree/main/src ) 上 发布了一些服务,我们可以从服务的安装文档中提取运行时设置的参数,例如 brave-search 需要 BRAVE_API_KEY ,我们需要收集整理这些数据,以便能在 GUI 上设置 MCP 服务运行必须的参数。我们可以转换成这样的 JSON-SCHEMA 数据结构:

    {
      "config": {
        "apiKey": {
          "name": "Brave api key",
          "type": string
        },
        "required": ["apiKey"]
      }
    }
    

    这一过程,我们需要程序化它,不然那么多的 MCP 服务通过人工的方式整理需要花大量的时间,不过我们可以在验证阶段只关注少量的 MCP 服务。

    PS: Claude Desktop 的配置文件中有 args 和 env 之分,我认为我们不应该关心 MCP 服务如何使用 args 和 env, 我们只需要关心 MCP 服务需要什么参数。

    阶段 3:可视化安装程序

    这一个过程是非常复杂的,我们需要开发一个应用程序实现 MCP 服务的一键安装和设置。例如这样:

    Image

    用户可以选择自己需要的 MCP 服务,然后一键安装,通过可视化的程序配置。好在目前有许多的桌面应用程序开发框架可以简化这一过程。例如:Electron 和 Tauri 。

    阶段 4:管理与连接 MCP 服务

    Claude Desktop 需要通过修改 claude_desktop_config.json 文件来连接 MCP 服务,每一次安装 MCP 服务,我们都需要修改一次,那有没有可能我们只修改一次 claude_desktop_config.json 文件来实现动态连接 MCP 服务呢?答案是肯定的,为此我们可以借鉴 Nginx 的设计,实现一个 MCP 服务的动态代理,设计如下:

    这样,我们不仅省去了每次安装 MCP 服务都需要去修改 claude_desktop_config.json 文件的操作,我们还能记录和审计 AI 模型都访问了哪些 MCP 服务,做了什么操作,访问了哪些资源等等。

    我们开源了 mcp-proxy 的实现,源代码在这里 https://github.com/getmcp/mcp-proxy

    结论

    我对 MCP 的发展感到非常兴奋,我相信未来 MCP 服务的使用门槛会越来越低,会变得像在手机里安装一个应用那样简单。这是我的一个尝试,希望能对 MCP 服务的安装有所帮助。希望大家能喜欢 GetMCP ( https://getmcp.cc)。

    2 条回复    2025-04-17 16:14:15 +08:00
    huluhulu
        1
    huluhulu  
       158 天前
    哈哈,我也正在做类似的产品
    aiyanbo
        2
    aiyanbo  
    OP
       158 天前
    @huluhulu 祝顺利
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:51 · PVG 02:51 · LAX 11:51 · JFK 14:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.