Repository navigation
fix(build): bundle patched fastmcp for npm installs; send top-level tool titles - #463
Conversation
Codex hides MCP tools behind tool_search and ranks them with BM25 over the top-level Tool.title, description and server instructions. fastmcp only sent annotations.title, so our titles never reached that index. The fastmcp patch now copies annotations.title to the top-level title, and the search, scrape, map and crawl titles use the words agents search with. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 5 files
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
… coverage Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Auto-approved: Sends top-level MCP Tool.title in tools/list via a focused fastmcp patch, retitles four tools to match agent search terms, and adds smoke-test assertions. The change is bounded, additive, and improves Codex tool discoverability without expanding tool exposure.
Re-trigger cubic
npm does not apply pnpm patches, so the published package loaded an unpatched fastmcp from the registry: no top-level tool titles, and no canList/beforeValidate hooks. tsup now inlines fastmcp and keeps its dependencies external; the packages it imports are direct dependencies so they resolve under pnpm's non-hoisted layout (hosted Docker image) as well as npm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 5 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Fix all with cubic | Re-trigger cubic
Dismissed because Cubic found issues in a newer review.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Requires human review: Patches fastmcp to send top-level tool titles for Codex search, rewrites tool titles, and bundles fastmcp so npm/npx installs get the patch. Needs human sign-off on the tools/list response shape change, new display titles, and the bundling/dependency expansion.
Re-trigger cubic
Titles are display names (MCP spec), and the AX run showed Codex never called tool_search, so the keyword rewording changed nothing. The top-level title still mirrors annotations.title, and fastmcp stays bundled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
0 issues found across 2 files (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Auto-approved: Bundles the pnpm-patched fastmcp for npm installs, adds top-level Tool.title from annotations.title, and adds direct dependencies for bundled imports, all covered by new tests.
Re-trigger cubic
…-titles # Conflicts: # CHANGELOG.md
…-titles # Conflicts: # CHANGELOG.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
0 issues found across 2 files (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Auto-approved: Bundles the pnpm-patched fastmcp into the npm build so npx installs get the canList/title behavior, adds top-level Tool.title from annotations.title, promotes external imports to direct dependencies, and pins it with build and stdio tests.
Re-trigger cubic
Why
patches/fastmcp@4.3.2.patch, and only pnpm applies it. The published package imported fastmcp from the registry, sonpx firecrawl-mcpusers got nocanListorbeforeValidatehooks. In an AX run, the published 3.26.0 build listed 29 tools, including the deprecatedfirecrawl_extract, where the patched build lists 27. Only the pnpm-built hosted image had the patch.titlewas never sent. fastmcp only emitsannotations.title. MCP 2025-06-18 added a top-levelTool.titledisplay name, and some clients read only that field. Codex's tool search, for example, indexes the top-leveltitleand ignoresannotations.title.Summary
tools/listcopiesannotations.titleinto the top-leveltitle. The title wording is unchanged.tsupinlines fastmcp (noExternal) and keeps fastmcp's own dependencies external.@modelcontextprotocol/sdk,fuse.js,hono,mcp-proxy,undici,uri-templates,xsschema) are now direct dependencies.tests/build-bundle.test.mjsfails if fastmcp goes back to being external, or if the bundle imports a package without a dependency entry. It checks static, side-effect, dynamic andrequireimports.titlematches itsannotations.title.An earlier revision of this PR also rewrote four titles as search keywords. That is reverted: titles are display names, and in the same AX run Codex never called
tool_search, so the wording made no difference.Test Plan
npm test: 157/157 pass. Run withFIRECRAWL_MCP_SEARCH_PORTset, because port 3001 was taken locally.npm pack, thennpm installof the tarball into an empty directory: stdiotools/listserves every tool with a top-leveltitle.pnpm@10.17.1 install --prod --frozen-lockfile --ignore-scriptswithdist: same result.🤖 Generated with Claude Code