consult-llm-mcp 1.4.2 → 1.4.4
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 +22 -15
- package/dist/config.d.ts +2 -1
- package/dist/llm-cost.js +4 -0
- package/dist/llm.js +1 -1
- package/dist/llm.test.js +6 -5
- package/dist/schema.d.ts +2 -0
- package/dist/schema.js +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,8 +24,8 @@ This SQL query is timing out on large datasets. Can you help optimize it? Ask Ge
|
|
|
24
24
|
|
|
25
25
|
## Features
|
|
26
26
|
|
|
27
|
-
- Query powerful AI models (o3, Gemini 2.5 Pro,
|
|
28
|
-
Codex) with relevant files as context
|
|
27
|
+
- Query powerful AI models (o3, Gemini 2.5 Pro, Gemini 3 Pro Preview, DeepSeek
|
|
28
|
+
Reasoner, GPT-5.1 Codex) with relevant files as context
|
|
29
29
|
- Direct queries with optional file context
|
|
30
30
|
- Include git changes for code review and analysis
|
|
31
31
|
- Comprehensive logging with cost estimation
|
|
@@ -239,7 +239,7 @@ This is useful when:
|
|
|
239
239
|
|
|
240
240
|
</details>
|
|
241
241
|
|
|
242
|
-
## Web
|
|
242
|
+
## Web mode
|
|
243
243
|
|
|
244
244
|
When you want Claude Code to prepare the prompt but send it through an LLM web
|
|
245
245
|
UI yourself (ChatGPT, Claude.ai, Gemini, etc.), ask it to "use consult LLM with
|
|
@@ -260,7 +260,7 @@ wherever you like.
|
|
|
260
260
|
See the "Using web mode..." example above for a concrete transcript of this
|
|
261
261
|
flow.
|
|
262
262
|
|
|
263
|
-
## Gemini CLI
|
|
263
|
+
## Gemini CLI mode
|
|
264
264
|
|
|
265
265
|
Use Gemini's local CLI when you want to take advantage of Google's free quota or
|
|
266
266
|
keep prompts off the API by enabling CLI mode so consult-llm spawns the `gemini`
|
|
@@ -283,7 +283,7 @@ binary locally rather than sending the prompt through the API.
|
|
|
283
283
|
use). It will call `consult_llm` with the Gemini model, assemble the
|
|
284
284
|
prompt, and shell out to the CLI automatically.
|
|
285
285
|
|
|
286
|
-
## Codex CLI
|
|
286
|
+
## Codex CLI mode
|
|
287
287
|
|
|
288
288
|
Use OpenAI's Codex CLI when you want to use OpenAI models locally through the
|
|
289
289
|
CLI instead of making API calls.
|
|
@@ -304,7 +304,7 @@ CLI instead of making API calls.
|
|
|
304
304
|
call `consult_llm` with the specified model, assemble the prompt, and shell
|
|
305
305
|
out to the Codex CLI automatically.
|
|
306
306
|
|
|
307
|
-
### Configuring
|
|
307
|
+
### Configuring reasoning effort
|
|
308
308
|
|
|
309
309
|
When using Codex CLI mode, you can control the reasoning effort level using the
|
|
310
310
|
`CODEX_REASONING_EFFORT` environment variable:
|
|
@@ -325,7 +325,7 @@ longer to complete. This is passed to the Codex CLI as
|
|
|
325
325
|
|
|
326
326
|
## Configuration
|
|
327
327
|
|
|
328
|
-
### Environment
|
|
328
|
+
### Environment variables
|
|
329
329
|
|
|
330
330
|
- `OPENAI_API_KEY` - Your OpenAI API key (required for OpenAI models in API
|
|
331
331
|
mode)
|
|
@@ -333,8 +333,9 @@ longer to complete. This is passed to the Codex CLI as
|
|
|
333
333
|
mode)
|
|
334
334
|
- `DEEPSEEK_API_KEY` - Your DeepSeek API key (required for DeepSeek models)
|
|
335
335
|
- `CONSULT_LLM_DEFAULT_MODEL` - Override the default model (optional)
|
|
336
|
-
- Options: `o3` (default), `gemini-2.5-pro`, `
|
|
337
|
-
`
|
|
336
|
+
- Options: `o3` (default), `gemini-2.5-pro`, `gemini-3-pro-preview`,
|
|
337
|
+
`deepseek-reasoner`, `gpt-5.1-codex-max`, `gpt-5.1-codex`,
|
|
338
|
+
`gpt-5.1-codex-mini`, `gpt-5.1`
|
|
338
339
|
- `GEMINI_MODE` - Choose between API or CLI mode for Gemini models (optional)
|
|
339
340
|
- Options: `api` (default), `cli`
|
|
340
341
|
- CLI mode uses the system-installed `gemini` CLI tool
|
|
@@ -344,7 +345,7 @@ longer to complete. This is passed to the Codex CLI as
|
|
|
344
345
|
- `CODEX_REASONING_EFFORT` - Configure reasoning effort for Codex CLI (optional)
|
|
345
346
|
- See [Codex CLI Mode](#codex-cli-mode) for details and available options
|
|
346
347
|
|
|
347
|
-
### Custom
|
|
348
|
+
### Custom system prompt
|
|
348
349
|
|
|
349
350
|
You can customize the system prompt used when consulting LLMs by creating a
|
|
350
351
|
`SYSTEM_PROMPT.md` file in `~/.consult-llm-mcp/`:
|
|
@@ -359,7 +360,7 @@ request, so changes take effect immediately without restarting the server.
|
|
|
359
360
|
|
|
360
361
|
To revert to the default prompt, simply delete the `SYSTEM_PROMPT.md` file.
|
|
361
362
|
|
|
362
|
-
## MCP
|
|
363
|
+
## MCP tool: consult_llm
|
|
363
364
|
|
|
364
365
|
The server provides a single tool called `consult_llm` for asking powerful AI
|
|
365
366
|
models complex questions.
|
|
@@ -372,8 +373,8 @@ models complex questions.
|
|
|
372
373
|
- All files are added as context with file paths and code blocks
|
|
373
374
|
|
|
374
375
|
- **model** (optional): LLM model to use
|
|
375
|
-
- Options: `o3` (default), `gemini-2.5-pro`, `
|
|
376
|
-
`gpt-5.1-codex`, `gpt-5.1-codex-mini`, `gpt-5.1`
|
|
376
|
+
- Options: `o3` (default), `gemini-2.5-pro`, `gemini-3-pro-preview`,
|
|
377
|
+
`deepseek-reasoner`, `gpt-5.1-codex`, `gpt-5.1-codex-mini`, `gpt-5.1`
|
|
377
378
|
|
|
378
379
|
- **web_mode** (optional): Copy prompt to clipboard instead of querying LLM
|
|
379
380
|
- Default: `false`
|
|
@@ -387,10 +388,12 @@ models complex questions.
|
|
|
387
388
|
directory)
|
|
388
389
|
- **base_ref** (optional): Git reference to compare against (defaults to HEAD)
|
|
389
390
|
|
|
390
|
-
## Supported
|
|
391
|
+
## Supported models
|
|
391
392
|
|
|
392
393
|
- **o3**: OpenAI's reasoning model ($2/$8 per million tokens)
|
|
393
394
|
- **gemini-2.5-pro**: Google's Gemini 2.5 Pro ($1.25/$10 per million tokens)
|
|
395
|
+
- **gemini-3-pro-preview**: Google's Gemini 3 Pro Preview ($2/$12 per million
|
|
396
|
+
tokens for prompts ≤200k tokens, $4/$18 for prompts >200k tokens)
|
|
394
397
|
- **deepseek-reasoner**: DeepSeek's reasoning model ($0.55/$2.19 per million
|
|
395
398
|
tokens)
|
|
396
399
|
- **gpt-5.1-codex**: OpenAI's Codex model optimized for coding
|
|
@@ -468,7 +471,7 @@ CRITICAL: When asking, don't present options, this will bias the answer.
|
|
|
468
471
|
Claude Code seems to know pretty well when to use this MCP even without this
|
|
469
472
|
instruction however.
|
|
470
473
|
|
|
471
|
-
## Example
|
|
474
|
+
## Example skill
|
|
472
475
|
|
|
473
476
|
Here's an example [Claude Code skill](https://code.claude.com/docs/en/skills)
|
|
474
477
|
that uses the `consult_llm` MCP tool to create commands like "ask gemini" or
|
|
@@ -531,6 +534,10 @@ When consulting with external LLMs:
|
|
|
531
534
|
Save this as `~/.claude/skills/consult-llm/SKILL.md` and you can then use it by
|
|
532
535
|
typing "ask gemini about X" or "ask codex about X" in Claude Code.
|
|
533
536
|
|
|
537
|
+
This one is not strictly necessary either, Claude (or other agent) can infer
|
|
538
|
+
from the schema that "Ask gemini" should call this MCP, but it might be helpful
|
|
539
|
+
in case you want to have more precise control over how the agent calls this MCP.
|
|
540
|
+
|
|
534
541
|
## Development
|
|
535
542
|
|
|
536
543
|
To work on the MCP server locally and use your development version:
|
package/dist/config.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ declare const Config: z.ZodObject<{
|
|
|
6
6
|
defaultModel: z.ZodOptional<z.ZodEnum<{
|
|
7
7
|
o3: "o3";
|
|
8
8
|
"gemini-2.5-pro": "gemini-2.5-pro";
|
|
9
|
+
"gemini-3-pro-preview": "gemini-3-pro-preview";
|
|
9
10
|
"deepseek-reasoner": "deepseek-reasoner";
|
|
10
11
|
"gpt-5.1-codex-max": "gpt-5.1-codex-max";
|
|
11
12
|
"gpt-5.1-codex": "gpt-5.1-codex";
|
|
@@ -36,7 +37,7 @@ export declare const config: {
|
|
|
36
37
|
openaiApiKey?: string | undefined;
|
|
37
38
|
geminiApiKey?: string | undefined;
|
|
38
39
|
deepseekApiKey?: string | undefined;
|
|
39
|
-
defaultModel?: "o3" | "gemini-2.5-pro" | "deepseek-reasoner" | "gpt-5.1-codex-max" | "gpt-5.1-codex" | "gpt-5.1-codex-mini" | "gpt-5.1" | undefined;
|
|
40
|
+
defaultModel?: "o3" | "gemini-2.5-pro" | "gemini-3-pro-preview" | "deepseek-reasoner" | "gpt-5.1-codex-max" | "gpt-5.1-codex" | "gpt-5.1-codex-mini" | "gpt-5.1" | undefined;
|
|
40
41
|
codexReasoningEffort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
41
42
|
};
|
|
42
43
|
export {};
|
package/dist/llm-cost.js
CHANGED
|
@@ -7,6 +7,10 @@ const MODEL_PRICING = {
|
|
|
7
7
|
inputCostPerMillion: 1.25,
|
|
8
8
|
outputCostPerMillion: 10.0,
|
|
9
9
|
},
|
|
10
|
+
'gemini-3-pro-preview': {
|
|
11
|
+
inputCostPerMillion: 2.0,
|
|
12
|
+
outputCostPerMillion: 12.0,
|
|
13
|
+
},
|
|
10
14
|
'deepseek-reasoner': {
|
|
11
15
|
inputCostPerMillion: 0.55,
|
|
12
16
|
outputCostPerMillion: 2.19,
|
package/dist/llm.js
CHANGED
|
@@ -124,7 +124,7 @@ const geminiCliConfig = {
|
|
|
124
124
|
const codexCliConfig = {
|
|
125
125
|
cliName: 'codex',
|
|
126
126
|
buildArgs: (model, fullPrompt) => {
|
|
127
|
-
const args = ['exec', '-m', model];
|
|
127
|
+
const args = ['exec', '--skip-git-repo-check', '-m', model];
|
|
128
128
|
if (config.codexReasoningEffort) {
|
|
129
129
|
args.push('-c', `model_reasoning_effort="${config.codexReasoningEffort}"`);
|
|
130
130
|
}
|
package/dist/llm.test.js
CHANGED
|
@@ -105,11 +105,12 @@ describe('CLI executor', () => {
|
|
|
105
105
|
expect(args?.[0]).toBe('codex');
|
|
106
106
|
const cliArgs = args?.[1];
|
|
107
107
|
expect(cliArgs[0]).toBe('exec');
|
|
108
|
-
expect(cliArgs[1]).toBe('-
|
|
109
|
-
expect(cliArgs[2]).toBe('
|
|
110
|
-
expect(cliArgs[3]).
|
|
111
|
-
expect(cliArgs[
|
|
112
|
-
expect(cliArgs[
|
|
108
|
+
expect(cliArgs[1]).toBe('--skip-git-repo-check');
|
|
109
|
+
expect(cliArgs[2]).toBe('-m');
|
|
110
|
+
expect(cliArgs[3]).toBe('gpt-5.1');
|
|
111
|
+
expect(cliArgs[4]).toContain('system');
|
|
112
|
+
expect(cliArgs[4]).toContain('user');
|
|
113
|
+
expect(cliArgs[4]).toContain('Files: @');
|
|
113
114
|
const result = await promise;
|
|
114
115
|
expect(result.response).toBe('result');
|
|
115
116
|
expect(result.usage).toBeNull();
|
package/dist/schema.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
export declare const SupportedChatModel: z.ZodEnum<{
|
|
3
3
|
o3: "o3";
|
|
4
4
|
"gemini-2.5-pro": "gemini-2.5-pro";
|
|
5
|
+
"gemini-3-pro-preview": "gemini-3-pro-preview";
|
|
5
6
|
"deepseek-reasoner": "deepseek-reasoner";
|
|
6
7
|
"gpt-5.1-codex-max": "gpt-5.1-codex-max";
|
|
7
8
|
"gpt-5.1-codex": "gpt-5.1-codex";
|
|
@@ -15,6 +16,7 @@ export declare const ConsultLlmArgs: z.ZodObject<{
|
|
|
15
16
|
model: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
16
17
|
o3: "o3";
|
|
17
18
|
"gemini-2.5-pro": "gemini-2.5-pro";
|
|
19
|
+
"gemini-3-pro-preview": "gemini-3-pro-preview";
|
|
18
20
|
"deepseek-reasoner": "deepseek-reasoner";
|
|
19
21
|
"gpt-5.1-codex-max": "gpt-5.1-codex-max";
|
|
20
22
|
"gpt-5.1-codex": "gpt-5.1-codex";
|
package/dist/schema.js
CHANGED