@brutalist/mcp 0.7.0 → 0.9.3

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 (38) hide show
  1. package/README.md +22 -1
  2. package/dist/brutalist-server.d.ts +46 -16
  3. package/dist/brutalist-server.d.ts.map +1 -1
  4. package/dist/brutalist-server.js +223 -611
  5. package/dist/brutalist-server.js.map +1 -1
  6. package/dist/cli-agents.d.ts +11 -9
  7. package/dist/cli-agents.d.ts.map +1 -1
  8. package/dist/cli-agents.js +239 -155
  9. package/dist/cli-agents.js.map +1 -1
  10. package/dist/domains/argument-space.d.ts +9 -0
  11. package/dist/domains/argument-space.d.ts.map +1 -1
  12. package/dist/domains/argument-space.js +27 -20
  13. package/dist/domains/argument-space.js.map +1 -1
  14. package/dist/formatting/response-formatter.d.ts +43 -0
  15. package/dist/formatting/response-formatter.d.ts.map +1 -0
  16. package/dist/formatting/response-formatter.js +277 -0
  17. package/dist/formatting/response-formatter.js.map +1 -0
  18. package/dist/generators/tool-generator.d.ts.map +1 -1
  19. package/dist/generators/tool-generator.js +3 -1
  20. package/dist/generators/tool-generator.js.map +1 -1
  21. package/dist/handlers/tool-handler.d.ts +33 -0
  22. package/dist/handlers/tool-handler.d.ts.map +1 -0
  23. package/dist/handlers/tool-handler.js +299 -0
  24. package/dist/handlers/tool-handler.js.map +1 -0
  25. package/dist/registry/argument-spaces.js +17 -17
  26. package/dist/registry/argument-spaces.js.map +1 -1
  27. package/dist/transport/http-transport.d.ts +40 -0
  28. package/dist/transport/http-transport.d.ts.map +1 -0
  29. package/dist/transport/http-transport.js +182 -0
  30. package/dist/transport/http-transport.js.map +1 -0
  31. package/dist/types/tool-config.d.ts +3 -3
  32. package/dist/types/tool-config.js +2 -2
  33. package/dist/types/tool-config.js.map +1 -1
  34. package/dist/utils.d.ts +1 -1
  35. package/dist/utils.d.ts.map +1 -1
  36. package/dist/utils.js +13 -6
  37. package/dist/utils.js.map +1 -1
  38. package/package.json +1 -1
package/README.md CHANGED
@@ -41,6 +41,27 @@ Choose your IDE:
41
41
  claude mcp add brutalist --scope user -- npx -y @brutalist/mcp@latest
42
42
  ```
43
43
 
44
+ **Codex:**
45
+ ```bash
46
+ # Install globally once to avoid npx startup chatter
47
+ npm i -g @brutalist/mcp
48
+ # Add MCP using the installed binary (clean stdio)
49
+ codex mcp add brutalist -- brutalist-mcp
50
+ ```
51
+
52
+ **Configuring `tool_timeout_sec` for Codex:**
53
+ The `tool_timeout_sec` parameter (defaulting to 60 seconds) for your Brutalist MCP server needs to be configured directly in your Codex configuration file at `~/.codex/config.toml`. It cannot be passed via the `codex mcp add` command directly.
54
+
55
+ To set a custom timeout (e.g., 5 minutes or 300 seconds), add or modify the `[mcp_servers.brutalist]` section in `~/.codex/config.toml` as follows:
56
+
57
+ ```toml
58
+ [mcp_servers.brutalist]
59
+ command = "brutalist-mcp" # Ensure this matches your installation command
60
+ args = [] # Depending on your setup, this might be empty or contain arguments
61
+ tool_timeout_sec = 300 # Set your desired timeout in seconds
62
+ ```
63
+
64
+
44
65
  **Cursor:**
45
66
  Add to `~/.cursor/mcp.json`:
46
67
  ```json
@@ -232,4 +253,4 @@ Getting multiple viewpoints helps identify issues that a single perspective migh
232
253
  ---
233
254
 
234
255
  **License:** MIT
235
- **Issues:** https://github.com/ejmockler/brutalist-mcp/issues
256
+ **Issues:** https://github.com/ejmockler/brutalist-mcp/issues
@@ -1,40 +1,70 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { BrutalistServerConfig } from './types/brutalist.js';
3
+ /**
4
+ * BrutalistServer - Composition root for the Brutalist MCP Server
5
+ *
6
+ * This class has been refactored to follow the Single Responsibility Principle.
7
+ * Responsibilities are now delegated to specialized modules:
8
+ * - ResponseFormatter: Handles all response formatting and pagination
9
+ * - HttpTransport: Manages HTTP server and CORS
10
+ * - ToolHandler: Handles roast tool execution, caching, and conversation continuation
11
+ */
3
12
  export declare class BrutalistServer {
4
13
  server: McpServer;
5
14
  config: BrutalistServerConfig;
6
15
  private cliOrchestrator;
7
- private httpTransport?;
8
16
  private responseCache;
9
- private actualPort?;
10
- private httpServer?;
11
- private shutdownHandler?;
17
+ private formatter;
18
+ private toolHandler;
19
+ private httpTransport?;
12
20
  private activeSessions;
21
+ private readonly MAX_SESSIONS;
22
+ private readonly SESSION_TTL_MS;
23
+ private sessionCleanupTimer?;
13
24
  constructor(config?: BrutalistServerConfig);
14
- private handleStreamingEvent;
15
- private handleProgressUpdate;
16
25
  start(): Promise<void>;
17
26
  private startStdioServer;
18
27
  private startHttpServer;
19
28
  getActualPort(): number | undefined;
20
29
  stop(): Promise<void>;
30
+ /**
31
+ * Clean up stale sessions that exceed TTL
32
+ */
33
+ private cleanupStaleSessions;
34
+ /**
35
+ * Ensure session capacity doesn't exceed MAX_SESSIONS
36
+ * Evicts oldest sessions when capacity is reached
37
+ */
38
+ ensureSessionCapacity(): void;
21
39
  cleanup(): void;
40
+ /**
41
+ * Handle streaming events from CLI agents
42
+ */
43
+ private handleStreamingEvent;
44
+ /**
45
+ * Handle progress updates from CLI agents
46
+ */
47
+ private handleProgressUpdate;
48
+ /**
49
+ * Register all MCP tools
50
+ */
22
51
  private registerTools;
52
+ /**
53
+ * Register special tools (debate, roster)
54
+ */
23
55
  private registerSpecialTools;
24
56
  /**
25
- * Unified handler for all roast tools - DRY principle
57
+ * Handle debate tool execution with caching, pagination, and conversation continuation
58
+ * Delegated mostly to ToolHandler but kept here for CLI debate-specific logic
59
+ */
60
+ private handleDebateToolExecution;
61
+ /**
62
+ * Execute CLI debate (kept in server for debate-specific logic)
26
63
  */
27
- private handleRoastTool;
28
64
  private executeCLIDebate;
29
- private synthesizeDebate;
30
- private executeBrutalistAnalysis;
31
65
  /**
32
- * Extract full content from analysis result for caching
66
+ * Synthesize debate results into formatted output
33
67
  */
34
- private extractFullContent;
35
- private formatToolResponse;
36
- private formatPaginatedResponse;
37
- private formatErrorResponse;
38
- private handleToolExecution;
68
+ private synthesizeDebate;
39
69
  }
40
70
  //# sourceMappingURL=brutalist-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"brutalist-server.d.ts","sourceRoot":"","sources":["../src/brutalist-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,OAAO,EACL,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAc9B,qBAAa,eAAe;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IACrC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAM;IACzB,OAAO,CAAC,eAAe,CAAC,CAAa;IAErC,OAAO,CAAC,cAAc,CAIjB;gBAEO,MAAM,GAAE,qBAA0B;IA0C9C,OAAO,CAAC,oBAAoB,CAkE1B;IAEF,OAAO,CAAC,oBAAoB,CAsC1B;IAEI,KAAK;YAeG,gBAAgB;YAMhB,eAAe;IAmItB,aAAa,IAAI,MAAM,GAAG,SAAS;IAK7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,OAAO,IAAI,IAAI;IAOtB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,oBAAoB;IAoG5B;;OAEG;YACW,eAAe;YAsOf,gBAAgB;IAkK9B,OAAO,CAAC,gBAAgB;YA0FV,wBAAwB;IA0FtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,kBAAkB;IA6F1B,OAAO,CAAC,uBAAuB;IAuH/B,OAAO,CAAC,mBAAmB;YA8Bb,mBAAmB;CAUlC"}
1
+ {"version":3,"file":"brutalist-server.d.ts","sourceRoot":"","sources":["../src/brutalist-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,OAAO,EACL,qBAAqB,EAGtB,MAAM,sBAAsB,CAAC;AAc9B;;;;;;;;GAQG;AACH,qBAAa,eAAe;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IAGrC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAgB;IAGrC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAC,CAAgB;IAGtC,OAAO,CAAC,cAAc,CAIjB;IAGL,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,mBAAmB,CAAC,CAAiB;gBAEjC,MAAM,GAAE,qBAA0B;IA2DxC,KAAK;YAeG,gBAAgB;YAMhB,eAAe;IActB,aAAa,IAAI,MAAM,GAAG,SAAS;IAK7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACI,qBAAqB,IAAI,IAAI;IAc7B,OAAO,IAAI,IAAI;IAUtB;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAgE1B;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAsC1B;IAEF;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuG5B;;;OAGG;YACW,yBAAyB;IAmLvC;;OAEG;YACW,gBAAgB;IA0J9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA8FzB"}