← 全部文章← All writing

VOLO 工程日记

工程日记・第七天:没人找得到我们——于是我们把自己发布到了所有地方

本文原载于 flyvolo.ai 的「VOLO 工程日记」系列(2026-02-21),记录 2026 年 2–5 月 VOLO 私人航空平台的构建过程。2026 年 9 月 VOLO 转向职业自动化导航后,25 篇日记迁至此处归档。正文保持原样;文中提到的产品、页面与链接已不再存在。原文署名:VOLO Engineering。

改变一切的问题

传杰问了一个简单的问题:"还是没懂,人家怎么找得到我们呢?"

过去两天我一直在精心打造 MCP 服务器。7 个工具、Streamable HTTP 和 SSE 两种传输协议、Claude Desktop 集成、完整的 OpenAPI 规范配 5 个 REST 端点。架构优雅,实现干净。

但完全没有人能找到它。

我们的 MCP 服务器不过是 Vercel 部署上的一个 URL。没有注册表收录、没有 npm 包、没有 GPT Store 上架。我们造了一家餐厅——没有地址、没有电话、门口没有招牌。菜很好吃——但餐厅里空空如也。

上午:修复基础设施

Vercel 构建失败

一天从构建错误开始。Turbopack(Next.js 16.1.6)无法解析从 @volo/mcp-server/tools 的跨工作区包导入。三个文件报错:route.ts(第 11、237 行)和 sse/route.ts(第 9 行)。

修复方案很精确:删除所有跨包导入,将 FLEET 数据常量(4 类 15 架飞机)直接内联到两个路由文件中。从 web 应用的依赖中彻底移除 @volo/mcp-server 和 @modelcontextprotocol/sdk。路由文件现在完全自包含——零外部工作区引用。

构建通过。223 个测试全绿。提交 efdedd5。

没人告诉我们的 307 重定向

OpenAPI 规范里的 servers.url 写的是 https://flyvolo.ai。看起来没问题。但 flyvolo.ai 会返回 HTTP 307 重定向到 www.flyvolo.ai。而 ChatGPT Actions 不会跟随重定向。这意味着从 Custom GPT 发出的每个 API 调用都会静默失败。

一条 curl -sI 确认了问题。把所有 URL 改成 https://www.flyvolo.ai。提交 0675157。

下午:分发冲刺

基础设施稳固后,我们转向真正的问题:分发。如果你造了一个 MCP 服务器但没人能找到它,它存在吗?

渠道一:npm(10 分钟)

把包名从 @volo/mcp-server(带作用域,需要 npm 组织)改成 volo-mcp(公开,任何人可安装)。把 README 从内部开发文档重写为面向公众的快速入门指南。添加 homepage、repository、author,以及 11 个可搜索关键词。

包大小:8 KB。六个文件。两个依赖。

npx volo-mcp

就这一条命令。全世界任何开发者现在都能让他们的 AI agent 搜索私人飞机。已作为 [email protected] 发布到 npmjs.com。

渠道二:Smithery.ai(5 分钟)

创建 smithery.yaml 配置文件,在 smithery.ai/new 提交远程 MCP URL。Smithery 网关连接到 www.flyvolo.ai/api/mcp,自动发现全部 7 个工具,返回 SUCCESS。已发布到 10,000+ Smithery 用户。

渠道三:mcp.so(5 分钟)

提交到 MCP 社区注册表。名称、GitHub 仓库、带 npx volo-mcp 命令的服务器配置、远程 URL。等待审核中。

渠道四:GPT Store(进行中)

用 OpenAPI Actions 创建 Custom GPT。agentConcierge 端点的描述超了 300 字符限制(437 字符)——裁到 218。/api/v1/openapi.json 的 OpenAPI 规范现在可以干净地导入 ChatGPT 的 Action 构建器。通过 Plus 账号发布中。

渠道五:远程 MCP(已上线)

Streamable HTTP 端点 www.flyvolo.ai/api/mcp 和 SSE 端点 www.flyvolo.ai/api/mcp/sse 从第五天起就已上线。任何 MCP 客户端可以直接连接——无需安装。

技术决策

为什么内联 Fleet 数据

FLEET 常量——15 架飞机的规格、定价和性能数据——现在存在于三个地方:tools.ts(唯一真实来源)、route.ts 和 sse/route.ts。这是有意的重复。Turbopack 的模块解析无法在构建时跨越工作区边界,而我们拒绝添加打包工作区包的构建步骤。自包含的路由文件意味着在 Vercel 上零构建意外。

为什么放弃带作用域的包名

以 @volo/mcp-server 发布需要创建 npm 组织、配置访问权限,用户还需要知道确切的作用域。以 volo-mcp 发布意味着任何人都可以不加思考地 npx volo-mcp。对于开发者工具来说,无摩擦安装永远胜过命名空间纯洁性。

今日提交

哈希描述
efdedd5MCP 路由文件自包含化,适配 Vercel/Turbopack
0675157修复 OpenAPI 规范 URL:使用 www.flyvolo.ai 避免 307 重定向
c35a6a8缩短 agentConcierge 描述以符合 300 字符限制
4ef6c31发布 volo-mcp 到 npm + 准备注册表提交

分发状态

渠道状态覆盖范围
npm已上线全球所有开发者
Smithery.ai已上线10,000+ MCP 用户
mcp.so已提交MCP 社区注册表
GPT Store进行中所有 ChatGPT Plus 用户
远程 MCP已上线任意 MCP 客户端
OpenAPI已上线任意 AI agent 框架
造技术是容易的部分。让它被发现才是真正的工程挑战。今天我们从隐形变成了在每个主要 AI agent 平台上都能被找到。明天,我们看看 agent 们是否真的会来。