Docker系列 MetaMCP为Vibe Coding工具添加远程MCP支持

本博客由AI模型商OhMyGPT强力驱动!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

概览

  • MetaMCP 是一个强大的模型上下文协议(Model Context Protocol)聚合管理平台
  • 适合多设备场景:统一部署 MCP 服务器,避免在每个设备上重复配置
  • 经过 18 个同类方案对比,MetaMCP 在功能全面性和部署简易性方面脱颖而出
  • 支持将多种 MCP 服务器统一管理,提供命名空间和端点功能
  • 包含完整的 Docker 部署方案,预配置 11 种常用 MCP 服务器
  • 集成 PostgreSQL 数据库和 SearXNG 搜索引擎
  • 支持多客户端接入,提供 API Key 认证机制

前言

最近在折腾各种 AI 编程工具的时候,发现了一个很酷的项目——MetaMCP。它可以把各种 MCP(Model Context Protocol)服务器统一管理起来,然后通过一个端点暴露给外部使用。听起来是不是很厉害?哈哈 (ฅ´ω`ฅ)

简单来说,MCP 是一种让 AI 工具访问外部数据源的协议。比如网页搜索、数据库查询、API 调用等等。MetaMCP 的作用就是把这些分散的服务器统一管理,然后通过一个 HTTP 端点暴露给 AI 工具使用。

你可能会问:为什么不直接在每个设备上单独配置 MCP 服务器呢?这是一个好问题!(~ ̄▽ ̄)~

其实主要是因为我们可能会在多个设备上使用 Vibe Coding 工具——比如家里的台式机、公司的笔记本、甚至还有 Mac mini。如果每个设备都要单独配置一遍 MCP 服务器,不仅麻烦,而且配置还容易不一致。想象一下,你在家里电脑上配置了 10 个 MCP 服务器,结果换到公司电脑时又要从头配起……是不是很崩溃?:tired_face: 所以我就想:能不能把所有 MCP 服务器部署到远程服务器上,然后各个设备只需要连接这个统一的端点就行了?

经过深入的调研(我对比了 18 个不同的 MCP Gateway 方案,包括 IBM ContextForge、Docker MCP Gateway、MCPJungle 等),最终选择了 MetaMCP,原因很简单:

  • All-in-One 设计:聚合器+编排器+中间件+网关四位一体,功能最全面
  • 预配置丰富:内置 11 种常用 MCP 服务器,开箱即用
  • 部署简单:单个 Docker 容器就能跑起来,不需要复杂配置
  • Web 管理界面:可视化操作,不用折腾配置文件
  • 多设备友好:通过 API Key 认证,支持多客户端同时接入

今天我就来分享一下如何在自己的服务器上搭建 MetaMCP,以及一些实用的配置技巧。小伙伴准备好了吗?我们开始吧! :satisfied

测试环境

uname -a # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

docker --version # Docker version 20.10.5, build 55c4c88

docker-compose --version # docker-compose version 1.28.6, build 5db8d86f

准备工作

不了解 Docker 的小伙伴请先看:《Docker系列 学习Docker之前》和《Docker系列 配置Docker全局环境》。

确保你的 VPS 已经安装好 Docker 和 docker-compose。如果没有安装,可以参考上面的链接进行安装。

目录管理

# 工作目录请按需修改
path_docker=~/docker

# 创建 MetaMCP 目录
mkdir -p ${path_docker}/metamcp
cd ${path_docker}/metamcp

安装 MetaMCP

配置 docker-compose.yml

不了解 docker-compose 的小伙伴请先看:《Docker系列 了解Docker Compose的配置文件》。

创建新文件 docker-compose.yml 并添加内容如下:

services:
  # ==================== MetaMCP Main Service ====================
  metamcp-app:
    image: ghcr.io/metatool-ai/metamcp:latest
    container_name: metamcp-app
    restart: always
    env_file:
      - .env
    volumes:
      - ./arxiv_data:/app/arxiv_data  # 添加这行
    expose:
      - "12008"
    environment:
      # Use underscores instead of hyphens for better compatibility
      - POSTGRES_HOST=${POSTGRES_HOST:-metamcp-db}
      - POSTGRES_PORT=${POSTGRES_PORT:-5432}
      - POSTGRES_USER=${POSTGRES_USER:-metamcp_user}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB:-metamcp_db}

      # Ensure DATABASE_URL matches the individual variables
      - DATABASE_URL=postgresql://${POSTGRES_USER:-metamcp_user}:${POSTGRES_PASSWORD}@${POSTGRES_HOST:-metamcp-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-metamcp_db}
      - APP_URL=${APP_URL:-http://localhost:12008}
      - NEXT_PUBLIC_APP_URL=${APP_URL:-http://localhost:12008}
      - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
      - TRANSFORM_LOCALHOST_TO_DOCKER_INTERNAL=${TRANSFORM_LOCALHOST_TO_DOCKER_INTERNAL:-true}
      - NODE_ENV=${NODE_ENV:-production}

      # API Keys for MCP Servers
      - CONTEXT7_API_KEY=${CONTEXT7_API_KEY}
      - TAVILY_API_KEY=${TAVILY_API_KEY}
      - SEARXNG_URL=${SEARXNG_URL}
      - BRAVE_API_KEY=${BRAVE_API_KEY}
      - PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY}
      - SERPER_API_KEY=${SERPER_API_KEY}
      - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
      - BING_API_KEY=${BING_API_KEY}
      - EXA_API_KEY=${EXA_API_KEY}
      - SILICONFLOW_API_KEY=${SILICONFLOW_API_KEY}
    networks:
      - default

  # ==================== PostgreSQL Database ====================
  metamcp-db:
    image: postgres:16-alpine
    container_name: metamcp-db
    restart: always
    env_file:
      - .env
    environment:
      - POSTGRES_DB=${POSTGRES_DB:-metamcp_db}
      - POSTGRES_USER=${POSTGRES_USER:-metamcp_user}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    ports:
      - "${POSTGRES_EXTERNAL_PORT:-9433}:5432"
    networks:
      - default

  # ================== SearXNG Search Engine ==================
  metamcp-searxng:
    image: searxng/searxng:latest
    container_name: metamcp-searxng
    restart: always
    expose:
      - "8080"
    volumes:
      - ./searxng:/etc/searxng
    env_file:
      - .env
    environment:
      - SEARXNG_BASE_URL=${SEARXNG_URL}
      - SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml
    networks:
      - default

networks:
  default:
    name: npm_default
    external: true 

这里稍微解释一下几个关键配置:

  • env_file: - .env:使用单独的环境变量文件,更安全且易于管理
  • expose: - "12008":在 Docker 内部网络暴露端口,通过 Nginx Proxy Manager 访问
  • healthcheck:数据库健康检查,确保数据库就绪后再启动应用
  • extra_hosts:添加 host.docker.internal 支持,方便容器访问宿主机服务
  • npm_default 网络:与 Nginx Proxy Manager 共享网络,方便反向代理配置

环境变量配置

创建 .env 文件并填入配置:

此隐藏内容仅限VIP查看,仅10元/年,建议升级。VIP可享有哪些特权

获取 API 密钥

MetaMCP 支持多种 API 密钥,至少需要配置一个搜索引擎才能正常使用。以下是常用的几个:

注册账号后获取 API Key,然后填入 .env 文件对应的变量即可。

启动服务

# 上线服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 确认运行状态
docker-compose ps

你应该能看到类似这样的输出:

NAME                STATUS    PORTS
metamcp-app         running   12008/tcp
metamcp-db          running   0.0.0.0:9433->5432/tcp
metamcp-searxng     running   8080/tcp

注意:metamcp-app 的端口显示为 12008/tcp 而非 0.0.0.0:12008->12008/tcp,这是正常的。因为我们使用了 expose 而非 ports,容器端口只在 Docker 内部网络中可访问,通过 Nginx Proxy Manager 进行反向代理。

是不是很简单?哈哈 :yum:

配置 Nginx 反向代理

不了解 Nginx Proxy Manager 的小伙伴请先看:《Docker系列 两大神器NPM和ddns go的安装》。

此隐藏内容仅限VIP查看,仅10元/年,建议升级。VIP可享有哪些特权

Web UI 使用

登录管理界面

访问 https://metamcp.yourdomain.com,你应该能看到 MetaMCP 的登录界面。首次使用需要注册一个管理员账号;具体我就不教大家了。这里我已经为大家准备好这个JSON的内容,到时大家直接导入即可:

此隐藏内容仅限VIP查看,仅10元/年,建议升级。VIP可享有哪些特权

MCP服务正常工作时,无错误的状态占大多数就对了;界面大致是这样的:

image-20260113182655042

创建命名空间

登录后,首先创建一个命名空间。命名空间是一组 MCP 服务器的集合。

  • 点击 “Namespaces” → “Create Namespace”
  • 输入命名空间名称,比如 my-tools。从下图看,可以添加多个组合的; 这个就会比较方便。 我一般是搜索用得多,所以专门有一个search的集合:

image-20260113183225192

  • 选择要包含的 MCP 服务器; 配置中间件(可选); 保存

image-20260113183317725

创建端点

端点是外部访问 MetaMCP 的入口。

  • 点击 “Endpoints” → “Create Endpoint”
  • 输入端点名称,比如 default
  • 选择命名空间
  • 选择传输协议(推荐 SSE)
  • 配置认证方式(API Key),保存

image-20260113183920346

正常工作时大致是这样的:

image-20260113183759834

支持的协议很多; 不过,我感觉大部分Vibe Coding CLI对Streamable HTTP的支持似乎好一些。

生成 API Key

端点创建后,需要生成 API Key 才能被外部客户端使用。

  • 进入端点详情页
  • 点击 “API Keys” → “Generate API Key”
  • 复制生成的 API Key

image-20260113184132947

这个 API Key 要妥善保管,不要泄露给别人!

本地cc-switch配置

推荐使用 cc-switch 桌面应用来统一管理 MCP 服务器,省去手动编辑配置文件的麻烦。

cc-switch 是一个跨平台桌面应用,专为 Claude Code、Codex、Gemini CLI 设计的配置管理利器。它的核心功能是方便地管理多个不同的 API 中转站配置,一键切换不同的 Provider。同时,它的 MCP 管理功能也非常强大,可以统一管理各种 MCP 服务器,自动同步到不同的 AI 客户端。

cc-switch 目前维护非常活跃,社区也很流行。易用性极强,图形化界面让配置管理变得直观简单,是一个不容忽视的工具。如果你经常需要在不同的 API 服务商之间切换,或者管理多个 MCP 服务器,cc-switch 绝对能帮你省下不少时间和精力。

iShot_2026-01-13_18.42.37

下载安装

访问 cc-switch GitHub Releases 下载对应平台的安装包:

  • Windows:下载 .msi 安装器或 .zip 便携版
  • macOS:推荐使用 Homebrew 安装:
    bash
    brew tap farion1231/ccswitch
    brew install --cask cc-switch
  • Linux:下载 .deb.rpm.AppImage 文件

配置 MetaMCP

启动 cc-switch 后,点击右上角的 MCP 按钮进入 MCP 管理面板:

  • 点击 Add Server 添加新的 MCP 服务器
  • 填写配置信息:

image-20260113184532669

配置大致如下:

{
  "args": [
    "mcp-proxy",
    "--transport",
    "streamablehttp",
    "https://xxx.com/metamcp/xxx/mcp"
  ],
  "command": "uvx",
  "env": {
    "API_ACCESS_TOKEN": "sk_mt_xxxx"
  }
}
  • 启用服务器开关
  • 点击 Sync 同步到配置文件

如果你配置MCP服务的时候,正在使用Claude Code或者Codex,那么可能要进入一个全新的会话后,MCP才会生效。

就这么简单!cc-switch 会自动处理所有的配置细节,你不需要手动编辑任何配置文件。是不是很方便?哈哈 (~ ̄▽ ̄)~

测试连接

直接进入Claude Code里面,使用/mcp 查看服务可用性。比如,我这里就展示了两个可用的MetaMCP端点:

iShot_2026-01-13_18.48.16

到这里就安装成功啦!不过,我发现VSCode里的Claude Code插件比较难正常识别这些远程MCP,不知道是不是我哪里设置不对。以后有机会会更新教程。

预配置的 MCP 服务器

按本教程,MetaMCP 预配置了 11 种常用的 MCP 服务器,只要配置好对应的 API Key 就可以直接使用:

服务器名称 类型 用途 API 密钥要求
context7 STDIO 获取最新库文档 CONTEXT7_API_KEY
duckduckgo STDIO 隐私网页搜索
tavily STDIO 高级搜索/爬取 TAVILY_API_KEY(必需)
searxng STDIO 元搜索引擎 SEARXNG_URL
wikipedia STDIO 百科全书查询
arxiv STDIO 学术论文搜索 SILICONFLOW_API_KEY
brave-search STDIO 隐私搜索引擎 BRAVE_API_KEY
perplexity STDIO AI 增强搜索 PERPLEXITY_API_KEY
serper STDIO Google 搜索 SERPER_API_KEY
bing-search STDIO Bing 搜索 BING_API_KEY
exa HTTP AI 优化搜索 EXA_API_KEY

基本上都是和搜索有关的MCP,毕竟我觉得这是最重要的应用场景!除了上述预配置的服务器外,MetaMCP 还提供了一个探索和搜索 MCP 服务器的界面,让你可以了解社区里还有哪些好用的 MCP 工具。这个功能虽然还处于测试阶段,但未来可期!你可以:
– 浏览社区贡献的各种 MCP 服务器
– 查看每个服务器的功能描述和使用方法
– 一键添加感兴趣的服务器到你的配置中

这样就能不断扩展你的 AI 编程工具能力边界啦! :sunglasses:

小结

总体来说,MetaMCP 对于需要统一管理多个 MCP 服务器的场景确实是一个不错的选择——它通过 Web UI 提供标准化配置,让你无需学习额外知识就能轻松管理各种数据源,同时具备命名空间端点、多客户端接入和预配置常用服务器等核心优势。经过本文的介绍,相信小伙伴已经能够成功搭建自己的 MetaMCP 服务器了,是不是感觉 Docker 布署真的很方便?如果你在实际使用中遇到什么问题,欢迎在评论区留言讨论,我们下期再见! :wave:

扩展阅读

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍


感谢OhMyGPT的友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇