MCP 的出现是一件让人兴奋的事情,它标志着大家可以在同一个标准下开发和集成自己需要的服务。目前它的发展非常迅速,在 OpenTools 上一共收录了 43 个常用服务,在 Smithery 则是达到了惊人的 1946 个。
它们都提供了安装 MCP 服务的命令行,不过对于普通用户来说,想要在 Claude Desktop 上使用 MCP 服务可不那么简单。 因为:
是的,当你去尝试安装 NPX 和 Python 环境时,可能你会在文档里面发现可能还需要再安装一个 uv 。好吧,这听起来就不是一件简单的事情。如果我们不使用 OpenTools 和 Smithery ,我们还需要能找到 claude_desktop_config.json
文件把 MCP 服务配置上去。然后还需要设置环境变量和参数,才能让 MCP 服务运行起来。
所以我们有办法让 MCP 服务的安装和设置更简单吗?答案是肯定的。
要做到简单,我们需要做到以下几点:
接下来,我们探讨一下在技术上可以怎样实现这几点。
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 程序,不过它的版本较低,因此我们还是需要安装它。
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 服务需要什么参数。
这一个过程是非常复杂的,我们需要开发一个应用程序实现 MCP 服务的一键安装和设置。例如这样:
用户可以选择自己需要的 MCP 服务,然后一键安装,通过可视化的程序配置。好在目前有许多的桌面应用程序开发框架可以简化这一过程。例如:Electron 和 Tauri 。
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)。
![]() |
1
huluhulu 158 天前
哈哈,我也正在做类似的产品
|