@brutalist/mcp 0.8.1 → 1.0.0
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/README.md +34 -7
- package/dist/brutalist-server.d.ts +55 -16
- package/dist/brutalist-server.d.ts.map +1 -1
- package/dist/brutalist-server.js +550 -732
- package/dist/brutalist-server.js.map +1 -1
- package/dist/cli-agents.d.ts +9 -7
- package/dist/cli-agents.d.ts.map +1 -1
- package/dist/cli-agents.js +290 -202
- package/dist/cli-agents.js.map +1 -1
- package/dist/domains/argument-space.d.ts +12 -3
- package/dist/domains/argument-space.d.ts.map +1 -1
- package/dist/domains/argument-space.js +30 -23
- package/dist/domains/argument-space.js.map +1 -1
- package/dist/domains/critique-domain.d.ts +12 -0
- package/dist/domains/critique-domain.d.ts.map +1 -1
- package/dist/domains/critique-domain.js +12 -1
- package/dist/domains/critique-domain.js.map +1 -1
- package/dist/formatting/response-formatter.d.ts +43 -0
- package/dist/formatting/response-formatter.d.ts.map +1 -0
- package/dist/formatting/response-formatter.js +277 -0
- package/dist/formatting/response-formatter.js.map +1 -0
- package/dist/generators/tool-generator.d.ts.map +1 -1
- package/dist/generators/tool-generator.js +8 -6
- package/dist/generators/tool-generator.js.map +1 -1
- package/dist/handlers/tool-handler.d.ts +33 -0
- package/dist/handlers/tool-handler.d.ts.map +1 -0
- package/dist/handlers/tool-handler.js +307 -0
- package/dist/handlers/tool-handler.js.map +1 -0
- package/dist/registry/argument-spaces.js +17 -17
- package/dist/registry/argument-spaces.js.map +1 -1
- package/dist/registry/domains.d.ts +10 -0
- package/dist/registry/domains.d.ts.map +1 -1
- package/dist/registry/domains.js +153 -11
- package/dist/registry/domains.js.map +1 -1
- package/dist/system-prompts.d.ts +8 -0
- package/dist/system-prompts.d.ts.map +1 -0
- package/dist/system-prompts.js +596 -0
- package/dist/system-prompts.js.map +1 -0
- package/dist/tool-definitions.d.ts +20 -1
- package/dist/tool-definitions.d.ts.map +1 -1
- package/dist/tool-definitions.js +42 -213
- package/dist/tool-definitions.js.map +1 -1
- package/dist/tool-router.d.ts +12 -0
- package/dist/tool-router.d.ts.map +1 -0
- package/dist/tool-router.js +59 -0
- package/dist/tool-router.js.map +1 -0
- package/dist/transport/http-transport.d.ts +40 -0
- package/dist/transport/http-transport.d.ts.map +1 -0
- package/dist/transport/http-transport.js +182 -0
- package/dist/transport/http-transport.js.map +1 -0
- package/dist/types/brutalist.d.ts +1 -0
- package/dist/types/brutalist.d.ts.map +1 -1
- package/dist/types/tool-config.d.ts +4 -3
- package/dist/types/tool-config.d.ts.map +1 -1
- package/dist/types/tool-config.js +7 -6
- package/dist/types/tool-config.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +13 -6
- package/dist/utils.js.map +1 -1
- 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
|
|
@@ -194,22 +215,28 @@ Features:
|
|
|
194
215
|
|
|
195
216
|
| Tool | Purpose |
|
|
196
217
|
|------|---------|
|
|
218
|
+
| `roast` | **Unified tool** - use `domain` parameter to select analysis type |
|
|
219
|
+
| `brutalist_discover` | Find the best tool for your intent using natural language |
|
|
197
220
|
| `roast_cli_debate` | Multi-agent discussion from different perspectives |
|
|
198
221
|
| `cli_agent_roster` | Show available CLI agents on your system |
|
|
199
222
|
|
|
223
|
+
> **Tip:** Use the unified `roast` tool with a domain parameter for a leaner schema, or use `brutalist_discover` to find the right tool based on your intent.
|
|
224
|
+
|
|
225
|
+
See [docs/pagination.md](docs/pagination.md) for detailed pagination documentation.
|
|
226
|
+
|
|
200
227
|
## Advanced Usage
|
|
201
228
|
|
|
202
229
|
### Choose Specific CLI Agents
|
|
203
230
|
|
|
204
231
|
```bash
|
|
205
|
-
# Use
|
|
206
|
-
|
|
232
|
+
# Use specific agents (subset selection)
|
|
233
|
+
roast(domain="codebase", target="/src", clis=["claude", "gemini"])
|
|
207
234
|
|
|
208
|
-
#
|
|
209
|
-
|
|
235
|
+
# Use a single agent
|
|
236
|
+
roast(domain="codebase", target="/src", clis=["claude"])
|
|
210
237
|
|
|
211
|
-
# Multi-agent analysis (default)
|
|
212
|
-
|
|
238
|
+
# Multi-agent analysis (default - all available)
|
|
239
|
+
roast(domain="idea", target="...") # All available agents provide perspectives
|
|
213
240
|
```
|
|
214
241
|
|
|
215
242
|
### Agent Strengths
|
|
@@ -232,4 +259,4 @@ Getting multiple viewpoints helps identify issues that a single perspective migh
|
|
|
232
259
|
---
|
|
233
260
|
|
|
234
261
|
**License:** MIT
|
|
235
|
-
**Issues:** https://github.com/ejmockler/brutalist-mcp/issues
|
|
262
|
+
**Issues:** https://github.com/ejmockler/brutalist-mcp/issues
|
|
@@ -1,40 +1,79 @@
|
|
|
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
|
|
10
|
-
private
|
|
11
|
-
private
|
|
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
|
+
*
|
|
51
|
+
* TOOL REDUCTION STRATEGY: Only expose 4 gateway tools instead of 15.
|
|
52
|
+
* The unified `roast` tool with domain parameter replaces all 11 roast_* tools.
|
|
53
|
+
* This reduces cognitive load for AI agents while maintaining full functionality.
|
|
54
|
+
*/
|
|
22
55
|
private registerTools;
|
|
56
|
+
/**
|
|
57
|
+
* Register special tools (debate, roster, unified roast)
|
|
58
|
+
*/
|
|
23
59
|
private registerSpecialTools;
|
|
24
60
|
/**
|
|
25
|
-
*
|
|
61
|
+
* Handle unified roast tool - routes to appropriate domain handler
|
|
62
|
+
*/
|
|
63
|
+
private handleUnifiedRoast;
|
|
64
|
+
/**
|
|
65
|
+
* Handle debate tool execution with constitutional position anchoring.
|
|
66
|
+
* Uses 2 randomly selected agents (or user-specified) with explicit PRO/CON positions.
|
|
67
|
+
*/
|
|
68
|
+
private handleDebateToolExecution;
|
|
69
|
+
/**
|
|
70
|
+
* Execute CLI debate with constitutional position anchoring.
|
|
71
|
+
* 2 agents, explicit PRO/CON positions, context compression between rounds.
|
|
26
72
|
*/
|
|
27
|
-
private handleRoastTool;
|
|
28
73
|
private executeCLIDebate;
|
|
29
|
-
private synthesizeDebate;
|
|
30
|
-
private executeBrutalistAnalysis;
|
|
31
74
|
/**
|
|
32
|
-
*
|
|
75
|
+
* Synthesize debate results into formatted output
|
|
33
76
|
*/
|
|
34
|
-
private
|
|
35
|
-
private formatToolResponse;
|
|
36
|
-
private formatPaginatedResponse;
|
|
37
|
-
private formatErrorResponse;
|
|
38
|
-
private handleToolExecution;
|
|
77
|
+
private synthesizeDebate;
|
|
39
78
|
}
|
|
40
79
|
//# 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;
|
|
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;AAgB9B;;;;;;;;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;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+M5B;;OAEG;YACW,kBAAkB;IAiEhC;;;OAGG;YACW,yBAAyB;IA2LvC;;;OAGG;YACW,gBAAgB;IAwN9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA8FzB"}
|