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.
Files changed (3) hide show
  1. package/README.md +4 -3
  2. package/package.json +1 -1
  3. 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-agents",
3
- "version": "0.3.6",
3
+ "version": "0.4.0",
4
4
  "description": "MCP server that wraps AI CLI tools (Claude Code, Gemini CLI, Codex CLI) for use by any MCP client",
5
5
  "type": "module",
6
6
  "bin": {
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 !== false) args.push("-s");
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: true,
50
- description: "Run in sandbox mode (-s flag). Defaults to true.",
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
- if (params.arguments?.[key] != null) {
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);