From b78535ac197db3f9c50fb2a608e06241f5518a93 Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Wed, 9 Apr 2025 20:52:29 +0200 Subject: [PATCH] fix: adjust mcp to always use absolute path in description (#143) --- mcp-server/src/tools/add-dependency.js | 4 +++- mcp-server/src/tools/add-subtask.js | 4 +++- mcp-server/src/tools/add-task.js | 2 +- mcp-server/src/tools/analyze.js | 4 +++- mcp-server/src/tools/clear-subtasks.js | 4 +++- mcp-server/src/tools/expand-all.js | 4 +++- mcp-server/src/tools/expand-task.js | 4 ++-- mcp-server/src/tools/fix-dependencies.js | 2 +- mcp-server/src/tools/generate.js | 2 +- mcp-server/src/tools/get-task.js | 2 +- mcp-server/src/tools/next-task.js | 2 +- mcp-server/src/tools/parse-prd.js | 8 +++----- mcp-server/src/tools/remove-dependency.js | 4 +++- mcp-server/src/tools/remove-subtask.js | 4 +++- mcp-server/src/tools/remove-task.js | 2 +- mcp-server/src/tools/set-task-status.js | 2 +- mcp-server/src/tools/update-subtask.js | 2 +- mcp-server/src/tools/update-task.js | 2 +- mcp-server/src/tools/update.js | 2 +- mcp-server/src/tools/validate-dependencies.js | 2 +- 20 files changed, 37 insertions(+), 25 deletions(-) diff --git a/mcp-server/src/tools/add-dependency.js b/mcp-server/src/tools/add-dependency.js index b9dce478..210ba3d6 100644 --- a/mcp-server/src/tools/add-dependency.js +++ b/mcp-server/src/tools/add-dependency.js @@ -27,7 +27,9 @@ export function registerAddDependencyTool(server) { file: z .string() .optional() - .describe('Path to the tasks file (default: tasks/tasks.json)'), + .describe( + 'Absolute path to the tasks file (default: tasks/tasks.json)' + ), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/add-subtask.js b/mcp-server/src/tools/add-subtask.js index 9197e091..3b19f1cd 100644 --- a/mcp-server/src/tools/add-subtask.js +++ b/mcp-server/src/tools/add-subtask.js @@ -48,7 +48,9 @@ export function registerAddSubtaskTool(server) { file: z .string() .optional() - .describe('Path to the tasks file (default: tasks/tasks.json)'), + .describe( + 'Absolute path to the tasks file (default: tasks/tasks.json)' + ), skipGenerate: z .boolean() .optional() diff --git a/mcp-server/src/tools/add-task.js b/mcp-server/src/tools/add-task.js index e692ee69..1a198bda 100644 --- a/mcp-server/src/tools/add-task.js +++ b/mcp-server/src/tools/add-task.js @@ -31,7 +31,7 @@ export function registerAddTaskTool(server) { .string() .optional() .describe('Task priority (high, medium, low)'), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/analyze.js b/mcp-server/src/tools/analyze.js index ee0f6cef..34dd2a77 100644 --- a/mcp-server/src/tools/analyze.js +++ b/mcp-server/src/tools/analyze.js @@ -42,7 +42,9 @@ export function registerAnalyzeTool(server) { file: z .string() .optional() - .describe('Path to the tasks file (default: tasks/tasks.json)'), + .describe( + 'Absolute path to the tasks file (default: tasks/tasks.json)' + ), research: z .boolean() .optional() diff --git a/mcp-server/src/tools/clear-subtasks.js b/mcp-server/src/tools/clear-subtasks.js index 8bd5e283..7892b1ef 100644 --- a/mcp-server/src/tools/clear-subtasks.js +++ b/mcp-server/src/tools/clear-subtasks.js @@ -29,7 +29,9 @@ export function registerClearSubtasksTool(server) { file: z .string() .optional() - .describe('Path to the tasks file (default: tasks/tasks.json)'), + .describe( + 'Absolute path to the tasks file (default: tasks/tasks.json)' + ), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/expand-all.js b/mcp-server/src/tools/expand-all.js index 0e283c31..da8e79fd 100644 --- a/mcp-server/src/tools/expand-all.js +++ b/mcp-server/src/tools/expand-all.js @@ -43,7 +43,9 @@ export function registerExpandAllTool(server) { file: z .string() .optional() - .describe('Path to the tasks file (default: tasks/tasks.json)'), + .describe( + 'Absolute path to the tasks file (default: tasks/tasks.json)' + ), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/expand-task.js b/mcp-server/src/tools/expand-task.js index 2a09e2b4..9deced39 100644 --- a/mcp-server/src/tools/expand-task.js +++ b/mcp-server/src/tools/expand-task.js @@ -35,7 +35,7 @@ export function registerExpandTaskTool(server) { .string() .optional() .describe('Additional context for subtask generation'), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() @@ -43,7 +43,7 @@ export function registerExpandTaskTool(server) { 'Root directory of the project (default: current working directory)' ) }), - execute: async (args, { log, reportProgress, session }) => { + execute: async (args, { log, session }) => { try { log.info(`Starting expand-task with args: ${JSON.stringify(args)}`); diff --git a/mcp-server/src/tools/fix-dependencies.js b/mcp-server/src/tools/fix-dependencies.js index 326c2dec..3e2aa9e0 100644 --- a/mcp-server/src/tools/fix-dependencies.js +++ b/mcp-server/src/tools/fix-dependencies.js @@ -20,7 +20,7 @@ export function registerFixDependenciesTool(server) { name: 'fix_dependencies', description: 'Fix invalid dependencies in tasks automatically', parameters: z.object({ - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/generate.js b/mcp-server/src/tools/generate.js index e3996090..ff3be041 100644 --- a/mcp-server/src/tools/generate.js +++ b/mcp-server/src/tools/generate.js @@ -21,7 +21,7 @@ export function registerGenerateTool(server) { description: 'Generates individual task files in tasks/ directory based on tasks.json', parameters: z.object({ - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), output: z .string() .optional() diff --git a/mcp-server/src/tools/get-task.js b/mcp-server/src/tools/get-task.js index 24479181..ee4ebc42 100644 --- a/mcp-server/src/tools/get-task.js +++ b/mcp-server/src/tools/get-task.js @@ -39,7 +39,7 @@ export function registerShowTaskTool(server) { description: 'Get detailed information about a specific task', parameters: z.object({ id: z.string().describe('Task ID to get'), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/next-task.js b/mcp-server/src/tools/next-task.js index 40be7972..4900ab53 100644 --- a/mcp-server/src/tools/next-task.js +++ b/mcp-server/src/tools/next-task.js @@ -21,7 +21,7 @@ export function registerNextTaskTool(server) { description: 'Find the next task to work on based on dependencies and status', parameters: z.object({ - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/parse-prd.js b/mcp-server/src/tools/parse-prd.js index cacf2a91..2584288c 100644 --- a/mcp-server/src/tools/parse-prd.js +++ b/mcp-server/src/tools/parse-prd.js @@ -24,9 +24,7 @@ export function registerParsePRDTool(server) { input: z .string() .default('tasks/tasks.json') - .describe( - 'Path to the PRD document file (relative to project root or absolute)' - ), + .describe('Absolute path to the PRD document file'), numTasks: z .string() .optional() @@ -37,7 +35,7 @@ export function registerParsePRDTool(server) { .string() .optional() .describe( - 'Output path for tasks.json file (relative to project root or absolute, default: tasks/tasks.json)' + 'Output absolute path for tasks.json file (default: tasks/tasks.json)' ), force: z .boolean() @@ -47,7 +45,7 @@ export function registerParsePRDTool(server) { .string() .optional() .describe( - 'Root directory of the project (default: automatically detected from session or CWD)' + 'Absolute path to the root directory of the project (default: automatically detected from session or CWD)' ) }), execute: async (args, { log, session }) => { diff --git a/mcp-server/src/tools/remove-dependency.js b/mcp-server/src/tools/remove-dependency.js index 7714df86..2a466717 100644 --- a/mcp-server/src/tools/remove-dependency.js +++ b/mcp-server/src/tools/remove-dependency.js @@ -25,7 +25,9 @@ export function registerRemoveDependencyTool(server) { file: z .string() .optional() - .describe('Path to the tasks file (default: tasks/tasks.json)'), + .describe( + 'Absolute path to the tasks file (default: tasks/tasks.json)' + ), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/remove-subtask.js b/mcp-server/src/tools/remove-subtask.js index b79a0050..2f63dbc0 100644 --- a/mcp-server/src/tools/remove-subtask.js +++ b/mcp-server/src/tools/remove-subtask.js @@ -34,7 +34,9 @@ export function registerRemoveSubtaskTool(server) { file: z .string() .optional() - .describe('Path to the tasks file (default: tasks/tasks.json)'), + .describe( + 'Absolute path to the tasks file (default: tasks/tasks.json)' + ), skipGenerate: z .boolean() .optional() diff --git a/mcp-server/src/tools/remove-task.js b/mcp-server/src/tools/remove-task.js index c07660f6..78b76910 100644 --- a/mcp-server/src/tools/remove-task.js +++ b/mcp-server/src/tools/remove-task.js @@ -23,7 +23,7 @@ export function registerRemoveTaskTool(server) { id: z .string() .describe("ID of the task or subtask to remove (e.g., '5' or '5.2')"), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/set-task-status.js b/mcp-server/src/tools/set-task-status.js index c0a2994b..7498ba5e 100644 --- a/mcp-server/src/tools/set-task-status.js +++ b/mcp-server/src/tools/set-task-status.js @@ -30,7 +30,7 @@ export function registerSetTaskStatusTool(server) { .describe( "New status to set (e.g., 'pending', 'done', 'in-progress', 'review', 'deferred', 'cancelled'." ), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/update-subtask.js b/mcp-server/src/tools/update-subtask.js index aff80376..e09d672e 100644 --- a/mcp-server/src/tools/update-subtask.js +++ b/mcp-server/src/tools/update-subtask.js @@ -31,7 +31,7 @@ export function registerUpdateSubtaskTool(server) { .boolean() .optional() .describe('Use Perplexity AI for research-backed updates'), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/update-task.js b/mcp-server/src/tools/update-task.js index 8a907fa9..a14715fe 100644 --- a/mcp-server/src/tools/update-task.js +++ b/mcp-server/src/tools/update-task.js @@ -31,7 +31,7 @@ export function registerUpdateTaskTool(server) { .boolean() .optional() .describe('Use Perplexity AI for research-backed updates'), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/update.js b/mcp-server/src/tools/update.js index 44c9de6e..3dcb89cf 100644 --- a/mcp-server/src/tools/update.js +++ b/mcp-server/src/tools/update.js @@ -33,7 +33,7 @@ export function registerUpdateTool(server) { .boolean() .optional() .describe('Use Perplexity AI for research-backed updates'), - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional() diff --git a/mcp-server/src/tools/validate-dependencies.js b/mcp-server/src/tools/validate-dependencies.js index 4a22fa68..64ef2341 100644 --- a/mcp-server/src/tools/validate-dependencies.js +++ b/mcp-server/src/tools/validate-dependencies.js @@ -21,7 +21,7 @@ export function registerValidateDependenciesTool(server) { description: 'Check tasks for dependency issues (like circular references or links to non-existent tasks) without making changes.', parameters: z.object({ - file: z.string().optional().describe('Path to the tasks file'), + file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .optional()