@zhixuan92/multi-model-agent-mcp 2.8.0 → 2.8.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/README.md +11 -207
- package/dist/cli.js +6 -599
- package/package.json +8 -49
- package/dist/cli.d.ts +0 -79
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/headline.d.ts +0 -25
- package/dist/headline.d.ts.map +0 -1
- package/dist/headline.js +0 -58
- package/dist/headline.js.map +0 -1
- package/dist/http/auth.d.ts +0 -8
- package/dist/http/auth.d.ts.map +0 -1
- package/dist/http/auth.js +0 -43
- package/dist/http/auth.js.map +0 -1
- package/dist/http/cwd-validator.d.ts +0 -11
- package/dist/http/cwd-validator.d.ts.map +0 -1
- package/dist/http/cwd-validator.js +0 -31
- package/dist/http/cwd-validator.js.map +0 -1
- package/dist/http/lifecycle-handlers.d.ts +0 -12
- package/dist/http/lifecycle-handlers.d.ts.map +0 -1
- package/dist/http/lifecycle-handlers.js +0 -87
- package/dist/http/lifecycle-handlers.js.map +0 -1
- package/dist/http/loopback.d.ts +0 -10
- package/dist/http/loopback.d.ts.map +0 -1
- package/dist/http/loopback.js +0 -34
- package/dist/http/loopback.js.map +0 -1
- package/dist/http/project-registry.d.ts +0 -48
- package/dist/http/project-registry.d.ts.map +0 -1
- package/dist/http/project-registry.js +0 -119
- package/dist/http/project-registry.js.map +0 -1
- package/dist/http/session-router.d.ts +0 -33
- package/dist/http/session-router.d.ts.map +0 -1
- package/dist/http/session-router.js +0 -62
- package/dist/http/session-router.js.map +0 -1
- package/dist/http/status-endpoint.d.ts +0 -20
- package/dist/http/status-endpoint.d.ts.map +0 -1
- package/dist/http/status-endpoint.js +0 -85
- package/dist/http/status-endpoint.js.map +0 -1
- package/dist/http/transport.d.ts +0 -14
- package/dist/http/transport.d.ts.map +0 -1
- package/dist/http/transport.js +0 -209
- package/dist/http/transport.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/routing/render-provider-routing-matrix.d.ts +0 -7
- package/dist/routing/render-provider-routing-matrix.d.ts.map +0 -1
- package/dist/routing/render-provider-routing-matrix.js +0 -153
- package/dist/routing/render-provider-routing-matrix.js.map +0 -1
- package/dist/status-cli.d.ts +0 -2
- package/dist/status-cli.d.ts.map +0 -1
- package/dist/status-cli.js +0 -68
- package/dist/status-cli.js.map +0 -1
- package/dist/tools/audit-document.d.ts +0 -23
- package/dist/tools/audit-document.d.ts.map +0 -1
- package/dist/tools/audit-document.js +0 -123
- package/dist/tools/audit-document.js.map +0 -1
- package/dist/tools/batch-response.d.ts +0 -14
- package/dist/tools/batch-response.d.ts.map +0 -1
- package/dist/tools/batch-response.js +0 -42
- package/dist/tools/batch-response.js.map +0 -1
- package/dist/tools/confirm-clarifications.d.ts +0 -15
- package/dist/tools/confirm-clarifications.d.ts.map +0 -1
- package/dist/tools/confirm-clarifications.js +0 -95
- package/dist/tools/confirm-clarifications.js.map +0 -1
- package/dist/tools/debug-task.d.ts +0 -13
- package/dist/tools/debug-task.d.ts.map +0 -1
- package/dist/tools/debug-task.js +0 -63
- package/dist/tools/debug-task.js.map +0 -1
- package/dist/tools/execute-plan.d.ts +0 -12
- package/dist/tools/execute-plan.d.ts.map +0 -1
- package/dist/tools/execute-plan.js +0 -123
- package/dist/tools/execute-plan.js.map +0 -1
- package/dist/tools/review-code.d.ts +0 -17
- package/dist/tools/review-code.d.ts.map +0 -1
- package/dist/tools/review-code.js +0 -108
- package/dist/tools/review-code.js.map +0 -1
- package/dist/tools/shared.d.ts +0 -72
- package/dist/tools/shared.d.ts.map +0 -1
- package/dist/tools/shared.js +0 -160
- package/dist/tools/shared.js.map +0 -1
- package/dist/tools/truncation.d.ts +0 -18
- package/dist/tools/truncation.d.ts.map +0 -1
- package/dist/tools/truncation.js +0 -62
- package/dist/tools/truncation.js.map +0 -1
- package/dist/tools/verify-work.d.ts +0 -12
- package/dist/tools/verify-work.d.ts.map +0 -1
- package/dist/tools/verify-work.js +0 -85
- package/dist/tools/verify-work.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,217 +1,21 @@
|
|
|
1
|
-
# @zhixuan92/multi-model-agent-mcp
|
|
1
|
+
# @zhixuan92/multi-model-agent-mcp — DEPRECATED
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This package has been replaced by **[`@zhixuan92/multi-model-agent`](https://www.npmjs.com/package/@zhixuan92/multi-model-agent)** in 3.0.0.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The 3.0.0 release removes all MCP server support. Use the new standalone HTTP service + client-installable skills instead.
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
Requires Node >= 22 and a config file at `~/.multi-model/config.json`.
|
|
10
|
-
|
|
11
|
-
**1. Create config** — define your two agent slots. Three agent types are supported:
|
|
12
|
-
|
|
13
|
-
| Type | Auth | API key needed? |
|
|
14
|
-
|---|---|---|
|
|
15
|
-
| `claude` | Your existing Claude Code / Claude subscription | No — uses local OAuth |
|
|
16
|
-
| `codex` | Your existing Codex subscription (`codex login`) | No — reads `~/.codex/auth.json` |
|
|
17
|
-
| `openai-compatible` | Any OpenAI-compatible API (GPT, MiniMax, DeepSeek, Groq, local vLLM) | Yes — `apiKeyEnv` or `apiKey` |
|
|
18
|
-
|
|
19
|
-
**Example — Claude + Codex (no API keys):**
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
mkdir -p ~/.multi-model && cat > ~/.multi-model/config.json << 'EOF'
|
|
23
|
-
{
|
|
24
|
-
"agents": {
|
|
25
|
-
"standard": { "type": "codex", "model": "codex-mini-latest" },
|
|
26
|
-
"complex": { "type": "claude", "model": "claude-sonnet-4-20250514" }
|
|
27
|
-
},
|
|
28
|
-
"defaults": { "timeoutMs": 1800000, "maxCostUSD": 10, "tools": "full" }
|
|
29
|
-
}
|
|
30
|
-
EOF
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**Example — OpenAI-compatible endpoints (API keys required):**
|
|
7
|
+
## Migration
|
|
34
8
|
|
|
35
9
|
```bash
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"agents": {
|
|
39
|
-
"standard": {
|
|
40
|
-
"type": "openai-compatible",
|
|
41
|
-
"model": "MiniMax-M2",
|
|
42
|
-
"baseUrl": "https://api.minimax.io/v1",
|
|
43
|
-
"apiKeyEnv": "MINIMAX_API_KEY"
|
|
44
|
-
},
|
|
45
|
-
"complex": {
|
|
46
|
-
"type": "openai-compatible",
|
|
47
|
-
"model": "gpt-5",
|
|
48
|
-
"baseUrl": "https://api.openai.com/v1",
|
|
49
|
-
"apiKeyEnv": "OPENAI_API_KEY"
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"defaults": { "timeoutMs": 1800000, "maxCostUSD": 10, "tools": "full", "parentModel": "claude-opus-4-6" }
|
|
53
|
-
}
|
|
54
|
-
EOF
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
> **`parentModel`** (optional): When set, headlines show `$Y saved vs model (Zx ROI)`. When omitted, headlines show `$X actual`.
|
|
58
|
-
|
|
59
|
-
Mix and match freely — e.g., `claude` for complex + `openai-compatible` for standard.
|
|
60
|
-
|
|
61
|
-
**2. Register the MCP server:**
|
|
10
|
+
npm uninstall -g @zhixuan92/multi-model-agent-mcp
|
|
11
|
+
npm install -g @zhixuan92/multi-model-agent
|
|
62
12
|
|
|
63
|
-
|
|
64
|
-
#
|
|
65
|
-
claude mcp add multi-model-agent -s user \
|
|
66
|
-
-- npx -y @zhixuan92/multi-model-agent-mcp serve
|
|
67
|
-
|
|
68
|
-
# OpenAI-compatible agents (pass API keys):
|
|
69
|
-
claude mcp add multi-model-agent -s user \
|
|
70
|
-
-e MINIMAX_API_KEY=... -e OPENAI_API_KEY=... \
|
|
71
|
-
-- npx -y @zhixuan92/multi-model-agent-mcp serve
|
|
13
|
+
mmagent serve # start the daemon
|
|
14
|
+
mmagent install-skill # install skills for your AI client
|
|
72
15
|
```
|
|
73
16
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
For Codex CLI, Claude Desktop, and Cursor setup, see the [full guide](https://github.com/zhixuan312/multi-model-agent#quick-start).
|
|
77
|
-
|
|
78
|
-
## What you get
|
|
79
|
-
|
|
80
|
-
| Tool | What it does |
|
|
81
|
-
|---|---|
|
|
82
|
-
| `delegate_tasks` | Dispatch tasks in parallel with minimal input: `prompt` plus optional `agentType`, `filePaths`, `done`, and `contextBlockIds`. The MCP interprets your request and infers missing details — if confused, it returns a proposed interpretation for confirmation. |
|
|
83
|
-
| `audit_document` | Audit docs/files for issues — parallel per file. Accepts `contextBlockIds` for delta audits (round 2+). |
|
|
84
|
-
| `review_code` | Code review with spec + quality pipeline — parallel per file. Accepts `contextBlockIds` for diff-scoped/delta reviews. |
|
|
85
|
-
| `verify_work` | Verify work against a checklist — parallel per file. Accepts `contextBlockIds` for shared context. |
|
|
86
|
-
| `debug_task` | Hypothesis-driven debugging with file context. Accepts `contextBlockIds` for shared context. |
|
|
87
|
-
| `execute_plan` | Execute tasks from a plan document — worker reads plan files, finds matching task by descriptor, implements it. Multiple tasks run in parallel. |
|
|
88
|
-
| `register_context_block` | Store reusable context for later tasks |
|
|
89
|
-
| `retry_tasks` | Re-run specific tasks from a previous batch |
|
|
90
|
-
| `get_batch_slice` | Fetch output or telemetry from a previous batch |
|
|
91
|
-
| `confirm_clarifications` | Resume a clarification set by confirming or editing proposed interpretations |
|
|
92
|
-
|
|
93
|
-
## Diagnostic logging
|
|
94
|
-
|
|
95
|
-
Diagnostic logging is OFF by default.
|
|
96
|
-
|
|
97
|
-
It stays disabled when the `diagnostics` block is absent or when `diagnostics.log` is `false` in `~/.multi-model/config.json`.
|
|
98
|
-
|
|
99
|
-
To capture a crash/disconnect log to send us, add a `diagnostics` block to your config.
|
|
100
|
-
|
|
101
|
-
Minimal example:
|
|
102
|
-
|
|
103
|
-
```json
|
|
104
|
-
{
|
|
105
|
-
"diagnostics": { "log": true }
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Full config shape example:
|
|
110
|
-
|
|
111
|
-
```json
|
|
112
|
-
{
|
|
113
|
-
"agents": {
|
|
114
|
-
"standard": { "type": "codex", "model": "codex-mini-latest" },
|
|
115
|
-
"complex": { "type": "claude", "model": "claude-sonnet-4-20250514" }
|
|
116
|
-
},
|
|
117
|
-
"defaults": {
|
|
118
|
-
"timeoutMs": 1800000,
|
|
119
|
-
"maxCostUSD": 10,
|
|
120
|
-
"tools": "full"
|
|
121
|
-
},
|
|
122
|
-
"diagnostics": {
|
|
123
|
-
"log": true,
|
|
124
|
-
"logDir": "/some/path"
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
`diagnostics.logDir` is optional; when omitted, logs default to `~/.multi-model/logs/`.
|
|
130
|
-
|
|
131
|
-
When enabled, the server appends JSONL records to `mcp-YYYY-MM-DD.jsonl` in append mode.
|
|
132
|
-
|
|
133
|
-
Only crash/disconnect diagnostic events are logged: `startup`, `request_start`, `request_complete`, `shutdown`, and `error`. This is a crash-diagnosis log, not a progress feed.
|
|
134
|
-
|
|
135
|
-
## Setup & Configuration
|
|
136
|
-
|
|
137
|
-
See the full setup guide with config examples, client-specific instructions, and auth details:
|
|
138
|
-
|
|
139
|
-
→ **[github.com/zhixuan312/multi-model-agent](https://github.com/zhixuan312/multi-model-agent#quick-start)**
|
|
140
|
-
|
|
141
|
-
## Running as an HTTP daemon
|
|
142
|
-
|
|
143
|
-
The default transport is stdio — Claude Code spawns one `mmagent` process per session. When the Claude Code session ends (compaction, `/clear`, exit), the process dies; the next tool call has to start a fresh one.
|
|
144
|
-
|
|
145
|
-
To survive Claude Code lifecycle events, run `mmagent` as a long-running HTTP daemon. Multiple Claude Code sessions can connect to the same daemon (each pointing at its own project directory), and a client reconnect reuses the project's in-memory stores.
|
|
146
|
-
|
|
147
|
-
### Start the daemon
|
|
148
|
-
|
|
149
|
-
Foreground (quickest way to try):
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
mmagent serve --http
|
|
153
|
-
# → http://127.0.0.1:7312
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Background (macOS launchd / Linux systemd): see `scripts/README.md`.
|
|
157
|
-
|
|
158
|
-
### Point Claude Code at the daemon
|
|
159
|
-
|
|
160
|
-
In each project's `.mcp.json`:
|
|
161
|
-
|
|
162
|
-
```jsonc
|
|
163
|
-
{
|
|
164
|
-
"mcpServers": {
|
|
165
|
-
"multi-model-agent": {
|
|
166
|
-
"url": "http://127.0.0.1:7312/?cwd=/absolute/path/to/project"
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Two projects = two `.mcp.json` files, each with a different `?cwd=`.
|
|
173
|
-
|
|
174
|
-
### Auth (optional)
|
|
175
|
-
|
|
176
|
-
For shared development machines:
|
|
177
|
-
|
|
178
|
-
```jsonc
|
|
179
|
-
// ~/.multi-model/config.json
|
|
180
|
-
{
|
|
181
|
-
"transport": {
|
|
182
|
-
"mode": "http",
|
|
183
|
-
"http": { "auth": { "enabled": true } }
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
On startup, `mmagent` generates a random token at `~/.multi-model/runtime/token` (mode 600). Paste it into `.mcp.json`:
|
|
189
|
-
|
|
190
|
-
```jsonc
|
|
191
|
-
{
|
|
192
|
-
"url": "http://127.0.0.1:7312/?cwd=...",
|
|
193
|
-
"headers": { "Authorization": "Bearer <token-from-that-file>" }
|
|
194
|
-
}
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### Check daemon status
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
mmagent status
|
|
201
|
-
# mmagent 2.8.0 · pid 6821 · uptime 3h 24m · http://127.0.0.1:7312
|
|
202
|
-
# Projects (2):
|
|
203
|
-
# /Users/me/project-X 1 sess 7 batches last seen 8s ago
|
|
204
|
-
# /Users/me/project-Y 1 sess 2 batches last seen 4m ago
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
### Upgrades
|
|
208
|
-
|
|
209
|
-
`npm i -g @zhixuan92/multi-model-agent-mcp@latest` writes the new binary but does not restart the running daemon. Restart manually:
|
|
210
|
-
|
|
211
|
-
- **launchd**: `launchctl kickstart -k gui/$(id -u)/com.zhixuan92.mmagent`
|
|
212
|
-
- **systemd**: `systemctl --user restart mmagent`
|
|
213
|
-
- **foreground**: `Ctrl-C` and run `mmagent serve --http` again.
|
|
17
|
+
See the [3.0.0 CHANGELOG](https://github.com/zhixuan312/multi-model-agent/blob/master/CHANGELOG.md#300) for details.
|
|
214
18
|
|
|
215
|
-
##
|
|
19
|
+
## About this version (2.8.1)
|
|
216
20
|
|
|
217
|
-
|
|
21
|
+
`2.8.1` ships a 10-line stub that prints a migration notice and exits with code 1. It does not function as an MCP server. Installing or invoking `mmagent` / `multi-model-agent` from this package will redirect users to the new package.
|