-开源MCP广场,私有化部署自己的MCP服务:把 endpoint 改到 TaoToken)
1. 为什么我要把 MyMcp 私有化部署而不是直接用在线 MCP 广场在线 MCP 广场用起来确实方便点几下就能拿到一个 SSE 地址但真把它接到自己的项目里问题会一个接一个冒出来。最典型的就是内网环境公司内网的机器根本访问不了公网 SSE 地址工具调用直接超时其次是自定义能力在线广场只给你现成的工具你想改一个参数、加一段自己的业务逻辑基本没门再就是密钥和数据流向不可控第三方工具的 Key 填在别人的平台上心里总归不踏实。MyMcp 这个开源项目就是冲着这些痛点来的。它是一个可以自己部署的 MCP 广场技术栈是 Vite Vue TS支持多用户、多租户每个人都能定义、发布自己的 MCP 服务发布后会生成独立的 SSE 地址。管理员能看到所有服务普通用户只能看到公开的和他自己的服务。功能上覆盖了 MCP 分类管理、模板新建/复制/删除、服务详情 Markdown 展示、工具测试、代码在线编辑、密钥配置、服务发布、服务启停管理还有大屏统计和租户/用户管理。这篇文章要解决的核心问题不是「怎么把 MyMcp 跑起来」这么简单而是跑起来之后怎么把 MCP 服务的 endpoint 统一改到 TaoToken 的 API 通道上让所有工具调用走同一个 Key、同一个入口。这样你既保留了私有化部署的灵活性又不用为每个第三方工具单独维护一套鉴权。适合谁看手里有内网服务器、想自建 MCP 广场的开发者已经在用 Cherry Studio 或类似客户端、想接自定义 SSE 工具的人以及想把 MCP 调用链路统一收口、方便做统计和排障的团队。下面我会按「部署 → 配置 → 改 endpoint → 验证 → 排错」的顺序走一遍命令和配置都能直接复制。2. 部署 MyMcp 前先把 TaoToken 的 Key 和通道准备好MyMcp 本身是一个平台它不生产模型能力工具调用最终还是要落到某个 API 通道上。如果你希望所有 MCP 工具共享一套鉴权和计费最省事的做法是先把 TaoToken 的 API Key 拿到手后面在 MyMcp 的「秘钥配置」里统一填这个 Key。TaoToken 的定位是一个统一的 API 通道兼容常见的模型调用协议。你可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解它的能力范围然后进控制台创建 Key。具体路径是登录后进入 console 页面找到 API Keys 管理新建一个 Key 并复制保存。这个 Key 后面会填到 MyMcp 的密钥配置里也会用在 endpoint 的鉴权头上。这里有个概念要提前说清楚不然后面改 endpoint 会懵。MCP 服务对外暴露的是 SSE 地址形如http://你的服务器:端口/sse/xxx客户端比如 Cherry Studio连的是这个地址。但 MyMcp 内部真正去调用模型或第三方工具时走的是另一条链路也就是 Base URL Key Model ID 这三件套。我们要改的 endpoint指的是 MyMcp 内部调用上游 API 时用的地址把它指向 TaoToken 的 API 入口而不是改 SSE 地址本身。TaoToken 的 API 入口是 https://taotoken.net/api注意这个地址不带 UTM 参数直接作为 Base URL 使用。Model ID 根据你实际要调用的模型填比如常见的对话模型或代码模型。Key 就是刚才在 console 里创建的那一串。如果你还没决定用哪个模型可以先到模型对话页面试一下确认通道能通、模型能返回再回到 MyMcp 里配置。这一步花不了几分钟但能帮你排除掉「Key 本身有问题」这类低级错误。另外提醒一句MyMcp 的密钥配置是分服务的每个 MCP 服务可以配自己的 Key。如果你想让所有服务共用同一个 TaoToken Key那就在每个服务的密钥配置里填同一个值如果不同服务要用不同模型那就分别填。统一 Key 的好处是排障时只需要看一个地方坏处是权限粒度粗。按你的实际场景选。3. 可复制的 MyMcp 部署与 endpoint 改写配置这一节是全文的核心我会给出完整的部署命令、环境变量配置以及把 endpoint 改到 TaoToken 的具体片段。路径和字段名尽量和项目实际结构保持一致你照着改就行。先拉代码、装依赖、起服务。MyMcp 是 Vite Vue TS 的前端项目通常还会带一个后端服务来处理 SSE 和工具执行。假设你已经把仓库 clone 到本地git clone MyMcp仓库地址 mymcp cd mymcp npm install前端启动npm run dev后端如果是 Node 服务一般在server目录下单独启动cd server npm install npm run start默认情况下前端跑在 5173后端跑在 3000 左右具体看项目 README。部署到内网服务器时建议用 pm2 或 systemd 托管后端进程避免终端一关服务就断。接下来是环境变量。MyMcp 的后端通常通过.env文件读取上游 API 配置。在server目录下新建或修改.env# 上游 API 基础地址指向 TaoToken API_BASE_URLhttps://taotoken.net/api # 统一 Key API_KEYsk-你的TaoTokenKey # 默认模型 DEFAULT_MODEL你的ModelID # 服务监听端口 PORT3000 # SSE 对外地址前缀内网部署时填内网 IP 或域名 SSE_BASE_URLhttp://192.168.1.100:3000如果你用的是 JSON 配置而不是 env结构类似这样放在server/config/default.json{ upstream: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, model: 你的ModelID }, server: { port: 3000, sseBaseUrl: http://192.168.1.100:3000 } }关键点在于baseUrl这一项。MyMcp 默认可能指向某个公共 API 地址你要把它改成https://taotoken.net/api。改完之后所有 MCP 工具在执行时调用的上游通道就统一走 TaoToken 了。然后是每个 MCP 服务的密钥配置。在 MyMcp 的 Web 界面里进入某个服务的详情页找到「秘钥配置」把 TaoToken 的 Key 填进去。如果服务需要调用第三方工具比如搜索、天气第三方工具的 Key 也在这里配。发布服务时如果配了 Key系统会要求你确认这是为了防止漏配导致调用失败。发布之后服务会生成独立的 SSE 地址形如http://192.168.1.100:3000/sse/your-service-id这个地址就是给 Cherry Studio 或其他客户端用的。注意它和API_BASE_URL是两回事SSE 地址是客户端连 MyMcp 的入口API_BASE_URL是 MyMcp 连上游的出口。很多人第一次配会搞混把 SSE 地址填成 TaoToken 的地址结果客户端连不上。如果你用的是 Claude Code 这类工具配置方式类似核心还是 Base URL Key Model ID 三件套。Base URL 填https://taotoken.net/apiKey 填 TaoToken 的 KeyModel ID 填你选的模型。Claude Code 的配置文件通常在~/.claude/settings.json或项目级的.claude/settings.json把这三项写进去即可。具体字段名以你使用的版本为准但逻辑不变。Cline 或 MCP 客户端里配置时如果支持自定义 Base URL同样填 TaoToken 的 API 地址。有些客户端把 MCP 服务和模型 API 分开配注意别填错位置。4. 验证请求从工具测试到 SSE 连通性检查配置改完别急着上生产先做三层验证上游通道通不通、MyMcp 内部调用通不通、客户端连 SSE 通不通。第一层验证 TaoToken 通道。直接用 curl 打一下 APIcurl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: 你的ModelID, messages: [{role: user, content: ping}] }如果返回正常的 JSON里面有choices字段说明 Key 和通道都没问题。如果返回 401说明 Key 错了或没带上如果返回 404检查 Base URL 是不是多写了或少写了路径。第二层在 MyMcp 界面里用「工具测试」。进入某个已发布服务的详情页找到工具列表点测试看能不能正常返回结果。这一步走的是 MyMcp 后端 → TaoToken → 模型/工具的完整链路。如果这里失败但第一层成功那问题多半在 MyMcp 的配置读取上检查.env有没有被正确加载或者服务有没有重启。第三层用 Cherry Studio 连 SSE。在 Cherry Studio 里添加 MCP 服务类型选 SSE地址填http://192.168.1.100:3000/sse/your-service-id。保存后看能不能加载出工具列表。如果加载不出来先在浏览器里直接访问这个 SSE 地址看有没有返回事件流。浏览器能返回但客户端不行多半是客户端配置问题浏览器也不行那就是 MyMcp 后端或网络问题。实测下来最容易出问题的是内网 IP 和端口。SSE 地址里的 IP 必须是客户端能访问到的地址如果你在服务器上配的是127.0.0.1那其他机器就连不上。改成内网实际 IP 或域名。验证通过后你可以在 MyMcp 的统计分析大屏里看到调用记录确认请求确实走了 TaoToken 通道。这一步能帮你确认链路收口成功。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列几个我踩过的坑对照着看能省不少时间。401 Unauthorized。最常见的原因是 Key 没填对或没带上。检查三处.env里的API_KEY、MyMcp 服务密钥配置里的 Key、以及客户端如果直连上游时的 Key。三处只要有一处是旧的或空的就会 401。还有一种情况是 Key 有空格或换行复制的时候带进去了用echo -n检查一下。local proxy failed。这个报错通常出现在客户端配置了本地代理但代理进程没起来或端口不对。如果你在客户端里填了http://127.0.0.1:xxxx作为 Base URL确认那个端口上确实有服务在监听。另外内网环境如果走了公司代理检查HTTP_PROXY/HTTPS_PROXY环境变量有没有干扰。reading choices 报错。这个一般是上游返回的 JSON 结构不符合预期客户端在解析choices字段时失败了。可能原因Model ID 填错了导致上游返回了错误信息而不是正常响应或者 Base URL 路径不对打到了错误的接口。先用第 4 节的 curl 命令确认上游返回结构正常再检查 MyMcp 里的 Model ID 和 Base URL。OAuth 相关报错。如果你用的是 Claude Code 或类似工具它可能默认走 OAuth 流程。当你把 Base URL 改成 TaoToken 的 API 地址后OAuth 流程可能不适用需要在配置里显式指定用 API Key 鉴权而不是 OAuth。检查配置文件里有没有authType之类的字段改成apiKey或对应值。Codex 的auth.json里也是类似逻辑确保填的是 Key 而不是 OAuth token。还有一个容易忽略的点MyMcp 发布服务时如果配了 Key发布后 Key 是加密存储的界面上看不到明文。如果你后来换了 TaoToken 的 Key要重新进密钥配置里更新否则服务还在用旧 Key调用就会失败。排障时建议按「上游 → MyMcp → 客户端」的顺序逐层排查不要一上来就怀疑最外层。大部分问题都出在配置读取和地址填写上。6. 把 MCP 调用链路收口到 TaoToken 之后走到这里你应该已经能在内网跑通 MyMcp并且把 endpoint 统一改到了 TaoToken 的 API 通道。回头看一下这套组合的价值MyMcp 解决了「自定义 MCP 服务 私有化部署 多用户管理」的问题TaoToken 解决了「统一 Key 统一入口 调用统计」的问题。两者结合你既不用把数据交给在线广场也不用为每个工具单独维护鉴权。如果你后面要长期跑编码类 Agent或者想让多个 MCP 服务共享额度可以关注一下 Coding Plan 这类方案它更适合高频、长期的调用场景。如果只是偶尔验证模型能力用模型对话页面就够了。接入过程中遇到配置问题优先查接入文档里面通常有最新的字段说明。最后给一个实用建议把.env和config/default.json里的 Base URL、Key、Model ID 三项做成模板换环境时只改这三项其他不动。这样迁移到新服务器时几分钟就能重新跑起来。MCP 服务的 SSE 地址也建议用域名而不是 IP方便后面换机器时不用改客户端配置。