mcp-agents 0.3.6 → 0.4.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 +4 -3
- package/package.json +1 -1
- package/server.js +21 -10
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ npx mcp-agents
|
|
|
24
24
|
# Specific provider
|
|
25
25
|
npx mcp-agents --provider claude
|
|
26
26
|
npx mcp-agents --provider gemini
|
|
27
|
+
npx mcp-agents --provider gemini --sandbox false
|
|
27
28
|
```
|
|
28
29
|
|
|
29
30
|
The server speaks [JSON-RPC over stdio](https://modelcontextprotocol.io/docs/concepts/transports#stdio). It prints `[mcp-agents] ready (provider: <name>)` to stderr when it's listening.
|
|
@@ -50,7 +51,7 @@ Each `--provider` flag maps to a single exposed tool:
|
|
|
50
51
|
| Parameter | Type | Required | Description |
|
|
51
52
|
|-----------|------|----------|-------------|
|
|
52
53
|
| `prompt` | `string` | yes | The prompt to send to Gemini CLI |
|
|
53
|
-
| `sandbox` | `boolean` | no | Run in sandbox mode (`-s` flag) |
|
|
54
|
+
| `sandbox` | `boolean` | no | Run in sandbox mode (`-s` flag, default: false) |
|
|
54
55
|
| `timeout_ms` | `integer` | no | Timeout in ms (default: 120 000) |
|
|
55
56
|
|
|
56
57
|
### `codex` (pass-through)
|
|
@@ -78,7 +79,7 @@ Add entries to your project's `.mcp.json`:
|
|
|
78
79
|
},
|
|
79
80
|
"gemini": {
|
|
80
81
|
"command": "npx",
|
|
81
|
-
"args": ["-y", "mcp-agents@latest", "--provider", "gemini"]
|
|
82
|
+
"args": ["-y", "mcp-agents@latest", "--provider", "gemini", "--sandbox", "false"]
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
}
|
|
@@ -108,7 +109,7 @@ args = ["-y", "mcp-agents", "--provider", "claude"]
|
|
|
108
109
|
|
|
109
110
|
[mcp_servers.gemini]
|
|
110
111
|
command = "npx"
|
|
111
|
-
args = ["-y", "mcp-agents", "--provider", "gemini"]
|
|
112
|
+
args = ["-y", "mcp-agents", "--provider", "gemini", "--sandbox", "false"]
|
|
112
113
|
```
|
|
113
114
|
|
|
114
115
|
Then in a Codex session you can call the `claude_code` or `gemini` tools, which shell out to the respective CLIs.
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -39,15 +39,15 @@ const CLI_BACKENDS = {
|
|
|
39
39
|
description: "Run Gemini CLI (gemini -p) with a prompt.",
|
|
40
40
|
buildArgs: (prompt, opts) => {
|
|
41
41
|
const args = [];
|
|
42
|
-
if (opts.sandbox
|
|
42
|
+
if (opts.sandbox === true) args.push("-s");
|
|
43
43
|
args.push("-p", prompt);
|
|
44
44
|
return args;
|
|
45
45
|
},
|
|
46
46
|
extraProperties: {
|
|
47
47
|
sandbox: {
|
|
48
48
|
type: "boolean",
|
|
49
|
-
default:
|
|
50
|
-
description: "Run in sandbox mode (-s flag). Defaults to
|
|
49
|
+
default: false,
|
|
50
|
+
description: "Run in sandbox mode (-s flag). Defaults to false.",
|
|
51
51
|
},
|
|
52
52
|
},
|
|
53
53
|
},
|
|
@@ -92,20 +92,22 @@ Options:
|
|
|
92
92
|
--provider <name> CLI backend to use (${providers}) [default: codex]
|
|
93
93
|
--model <model> Model to use (codex) [default: gpt-5.3-codex]
|
|
94
94
|
--model_reasoning_effort <e> Reasoning effort (codex) [default: high]
|
|
95
|
+
--sandbox <bool> Gemini sandbox mode (true/false) [default: false]
|
|
95
96
|
--help, -h Show this help message
|
|
96
97
|
--version, -v Show version number`);
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
/**
|
|
100
101
|
* Parse CLI flags from process.argv.
|
|
101
|
-
* Handles --help, --version, --provider, --model, --model_reasoning_effort, and unknown flags.
|
|
102
|
-
* @returns {{ provider: string, model?: string, modelReasoningEffort?: string }}
|
|
102
|
+
* Handles --help, --version, --provider, --model, --model_reasoning_effort, --sandbox, and unknown flags.
|
|
103
|
+
* @returns {{ provider: string, model?: string, modelReasoningEffort?: string, sandbox: boolean }}
|
|
103
104
|
*/
|
|
104
105
|
function parseArgs() {
|
|
105
106
|
const args = process.argv.slice(2);
|
|
106
107
|
let provider = "codex";
|
|
107
108
|
let model;
|
|
108
109
|
let modelReasoningEffort;
|
|
110
|
+
let sandbox = false;
|
|
109
111
|
|
|
110
112
|
for (let i = 0; i < args.length; i++) {
|
|
111
113
|
switch (args[i]) {
|
|
@@ -142,13 +144,20 @@ function parseArgs() {
|
|
|
142
144
|
}
|
|
143
145
|
modelReasoningEffort = args[++i];
|
|
144
146
|
break;
|
|
147
|
+
case "--sandbox":
|
|
148
|
+
if (i + 1 >= args.length) {
|
|
149
|
+
process.stderr.write("error: --sandbox requires a value\n");
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
sandbox = args[++i] === "true";
|
|
153
|
+
break;
|
|
145
154
|
default:
|
|
146
155
|
process.stderr.write(`error: unknown option: ${args[i]}\n`);
|
|
147
156
|
process.exit(1);
|
|
148
157
|
}
|
|
149
158
|
}
|
|
150
159
|
|
|
151
|
-
return { provider, model, modelReasoningEffort };
|
|
160
|
+
return { provider, model, modelReasoningEffort, sandbox };
|
|
152
161
|
}
|
|
153
162
|
|
|
154
163
|
/**
|
|
@@ -235,7 +244,7 @@ function runCodexPassthrough({ model, modelReasoningEffort }) {
|
|
|
235
244
|
// ---------------------------------------------------------------------------
|
|
236
245
|
|
|
237
246
|
async function main() {
|
|
238
|
-
const { provider: providerName, model, modelReasoningEffort } = parseArgs();
|
|
247
|
+
const { provider: providerName, model, modelReasoningEffort, sandbox } = parseArgs();
|
|
239
248
|
const backend = CLI_BACKENDS[providerName];
|
|
240
249
|
|
|
241
250
|
if (!backend) {
|
|
@@ -250,6 +259,10 @@ async function main() {
|
|
|
250
259
|
return;
|
|
251
260
|
}
|
|
252
261
|
|
|
262
|
+
if (backend.extraProperties.sandbox) {
|
|
263
|
+
backend.extraProperties.sandbox.default = sandbox;
|
|
264
|
+
}
|
|
265
|
+
|
|
253
266
|
const server = new Server(
|
|
254
267
|
{ name: "mcp-agents", version: VERSION },
|
|
255
268
|
{ capabilities: { tools: {} } },
|
|
@@ -330,9 +343,7 @@ async function main() {
|
|
|
330
343
|
|
|
331
344
|
const extraOpts = {};
|
|
332
345
|
for (const key of Object.keys(backend.extraProperties)) {
|
|
333
|
-
|
|
334
|
-
extraOpts[key] = params.arguments[key];
|
|
335
|
-
}
|
|
346
|
+
extraOpts[key] = params.arguments?.[key] ?? backend.extraProperties[key].default;
|
|
336
347
|
}
|
|
337
348
|
|
|
338
349
|
const cliArgs = backend.buildArgs(prompt, extraOpts);
|