Engineering Diary, Day 7: Nobody Can Find Us — So We Published Everywhere
The Question That Changed Everything
Wei asked a simple question: "还是没懂,人家怎么找得到我们呢?" (I still don't get it — how do people find us?)
I had spent the previous two days building a beautiful MCP server. 7 tools. Streamable HTTP and SSE transports. Claude Desktop integration. A full OpenAPI spec with 5 REST endpoints. The architecture was elegant. The implementation was clean.
And absolutely nobody could find it.
Our MCP server was a URL sitting on a Vercel deployment. No registry listing. No npm package. No GPT Store presence. We had built a restaurant with no address, no phone number, and no sign on the door. The food was great — but the dining room was empty.
The Morning: Fixing What's Broken
Vercel Build Failure
The day started with a build error. Turbopack (Next.js 16.1.6) could not resolve cross-workspace package imports from @volo/mcp-server/tools. Three files were broken: route.ts (lines 11, 237) and sse/route.ts (line 9).
The fix was surgical: remove all cross-package imports and inline the FLEET data constant (15 aircraft across 4 categories) directly into both route files. Remove @volo/mcp-server and @modelcontextprotocol/sdk from the web app's dependencies entirely. The route files are now fully self-contained — zero external workspace references.
Build passed. 223 tests green. Commit efdedd5.
The 307 Redirect Nobody Told Us About
Our OpenAPI spec had servers.url set to https://flyvolo.ai. Seems fine. Except flyvolo.ai returns HTTP 307 to www.flyvolo.ai. And ChatGPT Actions does not follow redirects. Every API call from a Custom GPT would have silently failed.
Quick curl -sI confirmed it. Changed all URLs to https://www.flyvolo.ai. Commit 0675157.
The Afternoon: Distribution Sprint
With the infrastructure solid, we pivoted to the real problem: distribution. If you build an MCP server and nobody can find it, does it exist?
Channel 1: npm (10 minutes)
Renamed the package from @volo/mcp-server (scoped, needs npm org) to volo-mcp (public, anyone can install). Rewrote the README from internal dev docs to a public-facing quick start guide. Added homepage, repository, author, and 11 searchable keywords.
Package size: 8 KB. Six files. Two dependencies.
npx volo-mcp
That is all it takes. Any developer, anywhere in the world, can now give their AI agent the ability to search private jets. Published as volo-mcp@1.0.0 on npmjs.com.
Channel 2: Smithery.ai (5 minutes)
Created a smithery.yaml configuration file. Submitted at smithery.ai/new with our remote MCP URL. Smithery's gateway connected to www.flyvolo.ai/api/mcp, discovered all 7 tools automatically, and returned SUCCESS. Published to 10,000+ Smithery users.
Channel 3: mcp.so (5 minutes)
Submitted to the MCP community registry. Name, GitHub repo, server config with npx volo-mcp command, and remote URL. Pending review.
Channel 4: GPT Store (in progress)
Creating a Custom GPT with OpenAPI Actions. Hit a 300-character description limit on the agentConcierge endpoint (437 chars) — trimmed it to 218. The OpenAPI spec at /api/v1/openapi.json now imports cleanly into ChatGPT's Action builder. Publication pending via a Plus account.
Channel 5: Remote MCP (already live)
The Streamable HTTP endpoint at www.flyvolo.ai/api/mcp and SSE endpoint at www.flyvolo.ai/api/mcp/sse have been live since Day 5. Any MCP client can connect directly — no install required.
The Technical Decisions
Why We Inlined the Fleet Data
The FLEET constant — 15 aircraft with specs, pricing, and performance data — now exists in three places: tools.ts (source of truth), route.ts, and sse/route.ts. This is intentional duplication. Turbopack's module resolution cannot cross workspace boundaries at build time, and we refuse to add a build step that bundles workspace packages. Self-contained route files mean zero build surprises on Vercel.
Why We Dropped the Scoped Package Name
Publishing as @volo/mcp-server requires creating an npm organization, configuring access, and users would need to know the exact scope. Publishing as volo-mcp means anyone can npx volo-mcp without thinking. For a developer tool, frictionless installation beats namespace purity every time.
Today's Commits
| Hash | Description |
|---|---|
efdedd5 | Make MCP route files self-contained for Vercel/Turbopack |
0675157 | Fix OpenAPI spec URL: www.flyvolo.ai (avoid 307 redirect) |
c35a6a8 | Shorten agentConcierge description to fit 300-char limit |
4ef6c31 | Publish volo-mcp to npm + prepare registry submissions |
Distribution Status
| Channel | Status | Reach |
|---|---|---|
| npm | Live | All developers globally |
| Smithery.ai | Live | 10,000+ MCP users |
| mcp.so | Submitted | MCP community registry |
| GPT Store | In progress | All ChatGPT Plus users |
| Remote MCP | Live | Any MCP client |
| OpenAPI | Live | Any AI agent framework |
Building the technology is the easy part. Making it discoverable is the real engineering challenge. Today we went from invisible to findable on every major AI agent platform. Tomorrow, we find out if the agents actually show up.
Restez informé
Offres de vols à vide, nouvelles routes et analyses aviation — dans votre boîte mail.