@zuens2020/back-agent-mcp 1.0.2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -8,10 +8,11 @@
8
8
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
9
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
10
  import { registerExecuteTaskTool } from './server/tools/execute-task.js';
11
+ import { registerTaskManagementTools } from './task-manager/task-tools.js';
11
12
  import { logger, setLogLevel, LogLevel } from './utils/logger.js';
12
13
  const SERVER_INFO = {
13
14
  name: 'back-agent-mcp',
14
- version: '1.0.0',
15
+ version: '2.0.0',
15
16
  };
16
17
  /**
17
18
  * Start the MCP server
@@ -37,6 +38,8 @@ async function main() {
37
38
  logger.debug('Registering tools...');
38
39
  registerExecuteTaskTool(server);
39
40
  logger.info('Registered tool: execute-task');
41
+ registerTaskManagementTools(server);
42
+ logger.info('Registered task management tools');
40
43
  // Create stdio transport for communication
41
44
  logger.debug('Creating StdioServerTransport...');
42
45
  const transport = new StdioServerTransport();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"execute-task.d.ts","sourceRoot":"","sources":["../../../src/server/tools/execute-task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqE/D"}
1
+ {"version":3,"file":"execute-task.d.ts","sourceRoot":"","sources":["../../../src/server/tools/execute-task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAUjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmF/D"}
@@ -11,7 +11,10 @@ import { createErrorResponse } from '../../utils/error-handler.js';
11
11
  * Input schema for the execute-task tool
12
12
  */
13
13
  export const executeTaskInputSchema = z.object({
14
- task: z.string().describe('The task description to execute with Claude Code'),
14
+ task: z.string().describe('Natural language task description for Claude Code AI. ' +
15
+ 'This is NOT a direct shell command executor. Claude Code is an AI programming assistant ' +
16
+ 'that will interpret your request and use its own tools (Read, Edit, Bash, etc.) to complete the task. ' +
17
+ 'Example: "Create a README file" or "Fix the bug in login.js" or "Run the tests and report results"'),
15
18
  workingDirectory: z.string().optional().describe('The working directory for Claude Code execution'),
16
19
  timeout: z.number().min(1).max(3600).optional().describe('Timeout in seconds (max 3600)'),
17
20
  additionalArgs: z.array(z.string()).optional().describe('Additional CLI arguments for Claude Code'),
@@ -21,9 +24,23 @@ export const executeTaskInputSchema = z.object({
21
24
  */
22
25
  export function registerExecuteTaskTool(server) {
23
26
  server.registerTool('execute-task', {
24
- description: 'Execute a development task using Claude Code CLI. ' +
25
- 'This tool spawns Claude Code as a child process and returns the output. ' +
26
- 'Useful for automated code generation, refactoring, debugging, and other development tasks.',
27
+ description: '**IMPORTANT: This is an AI programming assistant tool, NOT a direct shell command executor.**\n\n' +
28
+ 'This tool spawns Claude Code (an AI coding agent) as a subprocess to complete development tasks. ' +
29
+ 'Claude Code will interpret your natural language request and autonomously decide which actions to take ' +
30
+ '(reading files, editing code, running commands, etc.) to accomplish the goal.\n\n' +
31
+ '**What it does:**\n' +
32
+ '- Accepts natural language task descriptions\n' +
33
+ '- Claude Code AI figures out how to complete the task\n' +
34
+ '- Returns the AI\'s response and actions taken\n\n' +
35
+ '**What it does NOT do:**\n' +
36
+ '- NOT a direct shell/bash command executor\n' +
37
+ '- Does NOT return raw stdout/stderr from commands\n' +
38
+ '- For direct command execution, use the Bash tool instead\n\n' +
39
+ '**Example usage:**\n' +
40
+ '- "Create a REST API endpoint for user authentication"\n' +
41
+ '- "Debug why the tests are failing"\n' +
42
+ '- "Refactor the user module to use TypeScript"\n\n' +
43
+ 'The returned output is Claude Code\'s conversational response, not raw command output.',
27
44
  inputSchema: executeTaskInputSchema,
28
45
  }, async (input) => {
29
46
  // Validate input
@@ -1 +1 @@
1
- {"version":3,"file":"execute-task.js","sourceRoot":"","sources":["../../../src/server/tools/execute-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute-task.js","sourceRoot":"","sources":["../../../src/server/tools/execute-task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Task Manager for Back-Agent MCP Server
3
+ *
4
+ * Manages concurrent task execution with status tracking.
5
+ */
6
+ import { ExecutionResult } from '../claude/executor.js';
7
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
8
+ export interface Task {
9
+ id: string;
10
+ task: string;
11
+ workingDirectory?: string;
12
+ timeout: number;
13
+ additionalArgs?: string[];
14
+ status: TaskStatus;
15
+ createdAt: Date;
16
+ startedAt?: Date;
17
+ completedAt?: Date;
18
+ result?: ExecutionResult;
19
+ error?: string;
20
+ }
21
+ export interface CreateTaskOptions {
22
+ task: string;
23
+ workingDirectory?: string;
24
+ timeout?: number;
25
+ additionalArgs?: string[];
26
+ }
27
+ export interface TaskInfo {
28
+ id: string;
29
+ task: string;
30
+ workingDirectory?: string;
31
+ status: TaskStatus;
32
+ createdAt: string;
33
+ startedAt?: string;
34
+ completedAt?: string;
35
+ error?: string;
36
+ success?: boolean;
37
+ exitCode?: number | null;
38
+ }
39
+ /**
40
+ * Manages concurrent task execution
41
+ */
42
+ export declare class TaskManager {
43
+ private tasks;
44
+ private maxConcurrent;
45
+ constructor(maxConcurrent?: number);
46
+ /**
47
+ * Create a new task and start executing it
48
+ */
49
+ createTask(options: CreateTaskOptions): Promise<string>;
50
+ /**
51
+ * Execute a task (runs asynchronously)
52
+ */
53
+ private executeTask;
54
+ /**
55
+ * Get task status and info
56
+ */
57
+ getTask(id: string): TaskInfo | null;
58
+ /**
59
+ * Get task result with full output
60
+ */
61
+ getTaskResult(id: string): {
62
+ taskInfo: TaskInfo | null;
63
+ stdout?: string;
64
+ stderr?: string;
65
+ } | null;
66
+ /**
67
+ * List all tasks
68
+ */
69
+ listTasks(): TaskInfo[];
70
+ /**
71
+ * Cancel a task
72
+ */
73
+ cancelTask(id: string): boolean;
74
+ /**
75
+ * Delete a task from the task list
76
+ */
77
+ deleteTask(id: string): boolean;
78
+ /**
79
+ * Clean up old completed tasks
80
+ */
81
+ cleanup(olderThanMs?: number): number;
82
+ /**
83
+ * Get count of currently running tasks
84
+ */
85
+ private getRunningCount;
86
+ /**
87
+ * Get task statistics
88
+ */
89
+ getStats(): {
90
+ total: number;
91
+ pending: number;
92
+ running: number;
93
+ completed: number;
94
+ failed: number;
95
+ cancelled: number;
96
+ };
97
+ /**
98
+ * Sleep helper
99
+ */
100
+ private sleep;
101
+ }
102
+ export declare const taskManager: TaskManager;
103
+ //# sourceMappingURL=task-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/task-manager/task-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAqB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG3E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEtF,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,GAAE,MAAU;IAIrC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB7D;;OAEG;YACW,WAAW;IAmDzB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAoBpC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG;QACzB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI;IAaR;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE;IAevB;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB/B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAK/B;;OAEG;IACH,OAAO,CAAC,WAAW,GAAE,MAAgB,GAAG,MAAM;IAsB9C;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB;IAiBD;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAGD,eAAO,MAAM,WAAW,aAAqB,CAAC"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Task Manager for Back-Agent MCP Server
3
+ *
4
+ * Manages concurrent task execution with status tracking.
5
+ */
6
+ import { v4 as uuidv4 } from 'uuid';
7
+ import { executeClaudeTask } from '../claude/executor.js';
8
+ import { logger } from '../utils/logger.js';
9
+ /**
10
+ * Manages concurrent task execution
11
+ */
12
+ export class TaskManager {
13
+ tasks = new Map();
14
+ maxConcurrent;
15
+ constructor(maxConcurrent = 3) {
16
+ this.maxConcurrent = maxConcurrent;
17
+ }
18
+ /**
19
+ * Create a new task and start executing it
20
+ */
21
+ async createTask(options) {
22
+ const id = uuidv4();
23
+ const task = {
24
+ id,
25
+ task: options.task,
26
+ workingDirectory: options.workingDirectory,
27
+ timeout: options.timeout ?? 300,
28
+ additionalArgs: options.additionalArgs,
29
+ status: 'pending',
30
+ createdAt: new Date(),
31
+ };
32
+ this.tasks.set(id, task);
33
+ logger.info(`Task ${id} created: "${options.task.substring(0, 50)}..."`);
34
+ // Start execution asynchronously
35
+ this.executeTask(id);
36
+ return id;
37
+ }
38
+ /**
39
+ * Execute a task (runs asynchronously)
40
+ */
41
+ async executeTask(id) {
42
+ const task = this.tasks.get(id);
43
+ if (!task) {
44
+ logger.error(`Task ${id} not found`);
45
+ return;
46
+ }
47
+ // Wait for available slot if max concurrent limit reached
48
+ while (this.getRunningCount() >= this.maxConcurrent) {
49
+ await this.sleep(100);
50
+ // Check if task was cancelled while waiting
51
+ if (task.status === 'cancelled') {
52
+ return;
53
+ }
54
+ }
55
+ if (task.status === 'cancelled') {
56
+ return;
57
+ }
58
+ task.status = 'running';
59
+ task.startedAt = new Date();
60
+ logger.info(`Task ${id} started`);
61
+ try {
62
+ const result = await executeClaudeTask({
63
+ task: task.task,
64
+ workingDirectory: task.workingDirectory,
65
+ timeout: task.timeout * 1000,
66
+ additionalArgs: task.additionalArgs,
67
+ });
68
+ task.result = result;
69
+ task.completedAt = new Date();
70
+ if (result.success) {
71
+ task.status = 'completed';
72
+ logger.info(`Task ${id} completed successfully`);
73
+ }
74
+ else {
75
+ task.status = 'failed';
76
+ task.error = result.error ?? 'Task execution failed';
77
+ logger.error(`Task ${id} failed: ${task.error}`);
78
+ }
79
+ }
80
+ catch (error) {
81
+ task.status = 'failed';
82
+ task.error = error instanceof Error ? error.message : String(error);
83
+ task.completedAt = new Date();
84
+ logger.error(`Task ${id} error: ${task.error}`);
85
+ }
86
+ }
87
+ /**
88
+ * Get task status and info
89
+ */
90
+ getTask(id) {
91
+ const task = this.tasks.get(id);
92
+ if (!task) {
93
+ return null;
94
+ }
95
+ return {
96
+ id: task.id,
97
+ task: task.task,
98
+ workingDirectory: task.workingDirectory,
99
+ status: task.status,
100
+ createdAt: task.createdAt.toISOString(),
101
+ startedAt: task.startedAt?.toISOString(),
102
+ completedAt: task.completedAt?.toISOString(),
103
+ error: task.error,
104
+ success: task.result?.success,
105
+ exitCode: task.result?.exitCode,
106
+ };
107
+ }
108
+ /**
109
+ * Get task result with full output
110
+ */
111
+ getTaskResult(id) {
112
+ const task = this.tasks.get(id);
113
+ if (!task) {
114
+ return null;
115
+ }
116
+ return {
117
+ taskInfo: this.getTask(id),
118
+ stdout: task.result?.stdout,
119
+ stderr: task.result?.stderr,
120
+ };
121
+ }
122
+ /**
123
+ * List all tasks
124
+ */
125
+ listTasks() {
126
+ return Array.from(this.tasks.values()).map((task) => ({
127
+ id: task.id,
128
+ task: task.task,
129
+ workingDirectory: task.workingDirectory,
130
+ status: task.status,
131
+ createdAt: task.createdAt.toISOString(),
132
+ startedAt: task.startedAt?.toISOString(),
133
+ completedAt: task.completedAt?.toISOString(),
134
+ error: task.error,
135
+ success: task.result?.success,
136
+ exitCode: task.result?.exitCode,
137
+ }));
138
+ }
139
+ /**
140
+ * Cancel a task
141
+ */
142
+ cancelTask(id) {
143
+ const task = this.tasks.get(id);
144
+ if (!task) {
145
+ return false;
146
+ }
147
+ if (task.status === 'pending' || task.status === 'running') {
148
+ task.status = 'cancelled';
149
+ task.completedAt = new Date();
150
+ logger.info(`Task ${id} cancelled`);
151
+ return true;
152
+ }
153
+ return false;
154
+ }
155
+ /**
156
+ * Delete a task from the task list
157
+ */
158
+ deleteTask(id) {
159
+ logger.info(`Task ${id} deleted`);
160
+ return this.tasks.delete(id);
161
+ }
162
+ /**
163
+ * Clean up old completed tasks
164
+ */
165
+ cleanup(olderThanMs = 3600000) {
166
+ const now = Date.now();
167
+ let cleaned = 0;
168
+ for (const [id, task] of this.tasks.entries()) {
169
+ if ((task.status === 'completed' || task.status === 'failed' || task.status === 'cancelled') &&
170
+ task.completedAt &&
171
+ now - task.completedAt.getTime() > olderThanMs) {
172
+ this.tasks.delete(id);
173
+ cleaned++;
174
+ }
175
+ }
176
+ if (cleaned > 0) {
177
+ logger.info(`Cleaned up ${cleaned} old tasks`);
178
+ }
179
+ return cleaned;
180
+ }
181
+ /**
182
+ * Get count of currently running tasks
183
+ */
184
+ getRunningCount() {
185
+ let count = 0;
186
+ for (const task of this.tasks.values()) {
187
+ if (task.status === 'running') {
188
+ count++;
189
+ }
190
+ }
191
+ return count;
192
+ }
193
+ /**
194
+ * Get task statistics
195
+ */
196
+ getStats() {
197
+ const stats = {
198
+ total: this.tasks.size,
199
+ pending: 0,
200
+ running: 0,
201
+ completed: 0,
202
+ failed: 0,
203
+ cancelled: 0,
204
+ };
205
+ for (const task of this.tasks.values()) {
206
+ stats[task.status]++;
207
+ }
208
+ return stats;
209
+ }
210
+ /**
211
+ * Sleep helper
212
+ */
213
+ sleep(ms) {
214
+ return new Promise((resolve) => setTimeout(resolve, ms));
215
+ }
216
+ }
217
+ // Global task manager instance
218
+ export const taskManager = new TaskManager(3);
219
+ //# sourceMappingURL=task-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/task-manager/task-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Task Management Tools for MCP Server
3
+ *
4
+ * Provides tools for managing concurrent task execution.
5
+ */
6
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ /**
8
+ * Register all task management tools with the MCP server
9
+ */
10
+ export declare function registerTaskManagementTools(server: McpServer): void;
11
+ //# sourceMappingURL=task-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-tools.d.ts","sourceRoot":"","sources":["../../src/task-manager/task-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAUnE"}
@@ -0,0 +1,375 @@
1
+ /**
2
+ * Task Management Tools for MCP Server
3
+ *
4
+ * Provides tools for managing concurrent task execution.
5
+ */
6
+ import { z } from 'zod';
7
+ import { taskManager } from './task-manager.js';
8
+ import { logger } from '../utils/logger.js';
9
+ import { createErrorResponse } from '../utils/error-handler.js';
10
+ /**
11
+ * Register all task management tools with the MCP server
12
+ */
13
+ export function registerTaskManagementTools(server) {
14
+ registerCreateTaskTool(server);
15
+ registerGetTaskStatusTool(server);
16
+ registerGetTaskResultTool(server);
17
+ registerCancelTaskTool(server);
18
+ registerListTasksTool(server);
19
+ registerDeleteTaskTool(server);
20
+ registerGetTaskStatsTool(server);
21
+ logger.info('Registered task management tools');
22
+ }
23
+ /**
24
+ * Create a new task
25
+ */
26
+ const createTaskSchema = z.object({
27
+ task: z.string().describe('Natural language task description for Claude Code AI. ' +
28
+ 'This is NOT a direct shell command executor. Claude Code is an AI programming assistant ' +
29
+ 'that will interpret your request and use its own tools (Read, Edit, Bash, etc.) to complete the task. ' +
30
+ 'Example: "Create a README file" or "Fix the bug in login.js" or "Run the tests and report results"'),
31
+ workingDirectory: z.string().optional().describe('The working directory for execution'),
32
+ timeout: z.number().min(1).max(3600).optional().describe('Timeout in seconds (max 3600)'),
33
+ additionalArgs: z.array(z.string()).optional().describe('Additional CLI arguments'),
34
+ });
35
+ function registerCreateTaskTool(server) {
36
+ server.registerTool('create-task', {
37
+ description: '**IMPORTANT: This creates a background task for an AI programming assistant, NOT a direct shell command executor.**\n\n' +
38
+ 'Spawns Claude Code (an AI coding agent) as a subprocess to complete development tasks in the background. ' +
39
+ 'Claude Code will interpret your natural language request and autonomously decide which actions to take.\n\n' +
40
+ '**What it does:**\n' +
41
+ '- Creates a non-blocking background task\n' +
42
+ '- Returns task ID immediately for tracking\n' +
43
+ '- Up to 3 tasks run concurrently by default\n\n' +
44
+ '**What it does NOT do:**\n' +
45
+ '- NOT a direct shell/bash command executor\n' +
46
+ '- Does NOT return raw stdout/stddr from commands\n\n' +
47
+ 'Returns a task ID. Use get-task-status to check progress and get-task-result to retrieve the output.',
48
+ inputSchema: createTaskSchema,
49
+ }, async (input) => {
50
+ const result = createTaskSchema.safeParse(input);
51
+ if (!result.success) {
52
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
53
+ }
54
+ const { task, workingDirectory, timeout, additionalArgs } = result.data;
55
+ try {
56
+ const taskId = await taskManager.createTask({
57
+ task,
58
+ workingDirectory,
59
+ timeout,
60
+ additionalArgs,
61
+ });
62
+ logger.info(`Created task ${taskId}`);
63
+ return {
64
+ content: [{
65
+ type: 'text',
66
+ text: `## Task Created\n\n` +
67
+ `**Task ID:** ${taskId}\n` +
68
+ `**Task:** ${task.substring(0, 100)}${task.length > 100 ? '...' : ''}\n` +
69
+ `**Status:** pending\n\n` +
70
+ `Use \`get-task-status\` with ID \`${taskId}\` to check progress.\n` +
71
+ `Use \`get-task-result\` with ID \`${taskId}\` to get the result when complete.`,
72
+ }],
73
+ };
74
+ }
75
+ catch (error) {
76
+ logger.error(`Error creating task: ${error}`);
77
+ return createErrorResponse(error);
78
+ }
79
+ });
80
+ }
81
+ /**
82
+ * Get task status
83
+ */
84
+ const getTaskStatusSchema = z.object({
85
+ taskId: z.string().describe('The task ID'),
86
+ });
87
+ function registerGetTaskStatusTool(server) {
88
+ server.registerTool('get-task-status', {
89
+ description: 'Get the current status of a task. Returns status, timestamps, and basic info.',
90
+ inputSchema: getTaskStatusSchema,
91
+ }, async (input) => {
92
+ const result = getTaskStatusSchema.safeParse(input);
93
+ if (!result.success) {
94
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
95
+ }
96
+ const { taskId } = result.data;
97
+ const taskInfo = taskManager.getTask(taskId);
98
+ if (!taskInfo) {
99
+ return {
100
+ content: [{
101
+ type: 'text',
102
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
103
+ }],
104
+ isError: true,
105
+ };
106
+ }
107
+ return {
108
+ content: [{
109
+ type: 'text',
110
+ text: formatTaskInfo(taskInfo),
111
+ }],
112
+ };
113
+ });
114
+ }
115
+ /**
116
+ * Get task result with full output
117
+ */
118
+ function registerGetTaskResultTool(server) {
119
+ server.registerTool('get-task-result', {
120
+ description: 'Get the full result of a task including stdout/stderr output. ' +
121
+ 'Only available for completed tasks.',
122
+ inputSchema: getTaskStatusSchema,
123
+ }, async (input) => {
124
+ const result = getTaskStatusSchema.safeParse(input);
125
+ if (!result.success) {
126
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
127
+ }
128
+ const { taskId } = result.data;
129
+ const taskResult = taskManager.getTaskResult(taskId);
130
+ if (!taskResult) {
131
+ return {
132
+ content: [{
133
+ type: 'text',
134
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
135
+ }],
136
+ isError: true,
137
+ };
138
+ }
139
+ const { taskInfo, stdout, stderr } = taskResult;
140
+ // taskInfo is guaranteed to be non-null here since taskResult was not null
141
+ if (!taskInfo) {
142
+ return {
143
+ content: [{
144
+ type: 'text',
145
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
146
+ }],
147
+ isError: true,
148
+ };
149
+ }
150
+ let output = formatTaskInfo(taskInfo);
151
+ if (taskInfo.status === 'running' || taskInfo.status === 'pending') {
152
+ output += `\n\n**Note:** Task is still ${taskInfo.status}. Result not available yet.`;
153
+ }
154
+ else if (stdout !== undefined || stderr !== undefined) {
155
+ if (stdout) {
156
+ output += `\n\n### Standard Output:\n\`\`\`\n${stdout.trim()}\n\`\`\``;
157
+ }
158
+ if (stderr) {
159
+ output += `\n\n### Standard Error:\n\`\`\`\n${stderr.trim()}\n\`\`\``;
160
+ }
161
+ }
162
+ return {
163
+ content: [{
164
+ type: 'text',
165
+ text: output,
166
+ }],
167
+ };
168
+ });
169
+ }
170
+ /**
171
+ * Cancel a task
172
+ */
173
+ function registerCancelTaskTool(server) {
174
+ server.registerTool('cancel-task', {
175
+ description: 'Cancel a pending or running task.',
176
+ inputSchema: getTaskStatusSchema,
177
+ }, async (input) => {
178
+ const result = getTaskStatusSchema.safeParse(input);
179
+ if (!result.success) {
180
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
181
+ }
182
+ const { taskId } = result.data;
183
+ const cancelled = taskManager.cancelTask(taskId);
184
+ if (!cancelled) {
185
+ const taskInfo = taskManager.getTask(taskId);
186
+ if (!taskInfo) {
187
+ return {
188
+ content: [{
189
+ type: 'text',
190
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
191
+ }],
192
+ isError: true,
193
+ };
194
+ }
195
+ return {
196
+ content: [{
197
+ type: 'text',
198
+ text: `## Cannot Cancel Task\n\nTask with ID \`${taskId}\` is ${taskInfo.status} and cannot be cancelled.`,
199
+ }],
200
+ isError: true,
201
+ };
202
+ }
203
+ return {
204
+ content: [{
205
+ type: 'text',
206
+ text: `## Task Cancelled\n\nTask \`${taskId}\` has been cancelled.`,
207
+ }],
208
+ };
209
+ });
210
+ }
211
+ /**
212
+ * Delete a task from the task list
213
+ */
214
+ function registerDeleteTaskTool(server) {
215
+ server.registerTool('delete-task', {
216
+ description: 'Delete a task from the task list. Use this to clean up old completed tasks.',
217
+ inputSchema: getTaskStatusSchema,
218
+ }, async (input) => {
219
+ const result = getTaskStatusSchema.safeParse(input);
220
+ if (!result.success) {
221
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
222
+ }
223
+ const { taskId } = result.data;
224
+ const deleted = taskManager.deleteTask(taskId);
225
+ if (!deleted) {
226
+ return {
227
+ content: [{
228
+ type: 'text',
229
+ text: `## Task Not Found\n\nTask with ID \`${taskId}\` does not exist.`,
230
+ }],
231
+ isError: true,
232
+ };
233
+ }
234
+ return {
235
+ content: [{
236
+ type: 'text',
237
+ text: `## Task Deleted\n\nTask \`${taskId}\` has been deleted from the task list.`,
238
+ }],
239
+ };
240
+ });
241
+ }
242
+ /**
243
+ * List all tasks
244
+ */
245
+ const listTasksSchema = z.object({
246
+ status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']).optional()
247
+ .describe('Filter by status (optional)'),
248
+ limit: z.number().optional().describe('Maximum number of tasks to return (default: 50)'),
249
+ });
250
+ function registerListTasksTool(server) {
251
+ server.registerTool('list-tasks', {
252
+ description: 'List all tasks, optionally filtered by status.',
253
+ inputSchema: listTasksSchema,
254
+ }, async (input) => {
255
+ const result = listTasksSchema.safeParse(input);
256
+ if (!result.success) {
257
+ return createErrorResponse(new Error(`Invalid input: ${result.error.errors.map(e => e.message).join(', ')}`));
258
+ }
259
+ const { status, limit } = result.data;
260
+ let tasks = taskManager.listTasks();
261
+ if (status) {
262
+ tasks = tasks.filter(t => t.status === status);
263
+ }
264
+ if (limit) {
265
+ tasks = tasks.slice(0, limit);
266
+ }
267
+ if (tasks.length === 0) {
268
+ return {
269
+ content: [{
270
+ type: 'text',
271
+ text: `## No Tasks Found\n\n${status ? `No tasks with status "${status}".` : 'No tasks found.'}`,
272
+ }],
273
+ };
274
+ }
275
+ const stats = taskManager.getStats();
276
+ let output = `## Tasks (${tasks.length} shown)\n\n`;
277
+ output += `**Stats:** ${stats.pending} pending, ${stats.running} running, ${stats.completed} completed, ${stats.failed} failed, ${stats.cancelled} cancelled\n\n`;
278
+ for (const task of tasks) {
279
+ output += formatTaskInfoShort(task);
280
+ }
281
+ return {
282
+ content: [{
283
+ type: 'text',
284
+ text: output,
285
+ }],
286
+ };
287
+ });
288
+ }
289
+ /**
290
+ * Get task statistics
291
+ */
292
+ function registerGetTaskStatsTool(server) {
293
+ server.registerTool('get-task-stats', {
294
+ description: 'Get statistics about all tasks.',
295
+ inputSchema: z.object({}).optional(),
296
+ }, async () => {
297
+ const stats = taskManager.getStats();
298
+ let output = `## Task Statistics\n\n`;
299
+ output += `| Status | Count |\n`;
300
+ output += `|--------|-------|\n`;
301
+ output += `| Total | ${stats.total} |\n`;
302
+ output += `| Pending | ${stats.pending} |\n`;
303
+ output += `| Running | ${stats.running} |\n`;
304
+ output += `| Completed | ${stats.completed} |\n`;
305
+ output += `| Failed | ${stats.failed} |\n`;
306
+ output += `| Cancelled | ${stats.cancelled} |\n`;
307
+ return {
308
+ content: [{
309
+ type: 'text',
310
+ text: output,
311
+ }],
312
+ };
313
+ });
314
+ }
315
+ /**
316
+ * Format task info for display
317
+ */
318
+ function formatTaskInfo(task) {
319
+ let output = `## Task ${task.id}\n\n`;
320
+ output += `| Property | Value |\n`;
321
+ output += `|----------|-------|\n`;
322
+ output += `| Status | **${task.status}** |\n`;
323
+ output += `| Task | ${task.task.substring(0, 100)}${task.task.length > 100 ? '...' : ''} |\n`;
324
+ if (task.workingDirectory) {
325
+ output += `| Working Directory | \`${task.workingDirectory}\` |\n`;
326
+ }
327
+ output += `| Created | ${new Date(task.createdAt).toLocaleString()} |\n`;
328
+ if (task.startedAt) {
329
+ output += `| Started | ${new Date(task.startedAt).toLocaleString()} |\n`;
330
+ }
331
+ if (task.completedAt) {
332
+ output += `| Completed | ${new Date(task.completedAt).toLocaleString()} |\n`;
333
+ const started = new Date(task.startedAt ?? task.createdAt).getTime();
334
+ const completed = new Date(task.completedAt).getTime();
335
+ const duration = ((completed - started) / 1000).toFixed(1);
336
+ output += `| Duration | ${duration}s |\n`;
337
+ }
338
+ if (task.success !== undefined) {
339
+ output += `| Success | ${task.success ? 'Yes' : 'No'} |\n`;
340
+ }
341
+ if (task.exitCode !== undefined && task.exitCode !== null) {
342
+ output += `| Exit Code | ${task.exitCode} |\n`;
343
+ }
344
+ if (task.error) {
345
+ output += `| Error | ${task.error} |\n`;
346
+ }
347
+ return output;
348
+ }
349
+ /**
350
+ * Format short task info for list display
351
+ */
352
+ function formatTaskInfoShort(task) {
353
+ const statusEmoji = {
354
+ pending: '⏳',
355
+ running: '🔄',
356
+ completed: '✅',
357
+ failed: '❌',
358
+ cancelled: '🛑',
359
+ };
360
+ let output = `### ${statusEmoji[task.status]} ${task.id}\n\n`;
361
+ output += `- **Status:** ${task.status}\n`;
362
+ output += `- **Task:** ${task.task.substring(0, 80)}${task.task.length > 80 ? '...' : ''}\n`;
363
+ output += `- **Created:** ${new Date(task.createdAt).toLocaleString()}\n`;
364
+ if (task.status === 'running' && task.startedAt) {
365
+ const elapsed = ((Date.now() - new Date(task.startedAt).getTime()) / 1000).toFixed(0);
366
+ output += `- **Elapsed:** ${elapsed}s\n`;
367
+ }
368
+ else if (task.completedAt && task.startedAt) {
369
+ const duration = ((new Date(task.completedAt).getTime() - new Date(task.startedAt).getTime()) / 1000).toFixed(1);
370
+ output += `- **Duration:** ${duration}s\n`;
371
+ }
372
+ output += '\n';
373
+ return output;
374
+ }
375
+ //# sourceMappingURL=task-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-tools.js","sourceRoot":"","sources":["../../src/task-manager/task-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zuens2020/back-agent-mcp",
3
- "version": "1.0.2",
3
+ "version": "2.0.1",
4
4
  "description": "MCP server for executing tasks via Claude Code CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -42,10 +42,12 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@modelcontextprotocol/sdk": "^1.0.4",
45
+ "uuid": "^13.0.0",
45
46
  "zod": "^3.23.8"
46
47
  },
47
48
  "devDependencies": {
48
49
  "@types/node": "^22.10.5",
50
+ "@types/uuid": "^10.0.0",
49
51
  "tsx": "^4.19.2",
50
52
  "typescript": "^5.7.3"
51
53
  }