feat: upgrade fastmcp dependency to 3.23.0+#1406
Conversation
Upgrades fastmcp dependency to v3.20.1 which includes xsschema 0.40-beta.5, enabling full Zod v4 compatibility. This resolves MCP server connection failures with Cursor IDE's latest update. Changes: - Remove all temporary zod/v3 imports across MCP tools - Update all MCP tool schemas to use standard zod imports - Fix capability negotiation issues with Cursor IDE Fixes #1404
🦋 Changeset detectedLatest commit: d8479ad The changes in this PR will be included in the next version bump. Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
WalkthroughUpgrades the MCP server's fastmcp dependency to v3.23.0 and updates Zod import paths from Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Possibly related PRs
Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (48)
.changeset/petite-news-build.md(1 hunks)apps/mcp/package.json(1 hunks)apps/mcp/src/tools/autopilot/abort.tool.ts(1 hunks)apps/mcp/src/tools/autopilot/commit.tool.ts(1 hunks)apps/mcp/src/tools/autopilot/complete.tool.ts(1 hunks)apps/mcp/src/tools/autopilot/finalize.tool.ts(1 hunks)apps/mcp/src/tools/autopilot/next.tool.ts(1 hunks)apps/mcp/src/tools/autopilot/resume.tool.ts(1 hunks)apps/mcp/src/tools/autopilot/start.tool.ts(1 hunks)apps/mcp/src/tools/autopilot/status.tool.ts(1 hunks)apps/mcp/src/tools/tasks/get-task.tool.ts(1 hunks)apps/mcp/src/tools/tasks/get-tasks.tool.ts(1 hunks)mcp-server/src/tools/add-dependency.js(1 hunks)mcp-server/src/tools/add-subtask.js(1 hunks)mcp-server/src/tools/add-tag.js(1 hunks)mcp-server/src/tools/add-task.js(1 hunks)mcp-server/src/tools/analyze.js(1 hunks)mcp-server/src/tools/clear-subtasks.js(1 hunks)mcp-server/src/tools/complexity-report.js(1 hunks)mcp-server/src/tools/copy-tag.js(1 hunks)mcp-server/src/tools/delete-tag.js(1 hunks)mcp-server/src/tools/expand-all.js(1 hunks)mcp-server/src/tools/expand-task.js(1 hunks)mcp-server/src/tools/fix-dependencies.js(1 hunks)mcp-server/src/tools/generate.js(1 hunks)mcp-server/src/tools/get-operation-status.js(1 hunks)mcp-server/src/tools/initialize-project.js(1 hunks)mcp-server/src/tools/list-tags.js(1 hunks)mcp-server/src/tools/models.js(1 hunks)mcp-server/src/tools/move-task.js(1 hunks)mcp-server/src/tools/next-task.js(1 hunks)mcp-server/src/tools/parse-prd.js(1 hunks)mcp-server/src/tools/remove-dependency.js(1 hunks)mcp-server/src/tools/remove-subtask.js(1 hunks)mcp-server/src/tools/remove-task.js(1 hunks)mcp-server/src/tools/rename-tag.js(1 hunks)mcp-server/src/tools/research.js(1 hunks)mcp-server/src/tools/response-language.js(1 hunks)mcp-server/src/tools/rules.js(1 hunks)mcp-server/src/tools/scope-down.js(1 hunks)mcp-server/src/tools/scope-up.js(1 hunks)mcp-server/src/tools/set-task-status.js(1 hunks)mcp-server/src/tools/update-subtask.js(1 hunks)mcp-server/src/tools/update-task.js(1 hunks)mcp-server/src/tools/update.js(1 hunks)mcp-server/src/tools/use-tag.js(1 hunks)mcp-server/src/tools/validate-dependencies.js(1 hunks)package.json(1 hunks)
🧰 Additional context used
🧠 Learnings (39)
📓 Common learnings
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1002
File: .changeset/puny-friends-give.md:2-3
Timestamp: 2025-07-17T21:33:57.585Z
Learning: In the eyaltoledano/claude-task-master repository, the MCP server code in mcp-server/src/ is part of the main "task-master-ai" package, not a separate "mcp-server" package. When creating changesets for MCP server changes, use "task-master-ai" as the package name.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1232
File: packages/build-config/package.json:14-15
Timestamp: 2025-09-22T19:45:13.323Z
Learning: In the eyaltoledano/claude-task-master repository, Crunchyman-ralph intentionally omits version fields from internal packages (like tm/build-config) to prevent changesets from releasing new versions for these packages. This is the desired behavior for internal tooling packages that should not be published or versioned independently.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1232
File: packages/tm-core/package.json:50-51
Timestamp: 2025-09-22T19:45:04.337Z
Learning: In the eyaltoledano/claude-task-master project, Crunchyman-ralph intentionally omits version fields from internal/private packages in package.json files to prevent changesets from releasing new versions of these packages while still allowing them to be processed for dependency updates. The changesets warnings about missing versions are acceptable as they don't break the process and achieve the desired behavior of only releasing public packages.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1252
File: packages/ai-sdk-provider-grok-cli/package.json:21-35
Timestamp: 2025-09-26T19:28:42.612Z
Learning: Successfully implemented dependency safety system for Crunchyman-ralph using Python-based validation that integrates with their build process. The system prevents production failures by catching missing external dependencies during build time and provides clear error messages directing developers to add missing dependencies to root package.json. Peer dependencies were removed from internal packages as they're unnecessary with their tsdown bundling setup.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1289
File: mcp-server/server.js:10-12
Timestamp: 2025-10-14T14:30:14.725Z
Learning: In MCP server implementations using stdio transport (like mcp-server/server.js), the TASK_MASTER_MCP environment variable must be forced to 'true' unconditionally to silence console output from tm-core, as any console.log/warn/error would corrupt the JSON-RPC protocol stream. This is not a user preference but a technical requirement for stdio-based MCP servers.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1178
File: packages/tm-core/src/auth/config.ts:5-7
Timestamp: 2025-09-02T21:51:27.921Z
Learning: The user Crunchyman-ralph prefers not to use node: scheme imports (e.g., 'node:os', 'node:path') for Node.js core modules and considers suggestions to change bare imports to node: scheme as too nitpicky.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1069
File: .changeset/fix-tag-complexity-detection.md:0-0
Timestamp: 2025-08-02T15:33:22.656Z
Learning: For changeset files (.changeset/*.md), Crunchyman-ralph prefers to ignore formatting nitpicks about blank lines between frontmatter and descriptions, as he doesn't mind having them and wants to avoid such comments in future reviews.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1132
File: .github/workflows/weekly-metrics-discord.yml:81-93
Timestamp: 2025-08-13T22:10:46.958Z
Learning: Crunchyman-ralph ignores YAML formatting nitpicks about trailing spaces when there's no project-specific YAML formatter configured, preferring to focus on functionality over cosmetic formatting issues.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1132
File: .github/workflows/weekly-metrics-discord.yml:81-93
Timestamp: 2025-08-13T22:10:46.958Z
Learning: Crunchyman-ralph ignores YAML formatting nitpicks about trailing spaces when there's no project-specific YAML formatter configured, preferring to focus on functionality over cosmetic formatting issues.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1105
File: scripts/modules/supported-models.json:242-254
Timestamp: 2025-08-08T11:33:15.297Z
Learning: Preference: In scripts/modules/supported-models.json, the "name" field is optional. For OpenAI entries (e.g., "gpt-5"), Crunchyman-ralph prefers omitting "name" when the id is explicit enough; avoid nitpicks requesting a "name" in such cases.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1200
File: src/ai-providers/custom-sdk/grok-cli/language-model.js:96-100
Timestamp: 2025-09-19T16:06:42.182Z
Learning: The user Crunchyman-ralph prefers to keep environment variable names explicit (like GROK_CLI_API_KEY) rather than supporting multiple aliases, to avoid overlap and ensure clear separation between different CLI implementations.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1178
File: packages/tm-core/src/subpath-exports.test.ts:6-9
Timestamp: 2025-09-03T12:45:30.724Z
Learning: The user Crunchyman-ralph prefers to avoid overly nitpicky or detailed suggestions in code reviews, especially for test coverage of minor import paths. Focus on more substantial issues rather than comprehensive coverage of all possible edge cases.
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1217
File: apps/cli/src/index.ts:16-21
Timestamp: 2025-09-18T16:35:35.147Z
Learning: The user Crunchyman-ralph considers suggestions to export types for better ergonomics (like exporting UpdateInfo type alongside related functions) as nitpicky and prefers not to implement such suggestions.
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Track and report changes made during dependency cleanup
Applied to files:
mcp-server/src/tools/delete-tag.jsmcp-server/src/tools/analyze.jsmcp-server/src/tools/complexity-report.jsmcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/validate-dependencies.js
📚 Learning: 2025-07-17T21:33:57.585Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1002
File: .changeset/puny-friends-give.md:2-3
Timestamp: 2025-07-17T21:33:57.585Z
Learning: In the eyaltoledano/claude-task-master repository, the MCP server code in mcp-server/src/ is part of the main "task-master-ai" package, not a separate "mcp-server" package. When creating changesets for MCP server changes, use "task-master-ai" as the package name.
Applied to files:
apps/mcp/package.jsonmcp-server/src/tools/remove-task.jsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/add-task.jsmcp-server/src/tools/next-task.jsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/set-task-status.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/clear-subtasks.js.changeset/petite-news-build.md
📚 Learning: 2025-09-22T19:45:04.337Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1232
File: packages/tm-core/package.json:50-51
Timestamp: 2025-09-22T19:45:04.337Z
Learning: In the eyaltoledano/claude-task-master project, Crunchyman-ralph intentionally omits version fields from internal/private packages in package.json files to prevent changesets from releasing new versions of these packages while still allowing them to be processed for dependency updates. The changesets warnings about missing versions are acceptable as they don't break the process and achieve the desired behavior of only releasing public packages.
Applied to files:
apps/mcp/package.jsonpackage.json
📚 Learning: 2025-09-26T19:03:33.225Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1252
File: package.json:130-132
Timestamp: 2025-09-26T19:03:33.225Z
Learning: In the eyaltoledano/claude-task-master repository, packages are bundled using tsdown during the build process, which means dependencies imported by the source code (including tm internal packages like tm/ai-sdk-provider-grok-cli) are included in the final bundle and don't need to be available as separate runtime dependencies, so they should remain as devDependencies rather than being moved to dependencies.
Applied to files:
apps/mcp/package.jsonapps/mcp/src/tools/tasks/get-task.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/next-task.jsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/move-task.jsmcp-server/src/tools/add-dependency.js
📚 Learning: 2025-09-26T19:07:10.485Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1252
File: packages/ai-sdk-provider-grok-cli/package.json:21-35
Timestamp: 2025-09-26T19:07:10.485Z
Learning: In the eyaltoledano/claude-task-master repository, the tsdown build configuration uses `noExternal: [/^tm\//]` which means internal tm/ packages are bundled into the final output while external npm dependencies remain external and are resolved from the root package.json dependencies at runtime. This eliminates the need for peer dependencies in internal packages since the root package.json already provides the required external dependencies.
Applied to files:
apps/mcp/package.json
📚 Learning: 2025-09-26T19:05:47.555Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1252
File: packages/ai-sdk-provider-grok-cli/package.json:11-13
Timestamp: 2025-09-26T19:05:47.555Z
Learning: In the eyaltoledano/claude-task-master repository, internal tm/ packages use a specific export pattern where the "exports" field points to TypeScript source files (./src/index.ts) while "main" points to compiled output (./dist/index.js) and "types" points to source files (./src/index.ts). This pattern is used consistently across internal packages like tm/core and tm/ai-sdk-provider-grok-cli because they are consumed directly during build-time bundling with tsdown rather than being published as separate packages.
Applied to files:
apps/mcp/package.jsonapps/mcp/src/tools/tasks/get-task.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/generate.js
📚 Learning: 2025-10-01T19:53:34.261Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1262
File: scripts/modules/task-manager/update-tasks.js:216-233
Timestamp: 2025-10-01T19:53:34.261Z
Learning: For scripts/modules/task-manager/*.js: Use generateObjectService with Zod schemas for structured AI responses rather than generateTextService + manual JSON parsing, as modern AI providers increasingly support the tool use and generateObject paradigm with improved reliability.
Applied to files:
apps/mcp/src/tools/autopilot/resume.tool.tsapps/mcp/src/tools/autopilot/finalize.tool.tsmcp-server/src/tools/scope-up.jsmcp-server/src/tools/expand-all.jsmcp-server/src/tools/parse-prd.jsmcp-server/src/tools/add-subtask.jsmcp-server/src/tools/remove-task.jsapps/mcp/src/tools/autopilot/status.tool.tsapps/mcp/src/tools/tasks/get-task.tool.tsapps/mcp/src/tools/autopilot/complete.tool.tsapps/mcp/src/tools/autopilot/start.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/update-subtask.jsmcp-server/src/tools/add-task.jsmcp-server/src/tools/add-tag.jsmcp-server/src/tools/next-task.jsapps/mcp/src/tools/autopilot/next.tool.tsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/response-language.jsmcp-server/src/tools/analyze.jsmcp-server/src/tools/initialize-project.jsmcp-server/src/tools/set-task-status.jsmcp-server/src/tools/move-task.jsmcp-server/src/tools/complexity-report.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/clear-subtasks.jsmcp-server/src/tools/use-tag.jsmcp-server/src/tools/models.jsmcp-server/src/tools/research.jsmcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/scope-down.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/rules.jsmcp-server/src/tools/generate.jsmcp-server/src/tools/update-task.jsmcp-server/src/tools/validate-dependencies.jsmcp-server/src/tools/get-operation-status.jsmcp-server/src/tools/update.js
📚 Learning: 2025-09-24T15:46:28.029Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1114
File: src/ai-providers/gemini-cli.js:12-12
Timestamp: 2025-09-24T15:46:28.029Z
Learning: When AI SDK provider packages are moved from optional dependencies to required dependencies in package.json, static imports should be used instead of dynamic imports with error handling, as the package is guaranteed to be available at runtime.
Applied to files:
apps/mcp/src/tools/autopilot/resume.tool.tsapps/mcp/src/tools/autopilot/start.tool.tsmcp-server/src/tools/move-task.jsmcp-server/src/tools/models.jsmcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/generate.js
📚 Learning: 2025-09-03T13:46:00.640Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1178
File: packages/tm-core/src/auth/oauth-service.ts:20-20
Timestamp: 2025-09-03T13:46:00.640Z
Learning: For Node.js v22 and later, JSON imports should use `with { type: 'json' }` syntax, not `assert { type: 'json' }`. The `assert` syntax was removed in Node.js v22 in favor of the `with` syntax for import attributes. This applies to the eyaltoledano/claude-task-master codebase which uses Node.js v24.
Applied to files:
apps/mcp/src/tools/autopilot/resume.tool.tsmcp-server/src/tools/add-subtask.jsmcp-server/src/tools/remove-task.jsapps/mcp/src/tools/tasks/get-task.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/update-subtask.jsmcp-server/src/tools/add-task.jsmcp-server/src/tools/next-task.jsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/analyze.jsmcp-server/src/tools/set-task-status.jsmcp-server/src/tools/move-task.jsmcp-server/src/tools/models.jsapps/mcp/src/tools/autopilot/commit.tool.tsmcp-server/src/tools/generate.jsmcp-server/src/tools/update-task.js
📚 Learning: 2025-07-18T05:38:17.352Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 943
File: scripts/modules/task-manager/move-task.js:24-24
Timestamp: 2025-07-18T05:38:17.352Z
Learning: In the Claude Task Master system, core task-manager functions are designed with fallback mechanisms for missing projectRoot parameters using the pattern `const projectRoot = providedProjectRoot || findProjectRoot();`. The readJSON and writeJSON functions have default parameters (projectRoot = null, tag = null) and handle missing parameters gracefully. Adding strict validation to these core functions would break the established flexible architecture pattern.
Applied to files:
apps/mcp/src/tools/autopilot/resume.tool.tsapps/mcp/src/tools/autopilot/finalize.tool.tsmcp-server/src/tools/parse-prd.jsapps/mcp/src/tools/autopilot/status.tool.tsapps/mcp/src/tools/autopilot/complete.tool.tsapps/mcp/src/tools/autopilot/start.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/analyze.jsmcp-server/src/tools/generate.js
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Group imports by module/functionality, import only what's needed (not entire modules), and do not create circular dependencies.
Applied to files:
mcp-server/src/tools/scope-up.jsmcp-server/src/tools/expand-all.jsmcp-server/src/tools/move-task.jsmcp-server/src/tools/remove-dependency.js
📚 Learning: 2025-10-12T11:06:36.374Z
Learnt from: rtmcrc
Repo: eyaltoledano/claude-task-master PR: 933
File: mcp-server/src/tools/agent-llm.js:1-3
Timestamp: 2025-10-12T11:06:36.374Z
Learning: The agent_llm MCP tool in mcp-server/src/tools/agent-llm.js is an exception to the standard MCP tool pattern. It should NOT use handleApiResult because it handles delegated LLM calls rather than direct API calls. Using createErrorResponse for error messages is the correct approach for this tool.
Applied to files:
mcp-server/src/tools/scope-up.jsmcp-server/src/tools/response-language.jsmcp-server/src/tools/initialize-project.jsmcp-server/src/tools/complexity-report.jsmcp-server/src/tools/models.jsmcp-server/src/tools/scope-down.jsmcp-server/src/tools/rules.jsmcp-server/src/tools/get-operation-status.js
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Follow the provided structure for adding subtasks, including required options and detailed error handling.
Applied to files:
mcp-server/src/tools/expand-all.jsmcp-server/src/tools/add-subtask.jsmcp-server/src/tools/update-subtask.jsmcp-server/src/tools/add-task.jsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/clear-subtasks.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/generate.js
📚 Learning: 2025-07-21T02:41:13.453Z
Learnt from: rtmcrc
Repo: eyaltoledano/claude-task-master PR: 933
File: scripts/modules/task-manager/expand-all-tasks.js:0-0
Timestamp: 2025-07-21T02:41:13.453Z
Learning: In scripts/modules/task-manager/expand-all-tasks.js, the success flag should always be true when the expansion process completes successfully, even if individual tasks fail due to LLM errors. Failed tasks are designed to be expanded on subsequent iterations, so individual task failures don't constitute overall operation failure.
Applied to files:
mcp-server/src/tools/expand-all.js
📚 Learning: 2025-11-03T19:33:32.348Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1377
File: src/ai-providers/zai.js:38-80
Timestamp: 2025-11-03T19:33:32.348Z
Learning: Crunchyman-ralph confirms the codebase must use Zod v4 API exclusively (schema._zod.def, value._zod.def) with no exceptions for Zod v3 API (schema._def, value._def). All schema introspection code should use the Zod v4 internal API.
Applied to files:
mcp-server/src/tools/parse-prd.jsmcp-server/src/tools/update-subtask.jsmcp-server/src/tools/use-tag.jsmcp-server/src/tools/models.jsmcp-server/src/tools/research.jsmcp-server/src/tools/rules.jsmcp-server/src/tools/update-task.js
📚 Learning: 2025-07-20T01:35:05.831Z
Learnt from: rtmcrc
Repo: eyaltoledano/claude-task-master PR: 933
File: scripts/modules/task-manager/parse-prd.js:226-226
Timestamp: 2025-07-20T01:35:05.831Z
Learning: The parsePRD function in scripts/modules/task-manager/parse-prd.js has a different parameter structure than other task-manager functions - it uses `options` parameter instead of `context` parameter because it generates tasks from PRD documents rather than operating on existing tasks.
Applied to files:
mcp-server/src/tools/parse-prd.jsmcp-server/src/tools/update.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Use string IDs with dot notation (e.g., "1.2") for subtask references
Applied to files:
mcp-server/src/tools/add-subtask.jsapps/mcp/src/tools/tasks/get-task.tool.tsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/clear-subtasks.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Allow numeric subtask IDs to reference other subtasks within the same parent
Applied to files:
mcp-server/src/tools/add-subtask.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Check for and remove references to non-existent tasks during cleanup
Applied to files:
mcp-server/src/tools/remove-task.jsapps/mcp/src/tools/tasks/get-task.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/next-task.jsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/clear-subtasks.jsmcp-server/src/tools/remove-dependency.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Remove references to non-existent tasks during validation
Applied to files:
mcp-server/src/tools/remove-task.jsapps/mcp/src/tools/tasks/get-task.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/add-task.jsmcp-server/src/tools/next-task.jsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/analyze.jsmcp-server/src/tools/set-task-status.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/clear-subtasks.jsmcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/generate.jsmcp-server/src/tools/validate-dependencies.js
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Follow the provided structure for removing subtasks, including required options, conversion option, and detailed error handling.
Applied to files:
mcp-server/src/tools/remove-task.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/clear-subtasks.js
📚 Learning: 2025-09-26T19:10:32.906Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1252
File: tsconfig.json:22-28
Timestamp: 2025-09-26T19:10:32.906Z
Learning: In the eyaltoledano/claude-task-master repository, all internal tm/ package path mappings in tsconfig.json consistently point to TypeScript source files (e.g., "./packages/*/src/index.ts") rather than built JavaScript. This is intentional architecture because tsdown bundles internal packages directly from source during build time, eliminating the need for separate compilation of internal packages.
Applied to files:
apps/mcp/src/tools/tasks/get-task.tool.tsapps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/next-task.jsmcp-server/src/tools/expand-task.jsmcp-server/src/tools/analyze.jsmcp-server/src/tools/generate.js
📚 Learning: 2025-09-17T19:09:08.882Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1211
File: jest.resolver.cjs:8-15
Timestamp: 2025-09-17T19:09:08.882Z
Learning: In the eyaltoledano/claude-task-master project, the team only uses .ts files and does not plan to use .tsx or .mts extensions, so Jest resolver and build tooling should focus on .js → .ts mapping only.
Applied to files:
apps/mcp/src/tools/tasks/get-tasks.tool.ts
📚 Learning: 2025-10-08T19:57:00.982Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1282
File: packages/tm-core/src/utils/index.ts:16-34
Timestamp: 2025-10-08T19:57:00.982Z
Learning: For the tm-core package in the eyaltoledano/claude-task-master repository, the team prefers a minimal, need-based export strategy in index files rather than exposing all internal utilities. Exports should only be added when functions are actually consumed by other packages in the monorepo.
Applied to files:
apps/mcp/src/tools/tasks/get-tasks.tool.tsmcp-server/src/tools/expand-task.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Support both task and subtask dependencies in cycle detection
Applied to files:
mcp-server/src/tools/next-task.jsmcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/validate-dependencies.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Represent task dependencies as arrays of task IDs
Applied to files:
mcp-server/src/tools/next-task.jsmcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/validate-dependencies.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Validate that referenced tasks exist before adding dependencies
Applied to files:
mcp-server/src/tools/next-task.jsmcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/validate-dependencies.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Do not create circular dependencies between subtasks
Applied to files:
mcp-server/src/tools/next-task.jsmcp-server/src/tools/remove-subtask.jsmcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/clear-subtasks.jsmcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/validate-dependencies.js
📚 Learning: 2025-10-05T10:14:41.302Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1273
File: packages/tm-core/src/repositories/supabase-task-repository.ts:165-167
Timestamp: 2025-10-05T10:14:41.302Z
Learning: In Zod v4, validation errors from ZodError are accessed via the `issues` property, not `errors` (which was used in Zod v3). When handling ZodError in TypeScript, use `error.issues` to access the array of validation issues.
Applied to files:
mcp-server/src/tools/response-language.jsmcp-server/src/tools/initialize-project.jsmcp-server/src/tools/models.jsmcp-server/src/tools/scope-down.js
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Use path.join() to construct file paths, follow established naming conventions (like task_001.txt), check file existence before deletion, and handle file deletion errors gracefully.
Applied to files:
mcp-server/src/tools/analyze.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Format task and dependency IDs consistently when adding dependencies
Applied to files:
mcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/add-dependency.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Prevent tasks from depending on themselves
Applied to files:
mcp-server/src/tools/fix-dependencies.jsmcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/add-dependency.jsmcp-server/src/tools/validate-dependencies.js
📚 Learning: 2025-10-14T14:30:14.725Z
Learnt from: Crunchyman-ralph
Repo: eyaltoledano/claude-task-master PR: 1289
File: mcp-server/server.js:10-12
Timestamp: 2025-10-14T14:30:14.725Z
Learning: In MCP server implementations using stdio transport (like mcp-server/server.js), the TASK_MASTER_MCP environment variable must be forced to 'true' unconditionally to silence console output from tm-core, as any console.log/warn/error would corrupt the JSON-RPC protocol stream. This is not a user preference but a technical requirement for stdio-based MCP servers.
Applied to files:
.changeset/petite-news-build.md
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Check for and remove self-references during cleanup
Applied to files:
mcp-server/src/tools/remove-dependency.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Handle different ID formats consistently when removing dependencies
Applied to files:
mcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/add-dependency.js
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Handle both direct and indirect self-dependencies
Applied to files:
mcp-server/src/tools/remove-dependency.jsmcp-server/src/tools/add-dependency.js
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Regenerate task files after destructive operations, passing all required parameters to generation functions, and provide an option to skip regeneration if needed.
Applied to files:
mcp-server/src/tools/generate.js
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
Repo: eyaltoledano/claude-task-master PR: 0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : For AI-powered commands that benefit from project context, use the ContextGatherer utility for multi-source context extraction, support task IDs, file paths, custom context, and project tree, implement fuzzy search for automatic task discovery, and display detailed token breakdown for transparency.
Applied to files:
mcp-server/src/tools/update.js
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Test
🔇 Additional comments (47)
mcp-server/src/tools/next-task.js (1)
6-6: LGTM! Clean migration to standard Zod v4 import.The import path change from 'zod/v3' to 'zod' is correct and aligns with the repository-wide migration to Zod v4 compatibility. The schema definitions used in this file (z.object, z.string, z.optional) are fully compatible with Zod v4.
mcp-server/src/tools/research.js (1)
6-6: LGTM! Zod v4 migration is compatible with existing schemas.The import path update is correct. All Zod APIs used in this file, including z.enum() for the detailLevel parameter, are fully compatible with Zod v4.
mcp-server/src/tools/remove-subtask.js (1)
6-6: LGTM! Standard Zod v4 migration.The import path change is correct and consistent with the repository-wide Zod v4 migration. The schema definitions remain fully compatible.
mcp-server/src/tools/remove-dependency.js (1)
6-6: LGTM! Import path correctly updated for Zod v4.The change from 'zod/v3' to 'zod' is correct. All schema APIs used in this file are compatible with Zod v4.
mcp-server/src/tools/rename-tag.js (1)
6-6: LGTM! Zod v4 import path migration complete.The import update is correct and the schema definitions are fully compatible with Zod v4.
mcp-server/src/tools/add-subtask.js (1)
6-6: LGTM! Consistent Zod v4 migration.The import path change is correct and all schema APIs remain compatible with Zod v4.
apps/mcp/package.json (1)
27-27: Capability negotiation fix not found in fastmcp 3.23.0 release notes.Verification found that v3.23.0 (released Nov 13, 2025) does not mention any changes to client capability negotiation — its listed change is an OAuth config passthrough fix. The review comment requests verification of capability negotiation fixes in this version, but the release notes do not document such changes.
Manually verify that the upgrade to 3.23.0 addresses your actual MCP server connection failures, as the capability negotiation fix claim cannot be confirmed from the release documentation.
package.json (1)
88-88: LGTM, but review breaking changes before deploying and verify MCP server capability negotiation.fastmcp@3.23.0 is valid (latest version confirmed), and the upgrade from ^3.5.0 aims to resolve the capability negotiation issues with Cursor IDE (#1404). However, this version jump includes significant breaking changes across multiple minor versions:
- OpenAPI endpoints now convert to Tools by default; verify client/tool handling
- Configuration loading and strict mode changes; review your config schema
- OAuth proxy now issues FastMCP JWTs instead of forwarding provider tokens
- CLI output and context/state management changed; update any dependent scripts
- Tool timeouts, JSON-RPC batching, and OpenAPI parser updates
Before deploying, please:
- Review the FastMCP upgrade guide and changelog for items applicable to your setup
- Test MCP server startup and capability advertisement
- Manually verify the MCP server connection with Cursor IDE using the npx invocation pattern to confirm issue #1404 is resolved
- Run smoke tests on tool calls, OpenAPI-generated tools, and long-running tool timeouts
mcp-server/src/tools/expand-all.js (1)
6-6: LGTM! Clean migration to standard Zod import.The import path update from
'zod/v3'to'zod'correctly aligns with the fastmcp v3.23.0 upgrade and full Zod v4 compatibility. The schema definitions use stable Zod features that are backward compatible.mcp-server/src/tools/use-tag.js (1)
6-6: LGTM! Import path correctly updated.mcp-server/src/tools/validate-dependencies.js (1)
6-6: LGTM! Import path correctly updated.mcp-server/src/tools/rules.js (1)
6-6: LGTM! Import path correctly updated.mcp-server/src/tools/copy-tag.js (1)
6-6: LGTM! Import path correctly updated.mcp-server/src/tools/scope-down.js (1)
6-6: LGTM! Import path correctly updated.mcp-server/src/tools/initialize-project.js (1)
1-1: LGTM! Import path correctly updated.mcp-server/src/tools/scope-up.js (1)
6-6: LGTM! Import path correctly updated.mcp-server/src/tools/add-dependency.js (1)
6-6: LGTM - Zod v4 migration complete.The import path update from
zod/v3tozodcorrectly migrates this tool to use native Zod v4. The basic schema construction API (z.object, z.string, z.optional, z.describe) used in this file is fully compatible between versions.mcp-server/src/tools/generate.js (1)
6-6: LGTM - Zod v4 migration complete.The import path update correctly migrates this tool to native Zod v4. All schema definitions remain compatible.
mcp-server/src/tools/fix-dependencies.js (1)
6-6: LGTM - Zod v4 migration complete.The import path update correctly migrates this tool to native Zod v4. All schema definitions remain compatible.
mcp-server/src/tools/clear-subtasks.js (1)
6-6: LGTM - Zod v4 migration complete.The import path update correctly migrates this tool to native Zod v4. The schema construction including
.refine()validation is fully compatible.mcp-server/src/tools/get-operation-status.js (1)
2-2: LGTM - Zod v4 migration complete.The import path update correctly migrates this tool to native Zod v4. All schema definitions remain compatible.
mcp-server/src/tools/remove-task.js (1)
6-6: LGTM - Zod v4 migration complete.The import path update correctly migrates this tool to native Zod v4. All schema definitions remain compatible.
mcp-server/src/tools/models.js (1)
6-6: LGTM - Zod v4 migration complete.The import path update correctly migrates this tool to native Zod v4. All schema definitions remain compatible.
mcp-server/src/tools/set-task-status.js (1)
6-6: LGTM - Zod v4 migration complete.The import path update correctly migrates this tool to native Zod v4. The schema construction including
z.enum()with TASK_STATUS_OPTIONS is fully compatible.mcp-server/src/tools/update-task.js (1)
6-6: LGTM! Zod v4 migration is correct.The import path update from
zod/v3tozodaligns with the PR's objective to adopt Zod v4 compatibility following the fastmcp upgrade to v3.23.0. The basic schema APIs used in this file (z.object(), z.string(), z.boolean()) are backward compatible in Zod v4.mcp-server/src/tools/delete-tag.js (1)
6-6: LGTM! Consistent with Zod v4 migration.The import path update is consistent with the broader migration across MCP tools to adopt Zod v4 compatibility.
mcp-server/src/tools/complexity-report.js (1)
6-6: LGTM! Zod v4 migration applied correctly.The import path update is correct and consistent with the PR's migration strategy.
apps/mcp/src/tools/tasks/get-task.tool.ts (1)
6-6: LGTM! Zod v4 migration is correct.The import path update from
zod/v3tozodis consistent with the broader migration to Zod v4 compatibility across MCP tooling.mcp-server/src/tools/add-tag.js (1)
6-6: LGTM! Zod v4 migration applied correctly.The import path update is consistent with the repository-wide migration to Zod v4.
apps/mcp/src/tools/tasks/get-tasks.tool.ts (1)
6-6: LGTM! Zod v4 migration is correct.The import path update aligns with the PR's objective to remove temporary
zod/v3imports and adopt standard Zod v4 compatibility.mcp-server/src/tools/list-tags.js (1)
6-6: LGTM! Consistent with Zod v4 migration.The import path update is correct and aligns with the repository-wide Zod v4 migration strategy.
mcp-server/src/tools/expand-task.js (1)
6-6: LGTM! Zod v4 migration applied correctly.The import path update from
zod/v3tozodcompletes the migration to Zod v4 compatibility for this MCP tool, consistent with the fastmcp v3.23.0 upgrade.mcp-server/src/tools/update.js (1)
6-6: LGTM! Correct Zod v4 migration.The import path update from
zod/v3tozodcorrectly aligns with the Zod v4 upgrade. The schema definitions using basic types and modifiers are fully compatible with v4.mcp-server/src/tools/analyze.js (1)
6-6: LGTM! Zod v4 import updated correctly.The import path change is correct. The schema definitions, including
.optional().default()patterns and.coerce.number(), are compatible with Zod v4.mcp-server/src/tools/update-subtask.js (1)
6-6: LGTM! Correct Zod v4 import.The import path update is correct and the schema definitions are fully compatible with Zod v4.
mcp-server/src/tools/move-task.js (1)
6-6: LGTM! Zod v4 migration applied correctly.The import path change from
zod/v3tozodis correct. The schema definitions are compatible with Zod v4.apps/mcp/src/tools/autopilot/resume.tool.ts (1)
6-6: LGTM! Correct Zod v4 import update.The import path update is correct and aligns with the broader Zod v4 compatibility upgrade across the MCP server tooling.
mcp-server/src/tools/add-task.js (1)
6-6: LGTM! Zod v4 import migration is correct.The import path change from
zod/v3tozodis correct. The tool schema definitions are fully compatible with Zod v4.apps/mcp/src/tools/autopilot/next.tool.ts (1)
6-6: LGTM! Correct Zod v4 import.The import path update is correct and the schema definition is compatible with Zod v4.
apps/mcp/src/tools/autopilot/abort.tool.ts (1)
6-6: LGTM! Zod v4 import updated correctly.The import path change from
zod/v3tozodis correct and completes the Zod v4 migration for the autopilot tools.mcp-server/src/tools/parse-prd.js (1)
6-6: LGTM! Import path updated correctly.The migration from
zod/v3tozodaligns with the Zod v4 upgrade. The basic schema API used in this file (z.object, z.string, z.boolean) remains fully compatible with Zod v4.apps/mcp/src/tools/autopilot/start.tool.ts (1)
6-6: LGTM! Zod import updated correctly.The switch to the standard
zodimport is correct. All schema definitions in this file use Zod v4-compatible APIs.apps/mcp/src/tools/autopilot/finalize.tool.ts (1)
6-6: LGTM! Import path correctly updated.mcp-server/src/tools/response-language.js (1)
1-1: LGTM! Zod import updated correctly.apps/mcp/src/tools/autopilot/status.tool.ts (1)
6-6: LGTM! Import updated to standard Zod package.apps/mcp/src/tools/autopilot/complete.tool.ts (1)
6-6: LGTM! Import path correctly migrated.apps/mcp/src/tools/autopilot/commit.tool.ts (1)
6-6: LGTM! Zod import successfully migrated.The switch to the standard
zodimport is correct, and the removal of v3 compatibility comments (noted in the AI summary) is appropriate cleanup.
What type of PR is this?
Description
Upgrades fastmcp dependency to v3.20.1 which includes xsschema 0.40-beta.5,
enabling full Zod v4 compatibility. This resolves MCP server connection failures
with Cursor IDE's latest update.
Changes:
Related Issues
Fixes #1404
How to Test This
# Example commands or stepsExpected result:
Contributor Checklist
npm run changesetnpm testnpm run format-check(ornpm run formatto fix)Changelog Entry
For Maintainers
Summary by CodeRabbit