all-agents-mcp 1.0.0 → 1.2.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/.claude-plugin/marketplace.json +23 -0
- package/.claude-plugin/plugin.json +12 -0
- package/.mcp.json +11 -0
- package/LICENSE +21 -0
- package/README.md +128 -11
- package/commands/models.md +10 -0
- package/commands/status.md +10 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -34
- package/dist/config/loader.js.map +1 -1
- package/dist/config/models.json +53 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/fetch-page.d.ts +4 -0
- package/dist/tools/fetch-page.d.ts.map +1 -0
- package/dist/tools/fetch-page.js +84 -0
- package/dist/tools/fetch-page.js.map +1 -0
- package/hooks/hooks.json +16 -0
- package/package.json +5 -3
- package/scripts/check-setup.sh +54 -0
- package/skills/aa-fetch/SKILL.md +29 -0
- package/skills/agents/SKILL.md +27 -0
- package/skills/ask/SKILL.md +30 -0
- package/skills/ask-all/SKILL.md +26 -0
- package/skills/debug/SKILL.md +34 -0
- package/skills/delegate/SKILL.md +32 -0
- package/skills/review/SKILL.md +35 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "all-agents-mcp",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "Dokkabei97",
|
|
5
|
+
"email": "dokkabei97@gmail.com"
|
|
6
|
+
},
|
|
7
|
+
"metadata": {
|
|
8
|
+
"description": "Multi AI CLI Agent Orchestration — Claude Code, Codex, Gemini CLI, Copilot CLI",
|
|
9
|
+
"version": "1.0.0"
|
|
10
|
+
},
|
|
11
|
+
"plugins": [
|
|
12
|
+
{
|
|
13
|
+
"name": "all-agents-mcp",
|
|
14
|
+
"source": "./",
|
|
15
|
+
"description": "Orchestrate multiple AI CLI agents (Codex, Gemini, Copilot) through a unified MCP interface with 13 tools and 6 skills",
|
|
16
|
+
"version": "1.0.0",
|
|
17
|
+
"category": "development",
|
|
18
|
+
"keywords": ["mcp", "ai", "agents", "orchestration", "multi-agent"],
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"homepage": "https://github.com/Dokkabei97/all-agents-mcp"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "all-agents-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Multi AI CLI Agent Orchestration — Claude Code, Codex, Gemini CLI, Copilot CLI를 하나의 인터페이스로 오케스트레이션합니다.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Dokkabei97",
|
|
7
|
+
"url": "https://github.com/Dokkabei97"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/Dokkabei97/all-agents-mcp",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": ["mcp", "ai", "agents", "orchestration", "multi-agent", "codex", "gemini", "copilot"]
|
|
12
|
+
}
|
package/.mcp.json
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Dokkabei97
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -25,6 +25,22 @@ However, this project was intentionally built as a standalone **MCP server** for
|
|
|
25
25
|
|
|
26
26
|
In **enterprise environments**, teams often share a common `CLAUDE.md` managed at the organization or repository level. Embedding agent orchestration logic into `CLAUDE.md` would conflict with or pollute these shared configurations. By encapsulating the orchestration as an **MCP server**, the multi-agent capability becomes a modular, pluggable extension — completely independent of any existing `CLAUDE.md` setup. This allows teams to adopt cross-agent workflows without modifying their shared development guidelines.
|
|
27
27
|
|
|
28
|
+
## Safe by Design — No OAuth Token Hijacking
|
|
29
|
+
|
|
30
|
+
Some multi-agent tools work by extracting OAuth tokens from other AI services and calling their APIs directly. This approach (used by projects like [OpenCode](https://github.com/nicepkg/OpenCode)) violates the terms of service of those platforms and can result in **account suspension or permanent bans**.
|
|
31
|
+
|
|
32
|
+
**all-agents-mcp takes a fundamentally different approach.** It invokes each agent's **official CLI binary** (`claude`, `codex`, `gemini`, `copilot`) as a child process — exactly the same way a human would use them in a terminal. No tokens are extracted, no APIs are called behind the scenes, and no authentication is bypassed.
|
|
33
|
+
|
|
34
|
+
| | all-agents-mcp | OAuth token hijacking |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| **How it works** | Calls official CLI commands directly | Extracts tokens from browser/config and calls APIs |
|
|
37
|
+
| **Authentication** | Uses each CLI's own auth flow | Steals OAuth tokens from other services |
|
|
38
|
+
| **ToS compliance** | Fully compliant | Violates platform terms of service |
|
|
39
|
+
| **Account risk** | None | Suspension or permanent ban |
|
|
40
|
+
| **Billing** | Normal CLI usage billing | Unpredictable — may trigger abuse detection |
|
|
41
|
+
|
|
42
|
+
> Each CLI agent manages its own authentication, billing, and rate limits. all-agents-mcp is simply a process orchestrator — it doesn't touch your credentials.
|
|
43
|
+
|
|
28
44
|
## Features
|
|
29
45
|
|
|
30
46
|
- **Single-agent queries** — Ask a specific agent with `ask_agent`
|
|
@@ -50,25 +66,68 @@ In **enterprise environments**, teams often share a common `CLAUDE.md` managed a
|
|
|
50
66
|
|
|
51
67
|
## Installation
|
|
52
68
|
|
|
53
|
-
###
|
|
69
|
+
### Claude Code
|
|
70
|
+
|
|
71
|
+
#### As a Plugin (recommended)
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# 1. Add marketplace (includes all Dokkabei97 plugins)
|
|
75
|
+
/plugin marketplace add Dokkabei97/claude-plugins
|
|
76
|
+
|
|
77
|
+
# 2. Install plugin
|
|
78
|
+
/plugin install all-agents-mcp
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> You can also add the plugin repository directly: `/plugin marketplace add Dokkabei97/all-agents-mcp`
|
|
82
|
+
|
|
83
|
+
This installs all-agents-mcp as a Claude Code plugin, giving you:
|
|
84
|
+
- 8 skills (`/all-agents-mcp:ask`, `/all-agents-mcp:ask-all`, `/all-agents-mcp:delegate`, `/all-agents-mcp:review`, `/all-agents-mcp:debug`, `/all-agents-mcp:agents`, `/all-agents-mcp:aa-models`, `/all-agents-mcp:aa-fetch`)
|
|
85
|
+
- Automatic MCP server connection via `npx`
|
|
86
|
+
- Session start health checks
|
|
87
|
+
|
|
88
|
+
#### As MCP Server
|
|
54
89
|
|
|
55
90
|
```bash
|
|
56
91
|
claude mcp add all-agents-mcp -- npx -y all-agents-mcp
|
|
57
92
|
```
|
|
58
93
|
|
|
59
|
-
|
|
94
|
+
Or manually add to `~/.claude.json`:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"mcpServers": {
|
|
99
|
+
"all-agents-mcp": {
|
|
100
|
+
"command": "npx",
|
|
101
|
+
"args": ["-y", "all-agents-mcp"]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Codex CLI
|
|
60
108
|
|
|
61
109
|
```bash
|
|
62
|
-
|
|
63
|
-
cd all-agents-mcp
|
|
64
|
-
npm install
|
|
65
|
-
npm run build
|
|
66
|
-
claude mcp add all-agents-mcp -- node /path/to/all-agents-mcp/dist/index.js
|
|
110
|
+
codex mcp add all-agents-mcp -- npx -y all-agents-mcp
|
|
67
111
|
```
|
|
68
112
|
|
|
69
|
-
|
|
113
|
+
Or manually add to `~/.codex/config.toml`:
|
|
70
114
|
|
|
71
|
-
|
|
115
|
+
```toml
|
|
116
|
+
[mcp_servers.all-agents-mcp]
|
|
117
|
+
command = "npx"
|
|
118
|
+
args = ["-y", "all-agents-mcp"]
|
|
119
|
+
|
|
120
|
+
[mcp_servers.all-agents-mcp.env]
|
|
121
|
+
AA_MCP_LOG_LEVEL = "warn"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Gemini CLI
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
gemini mcp add all-agents-mcp npx -y all-agents-mcp
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Or manually add to `~/.gemini/settings.json`:
|
|
72
131
|
|
|
73
132
|
```json
|
|
74
133
|
{
|
|
@@ -81,7 +140,59 @@ Add to your Claude Code MCP settings (`~/.claude.json`):
|
|
|
81
140
|
}
|
|
82
141
|
```
|
|
83
142
|
|
|
84
|
-
|
|
143
|
+
### Copilot CLI
|
|
144
|
+
|
|
145
|
+
Add to `~/.copilot/mcp-config.json`:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"servers": [
|
|
150
|
+
{
|
|
151
|
+
"name": "all-agents-mcp",
|
|
152
|
+
"type": "stdio",
|
|
153
|
+
"command": "npx",
|
|
154
|
+
"args": ["-y", "all-agents-mcp"]
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### From Source
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
git clone https://github.com/Dokkabei97/all-agents-mcp.git
|
|
164
|
+
cd all-agents-mcp
|
|
165
|
+
npm install
|
|
166
|
+
npm run build
|
|
167
|
+
|
|
168
|
+
# Claude Code
|
|
169
|
+
claude mcp add all-agents-mcp -- node /path/to/all-agents-mcp/dist/index.js
|
|
170
|
+
|
|
171
|
+
# Codex
|
|
172
|
+
codex mcp add all-agents-mcp -- node /path/to/all-agents-mcp/dist/index.js
|
|
173
|
+
|
|
174
|
+
# Gemini CLI
|
|
175
|
+
gemini mcp add all-agents-mcp node /path/to/all-agents-mcp/dist/index.js
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Plugin Skills
|
|
179
|
+
|
|
180
|
+
When installed as a Claude Code plugin, the following skills are available:
|
|
181
|
+
|
|
182
|
+
### Skills
|
|
183
|
+
|
|
184
|
+
| Skill | Usage | Description |
|
|
185
|
+
|-------|-------|-------------|
|
|
186
|
+
| `ask` | `/all-agents-mcp:ask codex <question>` | Ask a specific agent a question |
|
|
187
|
+
| `ask-all` | `/all-agents-mcp:ask-all <question>` | Ask all agents in parallel and compare |
|
|
188
|
+
| `delegate` | `/all-agents-mcp:delegate <task>` | Auto-analyze complexity and route to agent(s) |
|
|
189
|
+
| `review` | `/all-agents-mcp:review codex [focus]` | Code review by an external agent |
|
|
190
|
+
| `debug` | `/all-agents-mcp:debug gemini <error>` | Debug an error with an external agent |
|
|
191
|
+
| `agents` | `/all-agents-mcp:agents` | Show all agents status and health |
|
|
192
|
+
| `aa-models` | `/all-agents-mcp:aa-models` | List available models for all agents |
|
|
193
|
+
| `aa-fetch` | `/all-agents-mcp:aa-fetch <url> [instruction]` | Fetch web page content via Gemini CLI |
|
|
194
|
+
|
|
195
|
+
## Tools (14)
|
|
85
196
|
|
|
86
197
|
### Core Tools
|
|
87
198
|
|
|
@@ -108,6 +219,12 @@ Add to your Claude Code MCP settings (`~/.claude.json`):
|
|
|
108
219
|
| `generate_test` | Generate tests with optional framework selection (`jest`, `vitest`, `pytest`, `kotest`). |
|
|
109
220
|
| `refactor_with` | Refactor code with a goal: `performance`, `readability`, or `modularity`. |
|
|
110
221
|
|
|
222
|
+
### Web Tools
|
|
223
|
+
|
|
224
|
+
| Tool | Description |
|
|
225
|
+
|------|-------------|
|
|
226
|
+
| `fetch_page` | Fetch web page content via Gemini CLI's native browsing. Retrieve and extract content from any URL. |
|
|
227
|
+
|
|
111
228
|
### Info Tools
|
|
112
229
|
|
|
113
230
|
| Tool | Description |
|
|
@@ -229,7 +346,7 @@ all-agents-mcp/
|
|
|
229
346
|
│ │ ├── copilot-agent.ts
|
|
230
347
|
│ │ └── registry.ts # Detection, registration, recursion guard
|
|
231
348
|
│ │
|
|
232
|
-
│ ├── tools/ #
|
|
349
|
+
│ ├── tools/ # 14 MCP tool definitions
|
|
233
350
|
│ ├── orchestrator/ # Parallel execution, complexity analysis, verification
|
|
234
351
|
│ ├── session/ # File-based session storage
|
|
235
352
|
│ ├── resources/ # 3 MCP resource definitions
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: models
|
|
3
|
+
description: List available models for all AI agents
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
List all available models across all AI agents.
|
|
7
|
+
|
|
8
|
+
Call the MCP tool `mcp__all-agents-mcp__list_models` with no parameters to get models for all agents.
|
|
9
|
+
|
|
10
|
+
Display the result showing each agent's available models and their defaults.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: status
|
|
3
|
+
description: Quick health check of all AI agents
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Check the health status of all available AI agents.
|
|
7
|
+
|
|
8
|
+
Call the MCP tool `mcp__all-agents-mcp__agent_health` with no parameters to check all agents.
|
|
9
|
+
|
|
10
|
+
Display the result showing each agent's availability, authentication status, and latency.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAQtE,QAAA,MAAM,SAAS,mDAAoD,CAAC;AAEpE,KAAK,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,UAAU,YAAY;IACrB,MAAM,EAAE,OAAO,CACd,MAAM,CACL,OAAO,EACP;QACC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC9B,CACD,CACD,CAAC;CACF;AASD,wBAAgB,gBAAgB,CAC/B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACnD,YAAY,CAiCd;AAED,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,YAAY,CAa/F;AAID,wBAAgB,gBAAgB,IAAI,YAAY,CAI/C;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAGjD"}
|
package/dist/config/loader.js
CHANGED
|
@@ -1,41 +1,10 @@
|
|
|
1
|
+
import defaultModels from "./models.json";
|
|
1
2
|
import { MODELS_CONFIG_SCHEMA } from "./schema.js";
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
+
* Default model configuration loaded from models.json.
|
|
4
5
|
* Override at runtime via AA_MCP_{AGENT}_{FIELD} environment variables.
|
|
5
6
|
*/
|
|
6
|
-
const DEFAULT_CONFIG =
|
|
7
|
-
agents: {
|
|
8
|
-
claude: {
|
|
9
|
-
default: "claude-opus-4.6",
|
|
10
|
-
models: ["claude-opus-4.6", "claude-sonnet-4.5", "claude-haiku-4.5"],
|
|
11
|
-
},
|
|
12
|
-
codex: {
|
|
13
|
-
default: "gpt-5.3-codex-spark",
|
|
14
|
-
defaultAnalysisLevel: "xhigh",
|
|
15
|
-
models: ["gpt-5.3-codex-spark", "gpt-5.3-codex", "gpt-5.2-codex-max", "gpt-5.2-codex"],
|
|
16
|
-
},
|
|
17
|
-
gemini: {
|
|
18
|
-
default: "gemini-3-pro-preview",
|
|
19
|
-
models: [
|
|
20
|
-
"gemini-3-pro-preview",
|
|
21
|
-
"gemini-3-flash-preview",
|
|
22
|
-
"gemini-2.5-pro",
|
|
23
|
-
"gemini-2.5-flash",
|
|
24
|
-
],
|
|
25
|
-
},
|
|
26
|
-
copilot: {
|
|
27
|
-
default: "claude-sonnet-4.5",
|
|
28
|
-
models: [
|
|
29
|
-
"claude-opus-4.5",
|
|
30
|
-
"claude-sonnet-4.5",
|
|
31
|
-
"claude-haiku-4.5",
|
|
32
|
-
"gpt-5.2-codex",
|
|
33
|
-
"gemini-3-pro-preview",
|
|
34
|
-
"gemini-3-flash-preview",
|
|
35
|
-
],
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
};
|
|
7
|
+
const DEFAULT_CONFIG = MODELS_CONFIG_SCHEMA.parse(defaultModels);
|
|
39
8
|
const AGENT_IDS = ["claude", "codex", "gemini", "copilot"];
|
|
40
9
|
function parseModelsList(value) {
|
|
41
10
|
return value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAqB,MAAM,aAAa,CAAC;AAEtE;;;GAGG;AACH,MAAM,cAAc,GAAiB
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agents": {
|
|
3
|
+
"claude": {
|
|
4
|
+
"default": "claude-opus-4.6",
|
|
5
|
+
"models": ["claude-opus-4.6", "claude-sonnet-4.6", "claude-haiku-4.5"]
|
|
6
|
+
},
|
|
7
|
+
"codex": {
|
|
8
|
+
"default": "gpt-5.3-codex-spark",
|
|
9
|
+
"defaultAnalysisLevel": "xhigh",
|
|
10
|
+
"models": [
|
|
11
|
+
"gpt-5.3-codex-spark",
|
|
12
|
+
"gpt-5.3-codex",
|
|
13
|
+
"gpt-5.2-codex",
|
|
14
|
+
"gpt-5.2",
|
|
15
|
+
"gpt-5.1-codex-max",
|
|
16
|
+
"gpt-5.1-codex-mini"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"gemini": {
|
|
20
|
+
"default": "gemini-3-pro-preview",
|
|
21
|
+
"models": [
|
|
22
|
+
"gemini-3-pro-preview",
|
|
23
|
+
"gemini-3-flash-preview",
|
|
24
|
+
"gemini-2.5-pro",
|
|
25
|
+
"gemini-2.5-flash",
|
|
26
|
+
"gemini-2.5-flash-lite"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"copilot": {
|
|
30
|
+
"default": "claude-sonnet-4.6",
|
|
31
|
+
"models": [
|
|
32
|
+
"claude-opus-4.6",
|
|
33
|
+
"claude-opus-4.6-fast",
|
|
34
|
+
"claude-opus-4.5",
|
|
35
|
+
"claude-sonnet-4.6",
|
|
36
|
+
"claude-sonnet-4.5",
|
|
37
|
+
"claude-sonnet-4.0",
|
|
38
|
+
"claude-haiku-4.5",
|
|
39
|
+
"gpt-5.3-codex",
|
|
40
|
+
"gpt-5.2-codex",
|
|
41
|
+
"gpt-5.2",
|
|
42
|
+
"gpt-5.1-codex-max",
|
|
43
|
+
"gpt-5.1-codex",
|
|
44
|
+
"gpt-5.1-codex-mini",
|
|
45
|
+
"gpt-5.1",
|
|
46
|
+
"gpt-5-mini",
|
|
47
|
+
"gpt-4.1",
|
|
48
|
+
"gemini-3-pro-preview",
|
|
49
|
+
"gemini-3-flash-preview"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBpE,wBAAgB,YAAY,IAAI,SAAS,CA4BxC"}
|
package/dist/server.js
CHANGED
|
@@ -7,6 +7,7 @@ import { registerCollaborateTool } from "./tools/collaborate.js";
|
|
|
7
7
|
import { registerDebugWithTool } from "./tools/debug-with.js";
|
|
8
8
|
import { registerDelegateTaskTool } from "./tools/delegate.js";
|
|
9
9
|
import { registerExplainWithTool } from "./tools/explain-with.js";
|
|
10
|
+
import { registerFetchPageTool } from "./tools/fetch-page.js";
|
|
10
11
|
import { registerGenerateTestTool } from "./tools/generate-test.js";
|
|
11
12
|
import { registerListAgentsTool } from "./tools/list-agents.js";
|
|
12
13
|
import { registerListModelsTool } from "./tools/list-models.js";
|
|
@@ -22,7 +23,7 @@ export function createServer() {
|
|
|
22
23
|
name: "all-agents-mcp",
|
|
23
24
|
version: "1.0.0",
|
|
24
25
|
});
|
|
25
|
-
// Register
|
|
26
|
+
// Register 14 tools
|
|
26
27
|
registerAskAgentTool(server);
|
|
27
28
|
registerAskAllTool(server);
|
|
28
29
|
registerDelegateTaskTool(server);
|
|
@@ -31,6 +32,7 @@ export function createServer() {
|
|
|
31
32
|
registerReviewCodeTool(server);
|
|
32
33
|
registerDebugWithTool(server);
|
|
33
34
|
registerExplainWithTool(server);
|
|
35
|
+
registerFetchPageTool(server);
|
|
34
36
|
registerGenerateTestTool(server);
|
|
35
37
|
registerRefactorWithTool(server);
|
|
36
38
|
registerListAgentsTool(server);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,QAAQ;AACR,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,YAAY;AACZ,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,MAAM,UAAU,YAAY;IAC3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC5B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;KAChB,CAAC,CAAC;IAEH,oBAAoB;IACpB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,uBAAuB;IACvB,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,QAAQ;AACR,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,YAAY;AACZ,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,MAAM,UAAU,YAAY;IAC3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC5B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;KAChB,CAAC,CAAC;IAEH,oBAAoB;IACpB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,uBAAuB;IACvB,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare function buildFetchPrompt(url: string, instruction?: string): string;
|
|
3
|
+
export declare function registerFetchPageTool(server: McpServer): void;
|
|
4
|
+
//# sourceMappingURL=fetch-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-page.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAqB1E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6D7D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getAgent } from "../agents/registry.js";
|
|
3
|
+
import { addEntry, getOrCreateActiveSession } from "../session/store.js";
|
|
4
|
+
const DEFAULT_MODEL = "gemini-3-flash-preview";
|
|
5
|
+
const DEFAULT_TIMEOUT = 120000;
|
|
6
|
+
const SCHEMA = {
|
|
7
|
+
url: z.string().url().describe("Target URL to fetch content from"),
|
|
8
|
+
instruction: z
|
|
9
|
+
.string()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Optional extraction/focus instruction (e.g. 'extract only the API table')"),
|
|
12
|
+
model: z.string().optional().describe(`Gemini model to use (default: ${DEFAULT_MODEL})`),
|
|
13
|
+
timeout: z.number().optional().describe(`Timeout in milliseconds (default: ${DEFAULT_TIMEOUT})`),
|
|
14
|
+
};
|
|
15
|
+
export function buildFetchPrompt(url, instruction) {
|
|
16
|
+
const lines = [
|
|
17
|
+
"Fetch the content from the following URL and return it:",
|
|
18
|
+
"",
|
|
19
|
+
`URL: ${url}`,
|
|
20
|
+
"",
|
|
21
|
+
"Instructions:",
|
|
22
|
+
"- Access the URL and retrieve the full page content",
|
|
23
|
+
"- Convert the content to well-formatted Markdown",
|
|
24
|
+
"- Preserve code blocks, tables, lists, and headings",
|
|
25
|
+
"- Remove navigation, ads, footers, and other non-content elements",
|
|
26
|
+
"- If the page cannot be accessed, explain the error clearly",
|
|
27
|
+
];
|
|
28
|
+
if (instruction) {
|
|
29
|
+
lines.push("", `Additional focus: ${instruction}`);
|
|
30
|
+
}
|
|
31
|
+
lines.push("", "Return ONLY the extracted content, no preamble or commentary.");
|
|
32
|
+
return lines.join("\n");
|
|
33
|
+
}
|
|
34
|
+
export function registerFetchPageTool(server) {
|
|
35
|
+
server.tool("fetch_page", "Fetch web page content via Gemini CLI. Gemini has native web browsing — use this to retrieve and extract content from URLs.", SCHEMA, async (params) => {
|
|
36
|
+
const agent = getAgent("gemini");
|
|
37
|
+
if (!agent) {
|
|
38
|
+
return {
|
|
39
|
+
content: [
|
|
40
|
+
{
|
|
41
|
+
type: "text",
|
|
42
|
+
text: "Gemini agent is not available. It may not be installed or is the current caller.",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const available = await agent.isAvailable();
|
|
48
|
+
if (!available) {
|
|
49
|
+
return {
|
|
50
|
+
content: [
|
|
51
|
+
{
|
|
52
|
+
type: "text",
|
|
53
|
+
text: "Gemini CLI is not installed or not in PATH. Install it with: npm i -g @google/gemini-cli",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const model = params.model ?? DEFAULT_MODEL;
|
|
59
|
+
const timeout = params.timeout ?? DEFAULT_TIMEOUT;
|
|
60
|
+
const prompt = buildFetchPrompt(params.url, params.instruction);
|
|
61
|
+
const response = await agent.execute({ prompt, model, timeout });
|
|
62
|
+
const sessionId = getOrCreateActiveSession();
|
|
63
|
+
addEntry(sessionId, {
|
|
64
|
+
tool: "fetch_page",
|
|
65
|
+
agent: response.agent,
|
|
66
|
+
model: response.model,
|
|
67
|
+
prompt: `[fetch] ${params.url}`,
|
|
68
|
+
response: response.content,
|
|
69
|
+
durationMs: response.durationMs,
|
|
70
|
+
exitCode: response.exitCode,
|
|
71
|
+
error: response.error,
|
|
72
|
+
});
|
|
73
|
+
const header = `**Fetched**: ${params.url}\n**Model**: ${response.model} — ${response.durationMs}ms`;
|
|
74
|
+
if (response.error) {
|
|
75
|
+
return {
|
|
76
|
+
content: [{ type: "text", text: `${header}\n\nError: ${response.error}` }],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
content: [{ type: "text", text: `${header}\n\n${response.content}` }],
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=fetch-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"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"}
|
package/hooks/hooks.json
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "all-agents-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "All Agents MCP - Multi AI CLI Agent Orchestration Server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,9 +20,11 @@
|
|
|
20
20
|
"dev": "tsc --watch",
|
|
21
21
|
"start": "node dist/index.js",
|
|
22
22
|
"lint": "biome check --write .",
|
|
23
|
+
"lint:check": "biome check .",
|
|
23
24
|
"test": "vitest run",
|
|
24
25
|
"test:watch": "vitest",
|
|
25
|
-
"prepare": "npm run build"
|
|
26
|
+
"prepare": "npm run build",
|
|
27
|
+
"prepublishOnly": "npm run lint:check && npm test"
|
|
26
28
|
},
|
|
27
29
|
"dependencies": {
|
|
28
30
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
@@ -39,5 +41,5 @@
|
|
|
39
41
|
"engines": {
|
|
40
42
|
"node": ">=22.0.0"
|
|
41
43
|
},
|
|
42
|
-
"files": ["dist"]
|
|
44
|
+
"files": ["dist", ".claude-plugin", ".mcp.json", "skills", "commands", "hooks", "scripts"]
|
|
43
45
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# All-Agents-MCP: Setup verification script
|
|
3
|
+
# Runs on SessionStart to verify prerequisites
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
warnings=()
|
|
8
|
+
info=()
|
|
9
|
+
|
|
10
|
+
# Check Node.js version
|
|
11
|
+
if command -v node &>/dev/null; then
|
|
12
|
+
node_version=$(node -v | sed 's/v//')
|
|
13
|
+
major_version=$(echo "$node_version" | cut -d. -f1)
|
|
14
|
+
if [ "$major_version" -lt 22 ]; then
|
|
15
|
+
warnings+=("Node.js $node_version detected — version 22+ is required for all-agents-mcp")
|
|
16
|
+
fi
|
|
17
|
+
else
|
|
18
|
+
warnings+=("Node.js not found — required for all-agents-mcp MCP server")
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# Check AI CLI agents
|
|
22
|
+
agents_found=0
|
|
23
|
+
agent_list=()
|
|
24
|
+
|
|
25
|
+
if command -v codex &>/dev/null; then
|
|
26
|
+
agents_found=$((agents_found + 1))
|
|
27
|
+
agent_list+=("codex")
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
if command -v gemini &>/dev/null; then
|
|
31
|
+
agents_found=$((agents_found + 1))
|
|
32
|
+
agent_list+=("gemini")
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
if command -v copilot &>/dev/null; then
|
|
36
|
+
agents_found=$((agents_found + 1))
|
|
37
|
+
agent_list+=("copilot")
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
if [ "$agents_found" -eq 0 ]; then
|
|
41
|
+
warnings+=("No AI CLI agents found. Install at least one: codex, gemini, or copilot")
|
|
42
|
+
else
|
|
43
|
+
info+=("all-agents-mcp: ${agents_found} agent(s) available — ${agent_list[*]}")
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# Output warnings
|
|
47
|
+
for w in "${warnings[@]+"${warnings[@]}"}"; do
|
|
48
|
+
[ -n "$w" ] && echo "[all-agents-mcp] WARNING: $w"
|
|
49
|
+
done
|
|
50
|
+
|
|
51
|
+
# Output info
|
|
52
|
+
for i in "${info[@]+"${info[@]}"}"; do
|
|
53
|
+
[ -n "$i" ] && echo "[all-agents-mcp] $i"
|
|
54
|
+
done
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aa-fetch
|
|
3
|
+
description: Fetch web page content via Gemini CLI
|
|
4
|
+
argument-hint: <url> [instruction]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Fetch Page
|
|
8
|
+
|
|
9
|
+
User wants to fetch and extract content from a web URL using Gemini CLI's native browsing capability.
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
1. Parse the user's input to extract the **URL** and optional **instruction**.
|
|
14
|
+
- The first argument is the URL (must be a valid URL)
|
|
15
|
+
- Everything after the URL is the extraction instruction (optional)
|
|
16
|
+
- If no URL is provided, ask the user for the target URL
|
|
17
|
+
|
|
18
|
+
2. Call the MCP tool `mcp__all-agents-mcp__fetch_page` with:
|
|
19
|
+
- `url`: the target URL
|
|
20
|
+
- `instruction` (optional): extraction/focus instruction from the user
|
|
21
|
+
- `model` (optional): defaults to `gemini-3-flash-preview` for speed
|
|
22
|
+
|
|
23
|
+
3. Display the response as-is. The tool returns formatted markdown with the fetched content.
|
|
24
|
+
|
|
25
|
+
## Examples
|
|
26
|
+
|
|
27
|
+
- `/all-agents-mcp:aa-fetch https://docs.example.com/api`
|
|
28
|
+
- `/all-agents-mcp:aa-fetch https://example.com/pricing extract only the pricing table`
|
|
29
|
+
- `/all-agents-mcp:aa-fetch https://github.com/repo/README.md summarize the key features`
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agents
|
|
3
|
+
description: Show all AI agents status — availability, health, and configuration
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agents Status
|
|
7
|
+
|
|
8
|
+
User wants to see the status of all available AI agents.
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
1. Call both MCP tools in sequence:
|
|
13
|
+
|
|
14
|
+
a. First, call `mcp__all-agents-mcp__list_agents` (no parameters) to get agent list and availability.
|
|
15
|
+
|
|
16
|
+
b. Then, call `mcp__all-agents-mcp__agent_health` (no parameters) to get health status including authentication and latency.
|
|
17
|
+
|
|
18
|
+
2. Combine and present the results in a unified view showing:
|
|
19
|
+
- Agent name and ID
|
|
20
|
+
- Availability status
|
|
21
|
+
- Authentication status
|
|
22
|
+
- Latency
|
|
23
|
+
- Default model and available model count
|
|
24
|
+
|
|
25
|
+
## Example
|
|
26
|
+
|
|
27
|
+
- `/all-agents-mcp:agents` — show all agents and their current status
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ask
|
|
3
|
+
description: Ask a specific AI agent (codex, gemini, copilot) a question
|
|
4
|
+
argument-hint: <agent> <question>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ask Agent
|
|
8
|
+
|
|
9
|
+
User wants to ask a specific AI agent a question.
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
1. Parse the user's input to extract the **agent name** and **question**.
|
|
14
|
+
- The first word after the skill invocation is the agent: `codex`, `gemini`, or `copilot`
|
|
15
|
+
- Everything after the agent name is the question/prompt
|
|
16
|
+
- If no agent is specified, ask the user which agent to use
|
|
17
|
+
|
|
18
|
+
2. Call the MCP tool `mcp__all-agents-mcp__ask_agent` with:
|
|
19
|
+
- `agent`: the target agent ID (`codex`, `gemini`, or `copilot`)
|
|
20
|
+
- `prompt`: the user's question
|
|
21
|
+
- `model` (optional): if the user specifies a model, pass it
|
|
22
|
+
- `context` (optional): if there's relevant code or context in the conversation, include it
|
|
23
|
+
|
|
24
|
+
3. Display the response as-is. The tool returns formatted markdown.
|
|
25
|
+
|
|
26
|
+
## Examples
|
|
27
|
+
|
|
28
|
+
- `/all-agents-mcp:ask codex How do I implement a binary search in Python?`
|
|
29
|
+
- `/all-agents-mcp:ask gemini Explain the difference between async and sync`
|
|
30
|
+
- `/all-agents-mcp:ask copilot Review this function for performance issues`
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ask-all
|
|
3
|
+
description: Ask all available AI agents the same question in parallel and compare responses
|
|
4
|
+
argument-hint: <question>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ask All Agents
|
|
8
|
+
|
|
9
|
+
User wants to get parallel responses from all available AI agents for comparison.
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
1. Parse the user's input to extract the **question**.
|
|
14
|
+
- Everything after the skill invocation is the question/prompt
|
|
15
|
+
- If no question is provided, ask the user what they want to ask
|
|
16
|
+
|
|
17
|
+
2. Call the MCP tool `mcp__all-agents-mcp__ask_all` with:
|
|
18
|
+
- `prompt`: the user's question
|
|
19
|
+
- `context` (optional): if there's relevant code or context in the conversation, include it
|
|
20
|
+
|
|
21
|
+
3. Display the comparison result as-is. The tool returns a formatted markdown comparison table showing each agent's response, duration, and model used.
|
|
22
|
+
|
|
23
|
+
## Examples
|
|
24
|
+
|
|
25
|
+
- `/all-agents-mcp:ask-all How should I structure a REST API for a todo app?`
|
|
26
|
+
- `/all-agents-mcp:ask-all What's the best way to handle errors in TypeScript?`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug
|
|
3
|
+
description: Debug an error using an external AI agent
|
|
4
|
+
argument-hint: <agent> <error message>
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Debug with Agent
|
|
9
|
+
|
|
10
|
+
User wants to debug an error using an external AI agent.
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
1. Parse the user's input to extract:
|
|
15
|
+
- **agent**: the agent to use (`codex`, `gemini`, or `copilot`)
|
|
16
|
+
- **error**: the error message or description
|
|
17
|
+
- If no agent is specified, ask the user which agent to use
|
|
18
|
+
|
|
19
|
+
2. Gather additional context:
|
|
20
|
+
- If there's relevant code in the conversation, include it as `code`
|
|
21
|
+
- If there's a stack trace or logs, include as `context`
|
|
22
|
+
|
|
23
|
+
3. Call the MCP tool `mcp__all-agents-mcp__debug_with` with:
|
|
24
|
+
- `agent`: target agent ID
|
|
25
|
+
- `error`: the error message
|
|
26
|
+
- `code` (optional): relevant code context
|
|
27
|
+
- `context` (optional): stack trace, logs, or other context
|
|
28
|
+
|
|
29
|
+
4. Display the debug analysis as-is. The response includes root cause analysis, fix steps, and prevention recommendations.
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
- `/all-agents-mcp:debug codex TypeError: Cannot read property 'map' of undefined`
|
|
34
|
+
- `/all-agents-mcp:debug gemini ECONNREFUSED when connecting to database`
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: delegate
|
|
3
|
+
description: Delegate a task with automatic complexity analysis — routes to single or parallel agents
|
|
4
|
+
argument-hint: <task description>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Delegate Task
|
|
8
|
+
|
|
9
|
+
User wants to delegate a task with automatic complexity-based routing.
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
1. Parse the user's input to extract the **task description**.
|
|
14
|
+
- Everything after the skill invocation is the task
|
|
15
|
+
- If no task is provided, ask the user what task to delegate
|
|
16
|
+
|
|
17
|
+
2. Call the MCP tool `mcp__all-agents-mcp__delegate_task` with:
|
|
18
|
+
- `task`: the task description
|
|
19
|
+
- `agent` (optional): if the user specifies a preferred agent, pass it
|
|
20
|
+
- `allowParallel`: default `true` — set to `false` only if the user explicitly asks for single-agent execution
|
|
21
|
+
- `context` (optional): include relevant code or context from the conversation
|
|
22
|
+
|
|
23
|
+
3. Display the result as-is. The tool automatically:
|
|
24
|
+
- Analyzes task complexity (simple/complex/large)
|
|
25
|
+
- Routes simple/complex tasks to a single agent
|
|
26
|
+
- Splits large tasks across multiple agents in parallel
|
|
27
|
+
- Returns complexity analysis + agent response(s)
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
- `/all-agents-mcp:delegate Write unit tests for the authentication module`
|
|
32
|
+
- `/all-agents-mcp:delegate Refactor this class to use dependency injection`
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: Request a code review from an external AI agent
|
|
4
|
+
argument-hint: <agent> [focus]
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Code Review
|
|
9
|
+
|
|
10
|
+
User wants an external AI agent to review code.
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
1. Parse the user's input to extract:
|
|
15
|
+
- **agent**: the agent to use (`codex`, `gemini`, or `copilot`)
|
|
16
|
+
- **focus** (optional): `bugs`, `security`, `performance`, or `clarity`
|
|
17
|
+
- If no agent is specified, ask the user which agent to use
|
|
18
|
+
|
|
19
|
+
2. Gather the code to review:
|
|
20
|
+
- If the user referenced a specific file, read it and use as the `code` parameter
|
|
21
|
+
- If code was provided inline in the conversation, use that
|
|
22
|
+
- If no code context is available, ask the user what code to review
|
|
23
|
+
|
|
24
|
+
3. Call the MCP tool `mcp__all-agents-mcp__review_code` with:
|
|
25
|
+
- `agent`: target agent ID
|
|
26
|
+
- `code`: the code content to review
|
|
27
|
+
- `filePath` (optional): the file path for context
|
|
28
|
+
- `focus` (optional): specific review focus area
|
|
29
|
+
|
|
30
|
+
4. Display the review result as-is.
|
|
31
|
+
|
|
32
|
+
## Examples
|
|
33
|
+
|
|
34
|
+
- `/all-agents-mcp:review codex security` — review current code with Codex focusing on security
|
|
35
|
+
- `/all-agents-mcp:review gemini` — general review with Gemini
|