@darkiceinteractive/mcp-conductor 1.1.0 → 2.0.0-alpha.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.
Files changed (42) hide show
  1. package/dist/bridge/http-server.d.ts +39 -1
  2. package/dist/bridge/http-server.d.ts.map +1 -1
  3. package/dist/bridge/http-server.js +162 -5
  4. package/dist/bridge/http-server.js.map +1 -1
  5. package/dist/bridge/session-registry.d.ts +64 -0
  6. package/dist/bridge/session-registry.d.ts.map +1 -0
  7. package/dist/bridge/session-registry.js +124 -0
  8. package/dist/bridge/session-registry.js.map +1 -0
  9. package/dist/config/defaults.d.ts +10 -0
  10. package/dist/config/defaults.d.ts.map +1 -1
  11. package/dist/config/defaults.js +10 -0
  12. package/dist/config/defaults.js.map +1 -1
  13. package/dist/index.js +12 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/runtime/executor.d.ts +12 -0
  16. package/dist/runtime/executor.d.ts.map +1 -1
  17. package/dist/runtime/executor.js +70 -3
  18. package/dist/runtime/executor.js.map +1 -1
  19. package/dist/server/mcp-server.d.ts +5 -0
  20. package/dist/server/mcp-server.d.ts.map +1 -1
  21. package/dist/server/mcp-server.js +187 -43
  22. package/dist/server/mcp-server.js.map +1 -1
  23. package/dist/utils/index.d.ts +2 -0
  24. package/dist/utils/index.d.ts.map +1 -1
  25. package/dist/utils/index.js +2 -0
  26. package/dist/utils/index.js.map +1 -1
  27. package/dist/utils/logger.d.ts.map +1 -1
  28. package/dist/utils/logger.js +5 -1
  29. package/dist/utils/logger.js.map +1 -1
  30. package/dist/utils/orphan-watch.d.ts +34 -0
  31. package/dist/utils/orphan-watch.d.ts.map +1 -0
  32. package/dist/utils/orphan-watch.js +54 -0
  33. package/dist/utils/orphan-watch.js.map +1 -0
  34. package/dist/utils/redact.d.ts +15 -0
  35. package/dist/utils/redact.d.ts.map +1 -0
  36. package/dist/utils/redact.js +48 -0
  37. package/dist/utils/redact.js.map +1 -0
  38. package/dist/version.d.ts +3 -3
  39. package/dist/version.d.ts.map +1 -1
  40. package/dist/version.js +3 -3
  41. package/dist/version.js.map +1 -1
  42. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ import { MCPExecutorServer } from './server/index.js';
26
26
  import { loadConfig } from './config/index.js';
27
27
  import { LIFECYCLE_TIMEOUTS } from './config/defaults.js';
28
28
  import { logger } from './utils/index.js';
29
+ import { startOrphanWatch } from './utils/orphan-watch.js';
29
30
  import { BUILD_STRING } from './version.js';
30
31
  /**
31
32
  * Main entry point
@@ -42,10 +43,15 @@ async function main() {
42
43
  const server = new MCPExecutorServer(config);
43
44
  // Handle shutdown gracefully with timeout guard
44
45
  let isShuttingDown = false;
46
+ let orphanWatch = null;
45
47
  const shutdown = async () => {
46
48
  if (isShuttingDown)
47
49
  return; // Prevent double-shutdown
48
50
  isShuttingDown = true;
51
+ // Stop the orphan watchdog first so normal SIGTERM cleanup doesn't
52
+ // race with an "oh no, parent is gone" false positive.
53
+ orphanWatch?.stop();
54
+ orphanWatch = null;
49
55
  logger.info('Shutting down...');
50
56
  // Safety: force exit if shutdown hangs
51
57
  const shutdownTimeout = setTimeout(() => {
@@ -74,6 +80,12 @@ async function main() {
74
80
  });
75
81
  try {
76
82
  await server.start();
83
+ // Orphan watchdog: if the MCP client that spawned us dies, our
84
+ // parent PID changes (usually to 1 on POSIX). Poll for that and
85
+ // trigger shutdown so Deno children / bridge timers don't leak.
86
+ orphanWatch = startOrphanWatch({
87
+ onOrphaned: () => shutdown(),
88
+ });
77
89
  // Periodic memory logging for diagnostics
78
90
  const memLog = setInterval(() => {
79
91
  const m = process.memoryUsage();
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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"}
@@ -29,6 +29,18 @@ export interface ExecutionOptions {
29
29
  servers: string[];
30
30
  /** Enable streaming mode for real-time progress updates */
31
31
  stream?: boolean;
32
+ /**
33
+ * AbortSignal tied to the caller's request. When the signal fires we
34
+ * terminate the Deno process via the same SIGTERM→SIGKILL path used for
35
+ * shutdown. Surfaces MCP cancellation from the client side.
36
+ */
37
+ signal?: AbortSignal;
38
+ /**
39
+ * Caller-provided execution id. Lets the MCP server preallocate the id
40
+ * and subscribe to the matching ExecutionStream *before* Deno spawns, so
41
+ * we never miss the first progress event.
42
+ */
43
+ executionId?: string;
32
44
  }
33
45
  /**
34
46
  * Deno Sandbox Executor
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;QACpD,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA+aD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAwB;gBAEjC,MAAM,EAAE,aAAa;IAejC;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBnC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC/B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6DhF;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,OAAO;CAmQhB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;QACpD,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+aD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAwB;gBAEjC,MAAM,EAAE,aAAa;IAejC;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBnC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC/B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA8EhF;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,OAAO;CAkUhB"}
@@ -558,9 +558,19 @@ export class DenoExecutor {
558
558
  * Execute code in the Deno sandbox
559
559
  */
560
560
  async execute(code, options) {
561
- const executionId = generateExecutionId();
561
+ const executionId = options.executionId ?? generateExecutionId();
562
562
  const startTime = Date.now();
563
563
  const streamEnabled = options.stream ?? false;
564
+ // Short-circuit if the caller already cancelled before we started.
565
+ if (options.signal?.aborted) {
566
+ return {
567
+ executionId,
568
+ success: false,
569
+ error: { type: 'runtime', message: 'Execution cancelled before start' },
570
+ logs: [],
571
+ metrics: { executionTimeMs: 0, toolCalls: 0, dataProcessedBytes: 0, resultSizeBytes: 0 },
572
+ };
573
+ }
564
574
  logger.debug('Starting execution', { executionId, streamEnabled });
565
575
  // Validate Deno is available
566
576
  const hasDenoAvailable = await this.checkDeno();
@@ -587,7 +597,7 @@ export class DenoExecutor {
587
597
  const tempFile = join(this.tempDir, `exec_${executionId}.ts`);
588
598
  writeFileSync(tempFile, sandboxCode);
589
599
  try {
590
- const result = await this.runDeno(tempFile, options.timeoutMs, executionId, options.bridgeUrl);
600
+ const result = await this.runDeno(tempFile, options.timeoutMs, executionId, options.bridgeUrl, options.signal);
591
601
  return {
592
602
  ...result,
593
603
  executionId,
@@ -617,7 +627,7 @@ export class DenoExecutor {
617
627
  /**
618
628
  * Run Deno subprocess
619
629
  */
620
- runDeno(filePath, timeoutMs, executionId, bridgeUrl) {
630
+ runDeno(filePath, timeoutMs, executionId, bridgeUrl, signal) {
621
631
  return new Promise((resolve) => {
622
632
  // Reject if shutting down
623
633
  if (this.isShuttingDown) {
@@ -693,6 +703,35 @@ export class DenoExecutor {
693
703
  killed = true;
694
704
  proc.kill('SIGKILL');
695
705
  }, timeoutMs);
706
+ // Honour MCP cancellation (RequestHandlerExtra.signal). We kill the
707
+ // process and flag cancellation so the close handler returns the
708
+ // dedicated error type instead of a timeout / runtime error.
709
+ let cancelled = false;
710
+ const onAbort = () => {
711
+ cancelled = true;
712
+ killed = true;
713
+ logger.info('Execution cancelled by client', { executionId });
714
+ try {
715
+ proc.kill('SIGTERM');
716
+ // Escalate to SIGKILL if the process doesn't exit in the grace window.
717
+ setTimeout(() => {
718
+ if (this.activeProcesses.has(executionId)) {
719
+ proc.kill('SIGKILL');
720
+ }
721
+ }, LIFECYCLE_TIMEOUTS.PROCESS_FORCE_KILL_MS).unref?.();
722
+ }
723
+ catch {
724
+ // Process may already be gone.
725
+ }
726
+ };
727
+ if (signal) {
728
+ if (signal.aborted) {
729
+ onAbort();
730
+ }
731
+ else {
732
+ signal.addEventListener('abort', onAbort, { once: true });
733
+ }
734
+ }
696
735
  // Bounded stdout/stderr buffering
697
736
  const stdoutChunks = [];
698
737
  let stdoutLen = 0;
@@ -731,8 +770,29 @@ export class DenoExecutor {
731
770
  proc.on('close', (code) => {
732
771
  clearTimeout(timer);
733
772
  this.activeProcesses.delete(executionId);
773
+ if (signal) {
774
+ signal.removeEventListener('abort', onAbort);
775
+ }
734
776
  const stdout = Buffer.concat(stdoutChunks).toString('utf-8');
735
777
  const stderr = Buffer.concat(stderrChunks).toString('utf-8');
778
+ if (cancelled) {
779
+ resolve({
780
+ executionId,
781
+ success: false,
782
+ error: {
783
+ type: 'runtime',
784
+ message: 'Execution cancelled by client',
785
+ },
786
+ logs: [],
787
+ metrics: {
788
+ executionTimeMs: 0,
789
+ toolCalls: 0,
790
+ dataProcessedBytes: 0,
791
+ resultSizeBytes: 0,
792
+ },
793
+ });
794
+ return;
795
+ }
736
796
  if (killed) {
737
797
  resolve({
738
798
  executionId,
@@ -836,6 +896,13 @@ export class DenoExecutor {
836
896
  proc.on('error', (error) => {
837
897
  clearTimeout(timer);
838
898
  this.activeProcesses.delete(executionId);
899
+ // Symmetric with the close handler — without this the abort
900
+ // listener stays attached to the AbortSignal until the SDK GCs
901
+ // the request, leaking closure refs across repeated spawn
902
+ // failures (EAGAIN/EMFILE/ENOENT).
903
+ if (signal) {
904
+ signal.removeEventListener('abort', onAbort);
905
+ }
839
906
  // Reset deno check cache on spawn failure
840
907
  if (error.message.includes('ENOENT')) {
841
908
  this.denoAvailable = null;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,11 @@ export declare class MCPExecutorServer {
30
30
  /**
31
31
  * Register all MCP tools
32
32
  */
33
+ /**
34
+ * Record metrics + shape the execute_code tool response. Extracted so the
35
+ * progress/cancel wiring in the handler stays readable.
36
+ */
37
+ private finaliseExecuteCodeResult;
33
38
  private registerTools;
34
39
  /**
35
40
  * Start the server
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAQzC,OAAO,KAAK,EAAE,iBAAiB,EAAkC,MAAM,oBAAoB,CAAC;AAG5F;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,WAAW,CAAgB;IAGnC,OAAO,CAAC,WAAW,CAAmF;gBAE1F,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAiE7E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwqCrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqH5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAOtE;;;;OAIG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;CActF"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAQzC,OAAO,KAAK,EAAE,iBAAiB,EAAkC,MAAM,oBAAoB,CAAC;AAI5F;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,WAAW,CAAgB;IAGnC,OAAO,CAAC,WAAW,CAAmF;gBAE1F,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAiE7E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA8CjC,OAAO,CAAC,aAAa;IA0wCrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqH5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAOtE;;;;OAIG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;CActF"}
@@ -17,6 +17,7 @@ import { shutdownMetricsCollector } from '../metrics/index.js';
17
17
  import { shutdownModeHandler } from '../modes/index.js';
18
18
  import { shutdownSkillsEngine } from '../skills/index.js';
19
19
  import { loadConductorConfig, saveConductorConfig, getDefaultConductorConfigPath } from '../config/index.js';
20
+ import { VERSION } from '../version.js';
20
21
  /**
21
22
  * MCP Executor Server
22
23
  */
@@ -49,7 +50,7 @@ export class MCPExecutorServer {
49
50
  this.server = new McpServer({
50
51
  name: 'mcp-conductor',
51
52
  title: 'MCP Conductor',
52
- version: '0.1.0',
53
+ version: VERSION,
53
54
  websiteUrl: 'https://github.com/darkiceinteractive/mcp-conductor',
54
55
  icons: [
55
56
  {
@@ -113,6 +114,46 @@ export class MCPExecutorServer {
113
114
  /**
114
115
  * Register all MCP tools
115
116
  */
117
+ /**
118
+ * Record metrics + shape the execute_code tool response. Extracted so the
119
+ * progress/cancel wiring in the handler stays readable.
120
+ */
121
+ finaliseExecuteCodeResult(result, code, servers, verbose) {
122
+ const executionMetrics = this.metricsCollector.recordExecution({
123
+ executionId: result.executionId,
124
+ code,
125
+ result: result.result,
126
+ success: result.success,
127
+ durationMs: result.metrics.executionTimeMs,
128
+ toolCalls: result.metrics.toolCalls,
129
+ dataProcessedBytes: result.metrics.dataProcessedBytes,
130
+ resultSizeBytes: result.metrics.resultSizeBytes,
131
+ mode: 'execution',
132
+ serversUsed: servers || [],
133
+ errorType: result.error?.type,
134
+ });
135
+ this.modeHandler.recordExecutionCall(executionMetrics.estimatedTokensSaved);
136
+ const output = {
137
+ success: result.success,
138
+ result: result.result,
139
+ error: result.error,
140
+ };
141
+ if (verbose) {
142
+ output.metrics = {
143
+ execution_time_ms: result.metrics.executionTimeMs,
144
+ tool_calls: result.metrics.toolCalls,
145
+ data_processed_bytes: result.metrics.dataProcessedBytes,
146
+ result_size_bytes: result.metrics.resultSizeBytes,
147
+ estimated_tokens_saved: executionMetrics.estimatedTokensSaved,
148
+ savings_percent: executionMetrics.savingsPercent,
149
+ };
150
+ output.logs = result.logs;
151
+ }
152
+ return {
153
+ content: [{ type: 'text', text: JSON.stringify(output) }],
154
+ structuredContent: output,
155
+ };
156
+ }
116
157
  registerTools() {
117
158
  // Register execute_code tool
118
159
  this.server.registerTool('execute_code', {
@@ -126,6 +167,14 @@ export class MCPExecutorServer {
126
167
  **Example:** \`const files = await mcp.filesystem.call('list_directory', { path: '/src' }); return files;\`
127
168
 
128
169
  Use passthrough_call only for debugging - it has HIGH token cost.`,
170
+ annotations: {
171
+ // execute_code proxies arbitrary code that can call any backend MCP
172
+ // tool, so it inherits the most permissive capability surface.
173
+ readOnlyHint: false,
174
+ destructiveHint: true,
175
+ idempotentHint: false,
176
+ openWorldHint: true,
177
+ },
129
178
  inputSchema: {
130
179
  code: z.string().describe('TypeScript/JavaScript code to execute. Must include a return statement.'),
131
180
  servers: z.array(z.string()).optional().describe('Optional: List of MCP server names to load.'),
@@ -151,60 +200,87 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
151
200
  }).optional(),
152
201
  logs: z.array(z.string()).optional(),
153
202
  },
154
- }, async ({ code, servers, timeout_ms, stream, verbose }) => {
203
+ }, async ({ code, servers, timeout_ms, stream, verbose }, extra) => {
155
204
  const timeoutMs = Math.min(timeout_ms || this.config.execution.defaultTimeoutMs, this.config.execution.maxTimeoutMs);
156
205
  logger.info('Executing code', {
157
206
  codeLength: code.length,
158
207
  timeout: timeoutMs,
159
208
  servers: servers || 'all',
160
209
  });
161
- const result = await this.executor.execute(code, {
162
- timeoutMs,
163
- bridgeUrl: this.bridge.getUrl(),
164
- servers: servers || [],
165
- });
166
- // Record execution with enhanced metrics collector
167
- const executionMetrics = this.metricsCollector.recordExecution({
168
- executionId: result.executionId,
169
- code,
170
- result: result.result,
171
- success: result.success,
172
- durationMs: result.metrics.executionTimeMs,
173
- toolCalls: result.metrics.toolCalls,
174
- dataProcessedBytes: result.metrics.dataProcessedBytes,
175
- resultSizeBytes: result.metrics.resultSizeBytes,
176
- mode: 'execution',
177
- serversUsed: servers || [],
178
- errorType: result.error?.type,
179
- });
180
- // Track with mode handler
181
- this.modeHandler.recordExecutionCall(executionMetrics.estimatedTokensSaved);
182
- const output = {
183
- success: result.success,
184
- result: result.result,
185
- error: result.error,
210
+ // If the client supplied a progressToken in _meta, forward sandbox
211
+ // progress() calls as MCP notifications/progress. We preallocate the
212
+ // execution id + stream so we never miss the first event.
213
+ const progressToken = extra?._meta?.progressToken;
214
+ const wantProgress = progressToken !== undefined;
215
+ const wantStream = stream || wantProgress;
216
+ const executionId = wantStream ? this.executor.generateExecutionId() : undefined;
217
+ const execStream = executionId ? this.bridge.createStream(executionId) : undefined;
218
+ const forwardProgress = (percent, message) => {
219
+ if (!wantProgress || !extra?.sendNotification)
220
+ return;
221
+ void extra
222
+ .sendNotification({
223
+ method: 'notifications/progress',
224
+ params: {
225
+ progressToken,
226
+ progress: percent,
227
+ total: 100,
228
+ ...(message ? { message } : {}),
229
+ },
230
+ })
231
+ .catch((err) => {
232
+ logger.debug('Failed to forward progress notification', { error: String(err) });
233
+ });
186
234
  };
187
- // Only include metrics when verbose is true (saves ~150-300 tokens per response)
188
- if (verbose) {
189
- output.metrics = {
190
- execution_time_ms: result.metrics.executionTimeMs,
191
- tool_calls: result.metrics.toolCalls,
192
- data_processed_bytes: result.metrics.dataProcessedBytes,
193
- result_size_bytes: result.metrics.resultSizeBytes,
194
- estimated_tokens_saved: executionMetrics.estimatedTokensSaved,
195
- savings_percent: executionMetrics.savingsPercent,
196
- };
197
- output.logs = result.logs;
235
+ if (execStream && wantProgress) {
236
+ execStream.on('progress', (ev) => {
237
+ forwardProgress(ev.data.percent, ev.data.message);
238
+ });
239
+ }
240
+ let result;
241
+ try {
242
+ result = await this.executor.execute(code, {
243
+ timeoutMs,
244
+ bridgeUrl: this.bridge.getUrl(),
245
+ servers: servers || [],
246
+ stream: wantStream,
247
+ signal: extra?.signal,
248
+ executionId,
249
+ });
250
+ return this.finaliseExecuteCodeResult(result, code, servers, verbose);
251
+ }
252
+ finally {
253
+ if (execStream) {
254
+ // Flip the stream out of `running` so StreamManager's normal
255
+ // 5/10-min cleanup applies instead of the 15-min stuck-stream
256
+ // sweep. Only fire complete() if we actually got a result —
257
+ // if execute() threw, the stream will time out via the stuck
258
+ // path which is the right safety net.
259
+ if (result) {
260
+ execStream.complete({
261
+ success: result.success,
262
+ result: result.result,
263
+ error: result.error,
264
+ metrics: {
265
+ executionTimeMs: result.metrics.executionTimeMs,
266
+ toolCalls: result.metrics.toolCalls,
267
+ dataProcessedBytes: result.metrics.dataProcessedBytes,
268
+ },
269
+ });
270
+ }
271
+ execStream.removeAllListeners('progress');
272
+ }
198
273
  }
199
- return {
200
- content: [{ type: 'text', text: JSON.stringify(output) }],
201
- structuredContent: output,
202
- };
203
274
  });
204
275
  // Register list_servers tool
205
276
  this.server.registerTool('list_servers', {
206
277
  title: 'List Servers',
207
278
  description: 'List all MCP servers connected through MCP Executor.',
279
+ annotations: {
280
+ readOnlyHint: true,
281
+ idempotentHint: true,
282
+ openWorldHint: false,
283
+ },
208
284
  inputSchema: {
209
285
  include_tools: z.boolean().optional().describe('If true, include list of tool names.'),
210
286
  },
@@ -253,6 +329,11 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
253
329
  this.server.registerTool('discover_tools', {
254
330
  title: 'Discover Tools',
255
331
  description: 'Search for available tools across all connected MCP servers.',
332
+ annotations: {
333
+ readOnlyHint: true,
334
+ idempotentHint: true,
335
+ openWorldHint: false,
336
+ },
256
337
  inputSchema: {
257
338
  query: z.string().optional().describe('Search query. Matches against tool names and descriptions.'),
258
339
  server: z.string().optional().describe('Optional: limit search to a specific server.'),
@@ -334,6 +415,11 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
334
415
  this.server.registerTool('get_metrics', {
335
416
  title: 'Get Metrics',
336
417
  description: 'Get detailed aggregated metrics for the current session including token savings, performance, and usage patterns.',
418
+ annotations: {
419
+ readOnlyHint: true,
420
+ idempotentHint: true,
421
+ openWorldHint: false,
422
+ },
337
423
  inputSchema: {
338
424
  reset: z.boolean().optional().describe('Reset metrics after returning.'),
339
425
  include_details: z.boolean().optional().describe('Include detailed breakdowns (servers, tools, recent executions).'),
@@ -443,6 +529,13 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
443
529
  - execution: All requests go through the code executor (default, maximum token savings)
444
530
  - passthrough: Direct tool calls without code execution (for debugging/comparison)
445
531
  - hybrid: Automatic selection based on task complexity`,
532
+ annotations: {
533
+ // Changes global server behaviour; future tool calls take the new path.
534
+ readOnlyHint: false,
535
+ destructiveHint: true,
536
+ idempotentHint: true,
537
+ openWorldHint: false,
538
+ },
446
539
  inputSchema: {
447
540
  mode: z.enum(['execution', 'passthrough', 'hybrid']).describe('The operation mode to switch to.'),
448
541
  },
@@ -469,6 +562,11 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
469
562
  this.server.registerTool('reload_servers', {
470
563
  title: 'Reload Servers',
471
564
  description: 'Reload MCP server configurations. Useful after modifying claude_desktop_config.json.',
565
+ annotations: {
566
+ destructiveHint: true,
567
+ idempotentHint: false,
568
+ openWorldHint: true,
569
+ },
472
570
  inputSchema: {},
473
571
  outputSchema: {
474
572
  added: z.array(z.string()),
@@ -493,6 +591,11 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
493
591
  this.server.registerTool('get_capabilities', {
494
592
  title: 'Get Capabilities',
495
593
  description: 'Get detailed information about MCP Executor capabilities and configuration.',
594
+ annotations: {
595
+ readOnlyHint: true,
596
+ idempotentHint: true,
597
+ openWorldHint: false,
598
+ },
496
599
  inputSchema: {},
497
600
  outputSchema: {
498
601
  version: z.string(),
@@ -522,7 +625,7 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
522
625
  ? { loaded: this.skills.getSkillCount(), categories: this.skills.getCategories() }
523
626
  : { loaded: 0, categories: [] };
524
627
  const output = {
525
- version: '0.1.0',
628
+ version: VERSION,
526
629
  current_mode: this.currentMode,
527
630
  features: {
528
631
  streaming: this.config.execution.streamingEnabled,
@@ -550,6 +653,11 @@ Use passthrough_call only for debugging - it has HIGH token cost.`,
550
653
  title: 'Compare Modes',
551
654
  description: `Analyse how a task would be handled in different modes.
552
655
  Returns estimated token usage and approach for each mode.`,
656
+ annotations: {
657
+ readOnlyHint: true,
658
+ idempotentHint: true,
659
+ openWorldHint: false,
660
+ },
553
661
  inputSchema: {
554
662
  task_description: z.string().describe('Description of the task to analyse.'),
555
663
  estimated_tool_calls: z.number().optional().describe('Estimated number of tool calls needed.'),
@@ -628,6 +736,14 @@ Returns estimated token usage and approach for each mode.`,
628
736
  description: `⚠️ DEBUGGING TOOL - Direct MCP tool call. HIGH TOKEN COST (10-100x vs execute_code).
629
737
 
630
738
  Only use for debugging raw tool input/output. Use execute_code for all normal operations.`,
739
+ annotations: {
740
+ // Proxies into a backend MCP server so the effect depends on the
741
+ // downstream tool. Conservative defaults: assume external + mutable.
742
+ readOnlyHint: false,
743
+ destructiveHint: true,
744
+ idempotentHint: false,
745
+ openWorldHint: true,
746
+ },
631
747
  inputSchema: {
632
748
  server: z.string().describe('Name of the MCP server to call.'),
633
749
  tool: z.string().describe('Name of the tool to invoke.'),
@@ -773,6 +889,11 @@ Only use for debugging raw tool input/output. Use execute_code for all normal op
773
889
  description: `Web search via Brave Search API. Uses 90% fewer tokens than native WebSearch.
774
890
 
775
891
  Routes to brave-search MCP server internally. Requires brave-search server to be configured.`,
892
+ annotations: {
893
+ readOnlyHint: true,
894
+ idempotentHint: false, // Web results change between calls
895
+ openWorldHint: true,
896
+ },
776
897
  inputSchema: {
777
898
  query: z.string().describe('Search query (max 400 chars, 50 words).'),
778
899
  count: z.number().optional().describe('Number of results (1-20, default 10).'),
@@ -834,6 +955,12 @@ Routes to brave-search MCP server internally. Requires brave-search server to be
834
955
 
835
956
  Saves the server configuration to ~/.mcp-conductor.json and triggers a reload.
836
957
  Use this to dynamically add servers without restarting Claude.`,
958
+ annotations: {
959
+ readOnlyHint: false,
960
+ destructiveHint: false, // Adds a new server; not destructive by itself
961
+ idempotentHint: false, // Re-adding the same name returns an error
962
+ openWorldHint: false,
963
+ },
837
964
  inputSchema: {
838
965
  name: z.string().describe('Unique server name (e.g., "github", "filesystem").'),
839
966
  command: z.string().describe('Command to run the server (e.g., "npx", "node", "python").'),
@@ -921,6 +1048,12 @@ Use this to dynamically add servers without restarting Claude.`,
921
1048
 
922
1049
  Removes the server configuration from ~/.mcp-conductor.json and triggers a reload.
923
1050
  Use this to dynamically remove servers without restarting Claude.`,
1051
+ annotations: {
1052
+ readOnlyHint: false,
1053
+ destructiveHint: true,
1054
+ idempotentHint: true, // Removing an already-gone server is a safe no-op
1055
+ openWorldHint: false,
1056
+ },
924
1057
  inputSchema: {
925
1058
  name: z.string().describe('Name of the server to remove.'),
926
1059
  },
@@ -1006,6 +1139,12 @@ Use this to dynamically remove servers without restarting Claude.`,
1006
1139
 
1007
1140
  Use this to update API keys or other settings without removing and re-adding the server.
1008
1141
  Triggers a reload to apply changes immediately.`,
1142
+ annotations: {
1143
+ readOnlyHint: false,
1144
+ destructiveHint: true, // Overwrites existing config; may disconnect/reconnect
1145
+ idempotentHint: true,
1146
+ openWorldHint: false,
1147
+ },
1009
1148
  inputSchema: {
1010
1149
  name: z.string().describe('Name of the server to update.'),
1011
1150
  command: z.string().optional().describe('New command (optional, keeps existing if not provided).'),
@@ -1124,6 +1263,11 @@ Triggers a reload to apply changes immediately.`,
1124
1263
  this.server.registerTool('get_memory_stats', {
1125
1264
  title: 'Get Memory Stats',
1126
1265
  description: 'Returns live memory usage and resource counts for the conductor process. Use this to diagnose memory issues.',
1266
+ annotations: {
1267
+ readOnlyHint: true,
1268
+ idempotentHint: true,
1269
+ openWorldHint: false,
1270
+ },
1127
1271
  inputSchema: {},
1128
1272
  outputSchema: {
1129
1273
  heap_used_mb: z.number(),