converse-mcp-server 3.5.0 → 3.6.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 +5 -3
- package/docs/API.md +6 -4
- package/docs/PROVIDERS.md +8 -5
- package/package.json +5 -5
- package/src/providers/claude.js +28 -22
- package/src/providers/gemini-cli.js +1 -0
package/README.md
CHANGED
|
@@ -293,7 +293,7 @@ Any other model works via its full `provider/model` slug or the `openrouter:` na
|
|
|
293
293
|
### Claude Agent SDK Models
|
|
294
294
|
|
|
295
295
|
- **claude** (aliases: `claude-sdk`, `claude-code`): Claude via the Claude Agent SDK
|
|
296
|
-
- Defaults to Claude Fable 5;
|
|
296
|
+
- Defaults to Claude Fable 5.1 (`claude-fable-5-1`); `claude:fable` and `claude:fable-5.1` select 5.1, `claude:fable-5` selects 5.0, and `claude:opus` selects Opus 5
|
|
297
297
|
- Uses Claude Code CLI authentication (`claude login`) - no API key needed
|
|
298
298
|
- Direct filesystem access from working directory
|
|
299
299
|
- Unknown `claude:`-prefixed names pass through to the SDK (e.g. `claude:claude-sonnet-4-6`)
|
|
@@ -436,7 +436,7 @@ Use `"auto"` for automatic model selection, or specify exact models:
|
|
|
436
436
|
"opus"; // -> claude-opus-4-8 (Anthropic API)
|
|
437
437
|
|
|
438
438
|
// SDK providers (subscription-based, no API key)
|
|
439
|
-
"claude"; // -> Claude Agent SDK (Claude Fable 5)
|
|
439
|
+
"claude"; // -> Claude Agent SDK (Claude Fable 5.1)
|
|
440
440
|
"claude:opus"; // -> Claude Agent SDK (Claude Opus 4.8)
|
|
441
441
|
"copilot:gpt-5.6-terra"; // -> GitHub Copilot SDK
|
|
442
442
|
```
|
|
@@ -450,7 +450,7 @@ Provider priority order (subscription-based SDK providers first, then API-key pr
|
|
|
450
450
|
|
|
451
451
|
1. Codex (`codex`)
|
|
452
452
|
2. Gemini via Antigravity CLI (`gemini` → Gemini 3.8 Flash, `gemini:pro`)
|
|
453
|
-
3. Claude Agent SDK (`claude` → Claude Fable 5)
|
|
453
|
+
3. Claude Agent SDK (`claude` → Claude Fable 5.1)
|
|
454
454
|
4. Copilot (`copilot`)
|
|
455
455
|
5. OpenAI (`gpt-5.6`)
|
|
456
456
|
6. Google (`gemini-pro`)
|
|
@@ -462,6 +462,8 @@ Provider priority order (subscription-based SDK providers first, then API-key pr
|
|
|
462
462
|
|
|
463
463
|
The system will use the first 3 providers that are available (authenticated SDK or valid API key). This enables automatic multi-model consensus without manually specifying models.
|
|
464
464
|
|
|
465
|
+
**Antigravity CLI permissions:** The `gemini`, `gemini:flash`, and `gemini:pro` aliases launch `agy` with `--dangerously-skip-permissions` because headless calls cannot prompt for tool approval. All tool permission requests are auto-approved, including shell commands and file writes; a read-only prompt is not an enforced security boundary. Use this provider only with trusted prompts and context. This also applies when `auto` selects it. The Google API provider is unaffected.
|
|
466
|
+
|
|
465
467
|
### Advanced Configuration
|
|
466
468
|
|
|
467
469
|
#### Manual Installation Options
|
package/docs/API.md
CHANGED
|
@@ -468,11 +468,13 @@ Any other model works via its full `provider/model` slug (e.g. `anthropic/claude
|
|
|
468
468
|
|
|
469
469
|
**Claude** is available through the Claude Agent SDK, using Claude Code CLI authentication instead of an API key:
|
|
470
470
|
|
|
471
|
-
- **Model**: `claude` (aliases: `claude-sdk`, `claude-code`) — defaults to Claude Fable 5
|
|
472
|
-
- **Model selection**: `claude:fable` (Claude Fable 5) or `claude:opus` (Claude Opus 5); unknown `claude:`-prefixed names pass through to the SDK (e.g. `claude:claude-sonnet-4-6`)
|
|
471
|
+
- **Model**: `claude` (aliases: `claude-sdk`, `claude-code`) — defaults to Claude Fable 5.1 (`claude-fable-5-1`)
|
|
472
|
+
- **Model selection**: `claude:fable` or `claude:fable-5.1` (Claude Fable 5.1), `claude:fable-5` (Claude Fable 5.0), or `claude:opus` (Claude Opus 5); unknown `claude:`-prefixed names pass through to the SDK (e.g. `claude:claude-sonnet-4-6`)
|
|
473
473
|
- **Authentication**: `claude login` — no `ANTHROPIC_API_KEY` needed
|
|
474
474
|
- **Direct file access**: reads files from the working directory
|
|
475
|
-
- `reasoning_effort` and
|
|
475
|
+
- **Reasoning effort**: `reasoning_effort` maps to the SDK's `effort` option: `low`, `medium`, `high`, `xhigh`, or `max`; `none` and `minimal` become `low`. Omitting it retains the SDK default.
|
|
476
|
+
- **Turn limit**: SDK requests allow up to 100 turns (`maxTurns: 100`).
|
|
477
|
+
- Sampling parameters are managed by the SDK.
|
|
476
478
|
|
|
477
479
|
### Gemini via Antigravity CLI (subscription)
|
|
478
480
|
|
|
@@ -522,7 +524,7 @@ Use `"auto"` for automatic selection, or specify exact models:
|
|
|
522
524
|
"z-ai/glm-5.2:online" // OpenRouter with web search opt-in
|
|
523
525
|
"fable" // Anthropic API (-> claude-fable-5)
|
|
524
526
|
"opus" // Anthropic API (-> claude-opus-5)
|
|
525
|
-
"claude" // Claude Agent SDK (-> Claude Fable 5)
|
|
527
|
+
"claude" // Claude Agent SDK (-> Claude Fable 5.1)
|
|
526
528
|
"claude:opus" // Claude Agent SDK (Claude Opus 5)
|
|
527
529
|
"gemini" // Antigravity CLI (Gemini 3.8 Flash)
|
|
528
530
|
"copilot:gpt-5.6-terra" // GitHub Copilot SDK
|
package/docs/PROVIDERS.md
CHANGED
|
@@ -195,8 +195,9 @@ agy
|
|
|
195
195
|
- **Setup Required**: Authenticate once with `claude login` (Claude Code CLI)
|
|
196
196
|
- **Environment Variables**: None (uses Claude Code credentials)
|
|
197
197
|
- **Supported Models**:
|
|
198
|
-
- `claude` (aliases: `claude-sdk`, `claude-code`) - Defaults to Claude Fable 5
|
|
199
|
-
- `claude:fable` - Claude Fable 5 explicitly
|
|
198
|
+
- `claude` (aliases: `claude-sdk`, `claude-code`) - Defaults to Claude Fable 5.1 (`claude-fable-5-1`)
|
|
199
|
+
- `claude:fable` or `claude:fable-5.1` - Claude Fable 5.1 explicitly
|
|
200
|
+
- `claude:fable-5` - Claude Fable 5.0 (`claude-fable-5`)
|
|
200
201
|
- `claude:opus` - Claude Opus 5
|
|
201
202
|
- Other `claude:`-prefixed names pass through to the SDK (e.g. `claude:claude-sonnet-4-6`)
|
|
202
203
|
|
|
@@ -204,7 +205,9 @@ agy
|
|
|
204
205
|
- **Subscription Access**: Uses your Claude subscription instead of API credits
|
|
205
206
|
- **Local File Access**: Reads files directly from the working directory
|
|
206
207
|
- **Image Support**: Via the SDK's streaming input mode
|
|
207
|
-
- **
|
|
208
|
+
- **Reasoning Effort**: `reasoning_effort` maps to the SDK's `effort` option: `low`, `medium`, `high`, `xhigh`, or `max`; `none` and `minimal` become `low`. Omitting it retains the SDK default.
|
|
209
|
+
- **Turn Limit**: SDK requests allow up to 100 turns (`maxTurns: 100`).
|
|
210
|
+
- **SDK-Managed Parameters**: Sampling parameters are managed internally by the SDK.
|
|
208
211
|
|
|
209
212
|
**Differences from Anthropic API Provider:**
|
|
210
213
|
- **Authentication**: Claude Code login vs `ANTHROPIC_API_KEY`
|
|
@@ -341,7 +344,7 @@ The `models` array always holds plain model-name strings. Each string routes as
|
|
|
341
344
|
"fable" // Anthropic (keyword match -> claude-fable-5)
|
|
342
345
|
"opus" // Anthropic (keyword match -> claude-opus-5)
|
|
343
346
|
"sonnet" // Anthropic (keyword match -> claude-sonnet-4-6)
|
|
344
|
-
"claude" // Claude Agent SDK (defaults to Claude Fable 5)
|
|
347
|
+
"claude" // Claude Agent SDK (defaults to Claude Fable 5.1)
|
|
345
348
|
"claude:opus" // Claude Agent SDK (Claude Opus 5)
|
|
346
349
|
"gemini-2.5-pro" // Google (keyword match)
|
|
347
350
|
"grok-4.5" // X.AI (keyword match)
|
|
@@ -391,4 +394,4 @@ The `models` array always holds plain model-name strings. Each string routes as
|
|
|
391
394
|
- The 8 curated slugs work out of the box; the default is `z-ai/glm-5.2`
|
|
392
395
|
- Any other model works via its full `provider/model` slug or the `openrouter:` namespace — no extra configuration
|
|
393
396
|
- The first request to a non-curated slug fetches its capabilities from OpenRouter's live catalog; a slug absent from that catalog fails before inference with `MODEL_NOT_FOUND`
|
|
394
|
-
- Append `:online` to a slug to enable web search for that request (adds a real per-request cost)
|
|
397
|
+
- Append `:online` to a slug to enable web search for that request (adds a real per-request cost)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "converse-mcp-server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"description": "Converse MCP Server - Converse with other LLMs with chat and consensus tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -93,14 +93,14 @@
|
|
|
93
93
|
".env.example"
|
|
94
94
|
],
|
|
95
95
|
"dependencies": {
|
|
96
|
-
"@anthropic-ai/claude-agent-sdk": "^0.3.
|
|
97
|
-
"@anthropic-ai/sdk": "^0.
|
|
98
|
-
"@github/copilot-sdk": "^1.0.
|
|
96
|
+
"@anthropic-ai/claude-agent-sdk": "^0.3.263",
|
|
97
|
+
"@anthropic-ai/sdk": "^0.124.0",
|
|
98
|
+
"@github/copilot-sdk": "^1.0.13",
|
|
99
99
|
"@google/genai": "^2.21.0",
|
|
100
100
|
"@lydell/node-pty": "1.2.0-beta.15",
|
|
101
101
|
"@mistralai/mistralai": "^2.6.4",
|
|
102
102
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
103
|
-
"@openai/codex-sdk": "^0.153.
|
|
103
|
+
"@openai/codex-sdk": "^0.153.4",
|
|
104
104
|
"cors": "^2.8.6",
|
|
105
105
|
"dotenv": "^17.4.2",
|
|
106
106
|
"express": "^5.2.1",
|
package/src/providers/claude.js
CHANGED
|
@@ -15,13 +15,15 @@
|
|
|
15
15
|
|
|
16
16
|
import { debugLog, debugError } from '../utils/console.js';
|
|
17
17
|
import { ProviderError, ErrorCodes, StopReasons } from './interface.js';
|
|
18
|
+
import { clampReasoningEffort } from '../utils/reasoningEffort.js';
|
|
18
19
|
|
|
19
20
|
// Default underlying model when the request is just "claude" (or "claude:fable")
|
|
20
|
-
const DEFAULT_SDK_MODEL = 'claude-fable-5';
|
|
21
|
+
const DEFAULT_SDK_MODEL = 'claude-fable-5-1';
|
|
22
|
+
const SDK_EFFORT_TIERS = ['low', 'medium', 'high', 'xhigh', 'max'];
|
|
21
23
|
|
|
22
24
|
// Supported Claude SDK models with their configurations
|
|
23
25
|
const SUPPORTED_MODELS = {
|
|
24
|
-
fable: {
|
|
26
|
+
'fable-5': {
|
|
25
27
|
modelName: 'claude-fable-5',
|
|
26
28
|
friendlyName: 'Claude Fable 5 (via Agent SDK)',
|
|
27
29
|
contextWindow: 1000000,
|
|
@@ -31,15 +33,30 @@ const SUPPORTED_MODELS = {
|
|
|
31
33
|
supportsWebSearch: false, // SDK accesses files directly, not web
|
|
32
34
|
timeout: 1800000, // 30 minutes
|
|
33
35
|
description:
|
|
34
|
-
'Claude Fable 5 via Agent SDK
|
|
36
|
+
'Claude Fable 5 via Agent SDK - requires claude login authentication',
|
|
37
|
+
aliases: ['claude-fable-5'],
|
|
38
|
+
},
|
|
39
|
+
fable: {
|
|
40
|
+
modelName: 'claude-fable-5-1',
|
|
41
|
+
friendlyName: 'Claude Fable 5.1 (via Agent SDK)',
|
|
42
|
+
contextWindow: 1000000,
|
|
43
|
+
maxOutputTokens: 128000,
|
|
44
|
+
supportsStreaming: true,
|
|
45
|
+
supportsImages: true,
|
|
46
|
+
supportsWebSearch: false,
|
|
47
|
+
timeout: 1800000,
|
|
48
|
+
description:
|
|
49
|
+
'Claude Fable 5.1 via Agent SDK (default) - requires claude login authentication',
|
|
35
50
|
aliases: [
|
|
36
51
|
'claude',
|
|
37
52
|
'claude-sdk',
|
|
38
53
|
'claude-code',
|
|
39
54
|
'claude:fable',
|
|
40
|
-
'claude-fable-5',
|
|
41
55
|
'claude-fable',
|
|
42
|
-
'fable-5',
|
|
56
|
+
'claude-fable-5-1',
|
|
57
|
+
'claude-fable-5.1',
|
|
58
|
+
'fable-5-1',
|
|
59
|
+
'fable-5.1',
|
|
43
60
|
],
|
|
44
61
|
},
|
|
45
62
|
opus: {
|
|
@@ -138,7 +155,7 @@ function findModelConfig(modelName) {
|
|
|
138
155
|
|
|
139
156
|
/**
|
|
140
157
|
* Resolve the requested model to the underlying SDK model ID.
|
|
141
|
-
* - "claude" (and bare "claude:") defaults to Claude Fable 5
|
|
158
|
+
* - "claude" (and bare "claude:") defaults to Claude Fable 5.1
|
|
142
159
|
* - "claude:fable" / "claude:opus" select the specific model
|
|
143
160
|
* - Unknown names are passed through (after prefix stripping) so users can
|
|
144
161
|
* target any model ID the Agent SDK accepts (e.g. "claude:claude-sonnet-4-6")
|
|
@@ -299,19 +316,13 @@ async function* createStreamingGenerator(
|
|
|
299
316
|
signal,
|
|
300
317
|
) {
|
|
301
318
|
try {
|
|
302
|
-
// Build query options
|
|
303
|
-
// Use higher maxTurns to allow for file reading operations
|
|
304
319
|
const queryOptions = {
|
|
320
|
+
...options,
|
|
305
321
|
model: options.model || DEFAULT_SDK_MODEL,
|
|
306
|
-
maxTurns:
|
|
322
|
+
maxTurns: 100,
|
|
307
323
|
permissionMode: 'bypassPermissions', // Don't prompt for permissions
|
|
308
324
|
};
|
|
309
325
|
|
|
310
|
-
// Add working directory if provided
|
|
311
|
-
if (options.cwd) {
|
|
312
|
-
queryOptions.cwd = options.cwd;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
326
|
// Pass abort controller if provided
|
|
316
327
|
// Note: The SDK expects AbortController, not AbortSignal
|
|
317
328
|
if (signal) {
|
|
@@ -459,13 +470,6 @@ export const claudeProvider = {
|
|
|
459
470
|
);
|
|
460
471
|
}
|
|
461
472
|
|
|
462
|
-
// Log unsupported parameters at debug level
|
|
463
|
-
if (reasoning_effort !== undefined) {
|
|
464
|
-
debugLog(
|
|
465
|
-
'[Claude SDK] Parameter "reasoning_effort" not supported by Claude SDK (ignored)',
|
|
466
|
-
);
|
|
467
|
-
}
|
|
468
|
-
|
|
469
473
|
try {
|
|
470
474
|
// Get Claude SDK
|
|
471
475
|
const query = await getClaudeSDK();
|
|
@@ -481,7 +485,6 @@ export const claudeProvider = {
|
|
|
481
485
|
debugLog('[Claude SDK] Using streaming input mode for image support');
|
|
482
486
|
}
|
|
483
487
|
|
|
484
|
-
// Resolve requested model (claude/claude:fable -> claude-fable-5, claude:opus -> claude-opus-5)
|
|
485
488
|
const sdkModel = resolveSdkModel(model);
|
|
486
489
|
debugLog(`[Claude SDK] Resolved model "${model}" -> "${sdkModel}"`);
|
|
487
490
|
|
|
@@ -490,6 +493,9 @@ export const claudeProvider = {
|
|
|
490
493
|
cwd: config.server?.client_cwd || process.cwd(),
|
|
491
494
|
model: sdkModel,
|
|
492
495
|
};
|
|
496
|
+
if (reasoning_effort !== undefined) {
|
|
497
|
+
sdkOptions.effort = clampReasoningEffort(reasoning_effort, SDK_EFFORT_TIERS);
|
|
498
|
+
}
|
|
493
499
|
|
|
494
500
|
// Streaming mode
|
|
495
501
|
if (stream) {
|