让 MCP 变得简单:每个人都应该可以一键实现服务集成 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aiyanbo
V2EX    Apple

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

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

    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  
       181 天前
    哈哈,我也正在做类似的产品
    aiyanbo
        2
    aiyanbo  
    OP
       181 天前
    @huluhulu 祝顺利
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1240 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 17:19 PVG 01:19 LAX 10:19 JFK 13:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86