@h1deya/mcp-client-cli 0.3.4 → 0.3.6
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 +48 -19
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/init-chat-model.d.ts +1 -1
- package/dist/init-chat-model.d.ts.map +1 -1
- package/dist/init-chat-model.js +19 -11
- package/dist/init-chat-model.js.map +1 -1
- package/dist/load-config.d.ts +2 -1
- package/dist/load-config.d.ts.map +1 -1
- package/dist/load-config.js +69 -54
- package/dist/load-config.js.map +1 -1
- package/dist/remote-server-utils.d.ts +2 -2
- package/dist/remote-server-utils.js +11 -11
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -25,8 +25,10 @@ A Python equivalent of this utility is available [here](https://pypi.org/project
|
|
|
25
25
|
[OpenAI](https://platform.openai.com/api-keys),
|
|
26
26
|
[Anthropic](https://console.anthropic.com/settings/keys),
|
|
27
27
|
[Google AI Studio (for GenAI/Gemini)](https://aistudio.google.com/apikey),
|
|
28
|
-
and/or
|
|
29
28
|
[xAI](https://console.x.ai/),
|
|
29
|
+
[Cerebras](https://cloud.cerebras.ai),
|
|
30
|
+
and/or
|
|
31
|
+
[Groq](https://console.groq.com/keys),
|
|
30
32
|
as needed
|
|
31
33
|
|
|
32
34
|
## Quick Start
|
|
@@ -46,14 +48,12 @@ A Python equivalent of this utility is available [here](https://pypi.org/project
|
|
|
46
48
|
```json5
|
|
47
49
|
{
|
|
48
50
|
"llm": {
|
|
49
|
-
"
|
|
50
|
-
"model": "
|
|
51
|
-
// "
|
|
52
|
-
// "model": "
|
|
53
|
-
// "
|
|
54
|
-
// "model": "
|
|
55
|
-
// "model_provider": "xai",
|
|
56
|
-
// "model": "grok-3-mini",
|
|
51
|
+
"provider": "openai", "model": "gpt-5-mini",
|
|
52
|
+
// "provider": "anthropic", "model": "claude-3-5-haiku-latest",
|
|
53
|
+
// "provider": "google_genai", "model": "gemini-2.5-flash",
|
|
54
|
+
// "provider": "xai", "model": "grok-3-mini",
|
|
55
|
+
// "provider": "cerebras", "model": "gpt-oss-120b",
|
|
56
|
+
// "provider": "groq", "model": "openai/gpt-oss-20b",
|
|
57
57
|
},
|
|
58
58
|
|
|
59
59
|
"mcp_servers": {
|
|
@@ -75,7 +75,9 @@ A Python equivalent of this utility is available [here](https://pypi.org/project
|
|
|
75
75
|
echo "ANTHROPIC_API_KEY=sk-ant-...
|
|
76
76
|
OPENAI_API_KEY=sk-proj-...
|
|
77
77
|
GOOGLE_API_KEY=AI...
|
|
78
|
-
XAI_API_KEY=xai-...
|
|
78
|
+
XAI_API_KEY=xai-...
|
|
79
|
+
CEREBRAS_API_KEY=csk-...
|
|
80
|
+
GROQ_API_KEY=gsk_..." > .env
|
|
79
81
|
|
|
80
82
|
code .env
|
|
81
83
|
```
|
|
@@ -99,7 +101,8 @@ See [README_DEV.md](https://github.com/hideya/mcp-client-langchain-ts/blob/main/
|
|
|
99
101
|
- **Multiple LLM providers**: OpenAI, Anthropic, Google (GenAI)
|
|
100
102
|
- **Schema Compatibility Support**: Automatically adjusts tools schema for LLM compatibility, which can help some failing MCP servers run successfully.
|
|
101
103
|
See [this page](https://github.com/hideya/langchain-mcp-tools-ts/blob/main/README.md#llm-provider-schema-compatibility)
|
|
102
|
-
for details.
|
|
104
|
+
for details.
|
|
105
|
+
If you want to disable the schema trnaformations, add `"schema_transformations": false,` to the top level of the config file.
|
|
103
106
|
- **Command & URL servers**: Support for both local and remote MCP servers
|
|
104
107
|
- **Real-time logging**: Live stdio MCP server logs with customizable log directory
|
|
105
108
|
- **Interactive testing**: Example queries for the convenience of repeated testing
|
|
@@ -142,9 +145,12 @@ mcp-client-cli --help
|
|
|
142
145
|
|
|
143
146
|
## Supported LLM Providers
|
|
144
147
|
|
|
145
|
-
- **OpenAI**: `
|
|
148
|
+
- **OpenAI**: `gpt-5-mini`, `gpt-4.1-nano`, etc.
|
|
146
149
|
- **Anthropic**: `claude-sonnet-4-0`, `claude-3-5-haiku-latest`, etc.
|
|
147
|
-
- **Google (GenAI)**: `gemini-2.5-
|
|
150
|
+
- **Google (GenAI)**: `gemini-2.5-flash`, `gemini-2.5-pro`, etc.
|
|
151
|
+
- **xAI**: `grok-3-mini`, `grok-4`, etc.
|
|
152
|
+
- **Cerebras**: `gpt-oss-120b`, etc.
|
|
153
|
+
- **Groq**: `openai/gpt-oss-20b`, `openai/gpt-oss-120b`, etc.
|
|
148
154
|
|
|
149
155
|
## Configuration
|
|
150
156
|
|
|
@@ -166,29 +172,40 @@ Create a `llm_mcp_config.json5` file:
|
|
|
166
172
|
```json5
|
|
167
173
|
{
|
|
168
174
|
"llm": {
|
|
169
|
-
"
|
|
170
|
-
"model": "gpt-
|
|
171
|
-
// model: "
|
|
175
|
+
"provider": "openai",
|
|
176
|
+
"model": "gpt-4.1-nano",
|
|
177
|
+
// model: "gpt-5-mini",
|
|
172
178
|
},
|
|
173
179
|
|
|
174
180
|
// "llm": {
|
|
175
|
-
// "
|
|
181
|
+
// "provider": "anthropic",
|
|
176
182
|
// "model": "claude-3-5-haiku-latest",
|
|
177
183
|
// // "model": "claude-sonnet-4-0",
|
|
178
184
|
// },
|
|
179
185
|
|
|
180
186
|
// "llm": {
|
|
181
|
-
// "
|
|
187
|
+
// "provider": "google_genai",
|
|
182
188
|
// "model": "gemini-2.5-flash",
|
|
183
189
|
// // "model": "gemini-2.5-pro",
|
|
184
190
|
// },
|
|
185
191
|
|
|
186
192
|
// "llm": {
|
|
187
|
-
// "
|
|
193
|
+
// "provider": "xai",
|
|
188
194
|
// "model": "grok-3-mini",
|
|
189
195
|
// // "model": "grok-4",
|
|
190
196
|
// },
|
|
191
197
|
|
|
198
|
+
// "llm": {
|
|
199
|
+
// "provider": "cerebras",
|
|
200
|
+
// "model": "gpt-oss-120b",
|
|
201
|
+
// },
|
|
202
|
+
|
|
203
|
+
// "llm": {
|
|
204
|
+
// "provider": "groq",
|
|
205
|
+
// "model": "openai/gpt-oss-20b",
|
|
206
|
+
// // "model": "openai/gpt-oss-120b",
|
|
207
|
+
// },
|
|
208
|
+
|
|
192
209
|
"example_queries": [
|
|
193
210
|
"Tell me how LLMs work in a few sentences",
|
|
194
211
|
"Are there any weather alerts in California?",
|
|
@@ -227,6 +244,12 @@ Create a `llm_mcp_config.json5` file:
|
|
|
227
244
|
"headers": {
|
|
228
245
|
"Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
|
|
229
246
|
}
|
|
247
|
+
},
|
|
248
|
+
|
|
249
|
+
// To connect a remote MCP server with OAuth, use "mcp-remote"
|
|
250
|
+
"notionMCP": {
|
|
251
|
+
"command": "npx",
|
|
252
|
+
"args": ["-y", "mcp-remote", "https://mcp.notion.com/mcp"],
|
|
230
253
|
}
|
|
231
254
|
}
|
|
232
255
|
}
|
|
@@ -240,6 +263,8 @@ Create a `.env` file for API keys:
|
|
|
240
263
|
OPENAI_API_KEY=sk-ant-...
|
|
241
264
|
ANTHROPIC_API_KEY=sk-proj-...
|
|
242
265
|
GOOGLE_API_KEY=AI...
|
|
266
|
+
CEREBRAS_API_KEY=csk-...
|
|
267
|
+
GROQ_API_KEY=gsk_...
|
|
243
268
|
|
|
244
269
|
# Other services as needed
|
|
245
270
|
GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_...
|
|
@@ -259,6 +284,10 @@ There are quite a few useful MCP servers already available:
|
|
|
259
284
|
- Use `--verbose` flag to view the detailed logs
|
|
260
285
|
- Refer to [Debugging Section in MCP documentation](https://modelcontextprotocol.io/docs/tools/debugging)
|
|
261
286
|
|
|
287
|
+
## Change Log
|
|
288
|
+
|
|
289
|
+
Can be found [here](https://github.com/hideya/mcp-client-langchain-ts/blob/main/CHANGELOG.md)
|
|
290
|
+
|
|
262
291
|
## License
|
|
263
292
|
|
|
264
293
|
MIT License - see [LICENSE](LICENSE) file for details.
|
package/dist/index.js
CHANGED
|
@@ -123,7 +123,6 @@ function addLogFileWatcher(logPath, serverName) {
|
|
|
123
123
|
let lastSize = stats.size;
|
|
124
124
|
const watcher = fs.watch(logPath, (eventType, filename) => {
|
|
125
125
|
if (eventType === 'change') {
|
|
126
|
-
// console.log(`*** file updated: "${filename}"`);
|
|
127
126
|
const stats = fs.statSync(logPath);
|
|
128
127
|
const currentSize = stats.size;
|
|
129
128
|
if (currentSize > lastSize) {
|
|
@@ -141,10 +140,10 @@ function addLogFileWatcher(logPath, serverName) {
|
|
|
141
140
|
}
|
|
142
141
|
// Application initialization
|
|
143
142
|
async function initializeReactAgent(config, verbose, logDir) {
|
|
144
|
-
const
|
|
143
|
+
const llmApiProvider = config.llm.provider;
|
|
145
144
|
console.log("Initializing model...", config.llm, "\n");
|
|
146
145
|
const llmConfig = {
|
|
147
|
-
modelProvider:
|
|
146
|
+
modelProvider: llmApiProvider,
|
|
148
147
|
model: config.llm.model,
|
|
149
148
|
temperature: config.llm.temperature,
|
|
150
149
|
maxTokens: config.llm.max_tokens,
|
|
@@ -168,6 +167,11 @@ async function initializeReactAgent(config, verbose, logDir) {
|
|
|
168
167
|
openedLogFiles[logPath] = { fd: logFd, watcher };
|
|
169
168
|
}
|
|
170
169
|
});
|
|
170
|
+
const schemaTransformations = (config.schema_transformations === undefined) || config.schema_transformations;
|
|
171
|
+
const llmProvider = schemaTransformations && (llmApiProvider === "openai" ||
|
|
172
|
+
llmApiProvider === "google_gemini" || llmApiProvider === "google_genai" ||
|
|
173
|
+
llmApiProvider === "anthropic" || llmApiProvider === "xai")
|
|
174
|
+
? llmApiProvider : "none";
|
|
171
175
|
const toolsAndCleanup = await convertMcpToLangchainTools(config.mcp_servers, { llmProvider, logLevel: verbose ? "debug" : "info" });
|
|
172
176
|
const tools = toolsAndCleanup.tools;
|
|
173
177
|
const mcpCleanup = toolsAndCleanup.cleanup;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-chat-model.d.ts","sourceRoot":"","sources":["../src/init-chat-model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init-chat-model.d.ts","sourceRoot":"","sources":["../src/init-chat-model.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAK5F,UAAU,eAAe;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,CAsDpE"}
|
package/dist/init-chat-model.js
CHANGED
|
@@ -1,29 +1,37 @@
|
|
|
1
|
-
import { ChatAnthropic } from
|
|
2
|
-
import {
|
|
1
|
+
import { ChatAnthropic } from "@langchain/anthropic";
|
|
2
|
+
import { ChatCerebras } from "@langchain/cerebras";
|
|
3
3
|
import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
|
|
4
|
+
import { ChatGroq } from "@langchain/groq";
|
|
5
|
+
import { ChatOpenAI } from "@langchain/openai";
|
|
4
6
|
import { ChatXAI } from "@langchain/xai";
|
|
5
7
|
export function initChatModel(config) {
|
|
6
8
|
let model;
|
|
7
9
|
const { modelProvider, tools, ...llmConfig } = config;
|
|
8
10
|
try {
|
|
9
11
|
switch (modelProvider.toLowerCase()) {
|
|
10
|
-
case
|
|
12
|
+
case "openai":
|
|
11
13
|
model = new ChatOpenAI(llmConfig);
|
|
12
14
|
break;
|
|
13
|
-
case
|
|
15
|
+
case "anthropic":
|
|
14
16
|
model = new ChatAnthropic(llmConfig);
|
|
15
17
|
break;
|
|
16
|
-
case
|
|
17
|
-
case
|
|
18
|
+
case "google_genai":
|
|
19
|
+
case "google_gemini":
|
|
18
20
|
model = new ChatGoogleGenerativeAI(llmConfig);
|
|
19
21
|
break;
|
|
20
|
-
case
|
|
22
|
+
case "xai":
|
|
21
23
|
model = new ChatXAI(llmConfig);
|
|
22
24
|
break;
|
|
25
|
+
case "cerebras":
|
|
26
|
+
model = new ChatCerebras(llmConfig);
|
|
27
|
+
break;
|
|
28
|
+
case "groq":
|
|
29
|
+
model = new ChatGroq(llmConfig);
|
|
30
|
+
break;
|
|
23
31
|
default:
|
|
24
|
-
throw new Error(`Unsupported
|
|
32
|
+
throw new Error(`Unsupported LLM provider: ${modelProvider}`);
|
|
25
33
|
}
|
|
26
|
-
if (typeof model?.bindTools ===
|
|
34
|
+
if (typeof model?.bindTools === "function") {
|
|
27
35
|
if (tools && tools.length > 0) {
|
|
28
36
|
// FIXME
|
|
29
37
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
@@ -31,12 +39,12 @@ export function initChatModel(config) {
|
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
41
|
else {
|
|
34
|
-
throw new Error(`Tool calling unsupported by
|
|
42
|
+
throw new Error(`Tool calling unsupported by model: ${modelProvider}`);
|
|
35
43
|
}
|
|
36
44
|
return model;
|
|
37
45
|
}
|
|
38
46
|
catch (error) {
|
|
39
|
-
throw new Error(`Failed to initialize chat model: ${error instanceof Error ? error.message :
|
|
47
|
+
throw new Error(`Failed to initialize chat model: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
//# sourceMappingURL=init-chat-model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-chat-model.js","sourceRoot":"","sources":["../src/init-chat-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init-chat-model.js","sourceRoot":"","sources":["../src/init-chat-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAczC,MAAM,UAAU,aAAa,CAAC,MAAuB;IACnD,IAAI,KAAoB,CAAC;IAEzB,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,CAAC;QACH,QAAQ,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,KAAK,QAAQ;gBACX,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM;YAER,KAAK,WAAW;gBACd,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,cAAc,CAAC;YACpB,KAAK,eAAe;gBAClB,KAAK,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM;YAER,KAAK,KAAK;gBACR,KAAK,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC/B,MAAM;YAER,KAAK,UAAU;gBACb,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;gBACpC,MAAM;YAER,KAAK,MAAM;gBACT,KAAK,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAChC,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CACb,6BAA6B,aAAa,EAAE,CAC7C,CAAC;QACN,CAAC;QAED,IAAI,OAAO,KAAK,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,QAAQ;gBACR,sEAAsE;gBACtE,KAAK,GAAI,KAAiC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,sCAAsC,aAAa,EAAE,CACtD,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAClH,CAAC;AACH,CAAC"}
|
package/dist/load-config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface LLMConfig {
|
|
2
|
-
|
|
2
|
+
provider: string;
|
|
3
3
|
model: string;
|
|
4
4
|
temperature?: number;
|
|
5
5
|
max_tokens?: number;
|
|
@@ -32,6 +32,7 @@ export interface Config {
|
|
|
32
32
|
mcp_servers: {
|
|
33
33
|
[key: string]: MCPServerConfig;
|
|
34
34
|
};
|
|
35
|
+
schema_transformations?: boolean;
|
|
35
36
|
}
|
|
36
37
|
export declare function loadConfig(path: string): Config;
|
|
37
38
|
//# sourceMappingURL=load-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../src/load-config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,
|
|
1
|
+
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../src/load-config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAElE,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;KAChC,CAAA;IACD,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC/C"}
|
package/dist/load-config.js
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import JSON5 from
|
|
2
|
-
import { readFileSync } from
|
|
1
|
+
import JSON5 from "json5";
|
|
2
|
+
import { readFileSync } from "fs";
|
|
3
3
|
export function loadConfig(path) {
|
|
4
4
|
try {
|
|
5
|
-
let json5Str = readFileSync(path,
|
|
5
|
+
let json5Str = readFileSync(path, "utf-8");
|
|
6
6
|
// Replace environment variables in the format ${VAR_NAME} with their values
|
|
7
7
|
Object.entries(process.env).forEach(([key, value]) => {
|
|
8
|
-
json5Str = json5Str.replace(`\${${key}}`, value ||
|
|
8
|
+
json5Str = json5Str.replace(`\${${key}}`, value || "");
|
|
9
9
|
});
|
|
10
10
|
const config = JSON5.parse(json5Str);
|
|
11
|
+
// Normalize alias: convert "model_provider" to "provider"
|
|
12
|
+
if (config.llm && "model_provider" in config.llm) {
|
|
13
|
+
if ("provider" in config.llm) {
|
|
14
|
+
throw new Error("Cannot specify both `provider` and `model_provider`");
|
|
15
|
+
}
|
|
16
|
+
config.llm.provider = config.llm.model_provider;
|
|
17
|
+
delete config.llm.model_provider;
|
|
18
|
+
}
|
|
19
|
+
console.log(config);
|
|
20
|
+
console.log(config.schema_transformations);
|
|
11
21
|
// Validate required fields
|
|
12
22
|
validateConfig(config);
|
|
13
23
|
return config;
|
|
@@ -20,26 +30,26 @@ export function loadConfig(path) {
|
|
|
20
30
|
}
|
|
21
31
|
}
|
|
22
32
|
function validateConfig(config) {
|
|
23
|
-
if (typeof config !==
|
|
24
|
-
throw new Error(
|
|
33
|
+
if (typeof config !== "object" || config === null) {
|
|
34
|
+
throw new Error("Configuration must be an object");
|
|
25
35
|
}
|
|
26
|
-
if (!(
|
|
27
|
-
throw new Error(
|
|
36
|
+
if (!("llm" in config)) {
|
|
37
|
+
throw new Error("LLM configuration is required");
|
|
28
38
|
}
|
|
29
39
|
validateLLMConfig(config.llm);
|
|
30
|
-
if (
|
|
40
|
+
if ("example_queries" in config) {
|
|
31
41
|
if (!Array.isArray(config.example_queries)) {
|
|
32
|
-
throw new Error(
|
|
42
|
+
throw new Error("example_queries must be an array if provided");
|
|
33
43
|
}
|
|
34
|
-
if (config.example_queries.some((query) => typeof query !==
|
|
35
|
-
throw new Error(
|
|
44
|
+
if (config.example_queries.some((query) => typeof query !== "string")) {
|
|
45
|
+
throw new Error("All example queries must be strings");
|
|
36
46
|
}
|
|
37
47
|
}
|
|
38
|
-
if (!(
|
|
39
|
-
throw new Error(
|
|
48
|
+
if (!("mcp_servers" in config)) {
|
|
49
|
+
throw new Error("mcp_servers configuration is required");
|
|
40
50
|
}
|
|
41
|
-
if (typeof config.mcp_servers !==
|
|
42
|
-
throw new Error(
|
|
51
|
+
if (typeof config.mcp_servers !== "object" || config.mcp_servers === null) {
|
|
52
|
+
throw new Error("mcp_servers must be an object");
|
|
43
53
|
}
|
|
44
54
|
Object.entries(config.mcp_servers).forEach(([key, value]) => {
|
|
45
55
|
try {
|
|
@@ -49,73 +59,78 @@ function validateConfig(config) {
|
|
|
49
59
|
throw new Error(`Invalid configuration for MCP server "${key}": ${error instanceof Error ? error.message : String(error)}`);
|
|
50
60
|
}
|
|
51
61
|
});
|
|
62
|
+
if ("schema_transformations" in config) {
|
|
63
|
+
if (typeof config.schema_transformations !== "boolean") {
|
|
64
|
+
throw new Error("schema_transformations must be a boolean if provided");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
52
67
|
}
|
|
53
68
|
function validateLLMConfig(llmConfig) {
|
|
54
|
-
if (typeof llmConfig !==
|
|
55
|
-
throw new Error(
|
|
69
|
+
if (typeof llmConfig !== "object" || llmConfig === null) {
|
|
70
|
+
throw new Error("LLM configuration must be an object");
|
|
56
71
|
}
|
|
57
|
-
if (!(
|
|
58
|
-
throw new Error(
|
|
72
|
+
if (!("provider" in llmConfig) || typeof llmConfig.provider !== "string") {
|
|
73
|
+
throw new Error("LLM provider must be a string");
|
|
59
74
|
}
|
|
60
|
-
if (!(
|
|
61
|
-
throw new Error(
|
|
75
|
+
if (!("model" in llmConfig) || typeof llmConfig.model !== "string") {
|
|
76
|
+
throw new Error("LLM model must be a string");
|
|
62
77
|
}
|
|
63
|
-
if (
|
|
64
|
-
throw new Error(
|
|
78
|
+
if ("temperature" in llmConfig && typeof llmConfig.temperature !== "number") {
|
|
79
|
+
throw new Error("LLM temperature must be a number if provided");
|
|
65
80
|
}
|
|
66
|
-
if (
|
|
67
|
-
throw new Error(
|
|
81
|
+
if ("max_tokens" in llmConfig && typeof llmConfig.max_tokens !== "number") {
|
|
82
|
+
throw new Error("LLM max_tokens must be a number if provided");
|
|
68
83
|
}
|
|
69
|
-
if (
|
|
70
|
-
throw new Error(
|
|
84
|
+
if ("max_completion_tokens" in llmConfig && typeof llmConfig.max_completion_tokens !== "number") {
|
|
85
|
+
throw new Error("LLM max_completion_tokens must be a number if provided");
|
|
71
86
|
}
|
|
72
87
|
}
|
|
73
88
|
function validateMCPServerConfig(serverConfig) {
|
|
74
|
-
if (typeof serverConfig !==
|
|
75
|
-
throw new Error(
|
|
89
|
+
if (typeof serverConfig !== "object" || serverConfig === null) {
|
|
90
|
+
throw new Error("MCP server configuration must be an object");
|
|
76
91
|
}
|
|
77
|
-
if (!(
|
|
78
|
-
throw new Error(
|
|
92
|
+
if (!("url" in serverConfig) && !("command" in serverConfig)) {
|
|
93
|
+
throw new Error("MCP server configuration must include command or url");
|
|
79
94
|
}
|
|
80
|
-
if (
|
|
81
|
-
throw new Error(
|
|
95
|
+
if ("url" in serverConfig && typeof serverConfig.url !== "string") {
|
|
96
|
+
throw new Error("MCP server url must be a string");
|
|
82
97
|
}
|
|
83
|
-
if (
|
|
84
|
-
throw new Error(
|
|
98
|
+
if ("transport" in serverConfig && typeof serverConfig.transport !== "string") {
|
|
99
|
+
throw new Error("MCP server transport must be a string");
|
|
85
100
|
}
|
|
86
|
-
if (
|
|
87
|
-
throw new Error(
|
|
101
|
+
if ("type" in serverConfig && typeof serverConfig.type !== "string") {
|
|
102
|
+
throw new Error("MCP server type must be a string");
|
|
88
103
|
}
|
|
89
|
-
if (
|
|
90
|
-
if (typeof serverConfig.headers !==
|
|
91
|
-
throw new Error(
|
|
104
|
+
if ("headers" in serverConfig && serverConfig.headers !== undefined) {
|
|
105
|
+
if (typeof serverConfig.headers !== "object" || serverConfig.headers === null) {
|
|
106
|
+
throw new Error("MCP server headers must be an object if provided");
|
|
92
107
|
}
|
|
93
108
|
// Validate that all env values are strings
|
|
94
109
|
for (const [, value] of Object.entries(serverConfig.headers)) {
|
|
95
|
-
if (typeof value !==
|
|
96
|
-
throw new Error(
|
|
110
|
+
if (typeof value !== "string") {
|
|
111
|
+
throw new Error("All MCP server headers values must be strings");
|
|
97
112
|
}
|
|
98
113
|
}
|
|
99
114
|
}
|
|
100
|
-
if (
|
|
101
|
-
throw new Error(
|
|
115
|
+
if ("command" in serverConfig && typeof serverConfig.command !== "string") {
|
|
116
|
+
throw new Error("MCP server command must be a string");
|
|
102
117
|
}
|
|
103
|
-
if (
|
|
118
|
+
if ("args" in serverConfig) {
|
|
104
119
|
if (!Array.isArray(serverConfig.args)) {
|
|
105
|
-
throw new Error(
|
|
120
|
+
throw new Error("MCP server args must be an array");
|
|
106
121
|
}
|
|
107
|
-
if (serverConfig.args.some((arg) => typeof arg !==
|
|
108
|
-
throw new Error(
|
|
122
|
+
if (serverConfig.args.some((arg) => typeof arg !== "string")) {
|
|
123
|
+
throw new Error("All MCP server args must be strings");
|
|
109
124
|
}
|
|
110
125
|
}
|
|
111
|
-
if (
|
|
112
|
-
if (typeof serverConfig.env !==
|
|
113
|
-
throw new Error(
|
|
126
|
+
if ("env" in serverConfig && serverConfig.env !== undefined) {
|
|
127
|
+
if (typeof serverConfig.env !== "object" || serverConfig.env === null) {
|
|
128
|
+
throw new Error("MCP server env must be an object if provided");
|
|
114
129
|
}
|
|
115
130
|
// Validate that all env values are strings
|
|
116
131
|
for (const [, value] of Object.entries(serverConfig.env)) {
|
|
117
|
-
if (typeof value !==
|
|
118
|
-
throw new Error(
|
|
132
|
+
if (typeof value !== "string") {
|
|
133
|
+
throw new Error("All MCP server env values must be strings");
|
|
119
134
|
}
|
|
120
135
|
}
|
|
121
136
|
}
|
package/dist/load-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../src/load-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../src/load-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as child_process from
|
|
1
|
+
import * as child_process from "child_process";
|
|
2
2
|
/**
|
|
3
3
|
* Find and return a free port on localhost.
|
|
4
4
|
* @returns A Promise resolving to an available port number
|
|
@@ -10,7 +10,7 @@ export declare function findFreePort(): Promise<number>;
|
|
|
10
10
|
* and is used here to run local SSE/WS servers for connection testing.
|
|
11
11
|
* Ref: https://github.com/supercorp-ai/supergateway
|
|
12
12
|
*
|
|
13
|
-
* @param transportType - The transport type, either
|
|
13
|
+
* @param transportType - The transport type, either "SSE" or "WS"
|
|
14
14
|
* @param mcpServerRunCommand - The command to run the MCP server
|
|
15
15
|
* @returns A Promise resolving to [serverProcess, serverPort]
|
|
16
16
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as child_process from
|
|
2
|
-
import * as net from
|
|
1
|
+
import * as child_process from "child_process";
|
|
2
|
+
import * as net from "net";
|
|
3
3
|
// NOTE: Hard-coded dependency on the Supergateway message
|
|
4
4
|
// to easily identify the end of initialization.
|
|
5
5
|
const SUPERGATEWAY_READY_MESSAGE = "[supergateway] Listening on port";
|
|
@@ -11,7 +11,7 @@ export async function findFreePort() {
|
|
|
11
11
|
return new Promise((resolve, reject) => {
|
|
12
12
|
const server = net.createServer();
|
|
13
13
|
server.unref();
|
|
14
|
-
server.on(
|
|
14
|
+
server.on("error", reject);
|
|
15
15
|
server.listen(0, () => {
|
|
16
16
|
const port = server.address().port;
|
|
17
17
|
server.close(() => {
|
|
@@ -26,7 +26,7 @@ export async function findFreePort() {
|
|
|
26
26
|
* and is used here to run local SSE/WS servers for connection testing.
|
|
27
27
|
* Ref: https://github.com/supercorp-ai/supergateway
|
|
28
28
|
*
|
|
29
|
-
* @param transportType - The transport type, either
|
|
29
|
+
* @param transportType - The transport type, either "SSE" or "WS"
|
|
30
30
|
* @param mcpServerRunCommand - The command to run the MCP server
|
|
31
31
|
* @returns A Promise resolving to [serverProcess, serverPort]
|
|
32
32
|
*/
|
|
@@ -42,10 +42,10 @@ export async function startRemoteMcpServerLocally(transportType, mcpServerRunCom
|
|
|
42
42
|
"--port", serverPort.toString(),
|
|
43
43
|
];
|
|
44
44
|
// Add transport-specific arguments
|
|
45
|
-
if (transportType.toLowerCase() ===
|
|
45
|
+
if (transportType.toLowerCase() === "sse") {
|
|
46
46
|
command.push("--baseUrl", `http://localhost:${serverPort}`, "--ssePath", "/sse", "--messagePath", "/message");
|
|
47
47
|
}
|
|
48
|
-
else if (transportType.toLowerCase() ===
|
|
48
|
+
else if (transportType.toLowerCase() === "ws") {
|
|
49
49
|
command.push("--outputTransport", "ws", "--messagePath", "/message");
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
@@ -53,7 +53,7 @@ export async function startRemoteMcpServerLocally(transportType, mcpServerRunCom
|
|
|
53
53
|
}
|
|
54
54
|
// Start the server process with stdout/stderr piped
|
|
55
55
|
const serverProcess = child_process.spawn(command[0], command.slice(1), {
|
|
56
|
-
stdio: [
|
|
56
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
57
57
|
});
|
|
58
58
|
console.log(`Starting ${transportType.toUpperCase()} MCP Server Process with PID: ${serverProcess.pid}`);
|
|
59
59
|
// Return a promise that resolves when the server is ready
|
|
@@ -63,7 +63,7 @@ export async function startRemoteMcpServerLocally(transportType, mcpServerRunCom
|
|
|
63
63
|
reject(new Error(`Timed out waiting for ${transportType.toUpperCase()} server to start`));
|
|
64
64
|
}, 30000);
|
|
65
65
|
// Listen for the specific log message that indicates server is ready
|
|
66
|
-
serverProcess.stdout?.on(
|
|
66
|
+
serverProcess.stdout?.on("data", (data) => {
|
|
67
67
|
const output = data.toString();
|
|
68
68
|
console.log(output); // Still log the output to console
|
|
69
69
|
if (output.includes(SUPERGATEWAY_READY_MESSAGE)) {
|
|
@@ -73,14 +73,14 @@ export async function startRemoteMcpServerLocally(transportType, mcpServerRunCom
|
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
75
|
// Handle errors
|
|
76
|
-
serverProcess.stderr?.on(
|
|
76
|
+
serverProcess.stderr?.on("data", (data) => {
|
|
77
77
|
console.error(`Server error: ${data}`);
|
|
78
78
|
});
|
|
79
|
-
serverProcess.on(
|
|
79
|
+
serverProcess.on("error", (err) => {
|
|
80
80
|
clearTimeout(timeoutId);
|
|
81
81
|
reject(new Error(`Failed to start server: ${err.message}`));
|
|
82
82
|
});
|
|
83
|
-
serverProcess.on(
|
|
83
|
+
serverProcess.on("exit", (code) => {
|
|
84
84
|
if (code !== 0 && code !== null) {
|
|
85
85
|
clearTimeout(timeoutId);
|
|
86
86
|
reject(new Error(`Server process exited with code ${code}`));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h1deya/mcp-client-cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Simple MCP Client to quickly test and explore MCP servers from the command line",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -52,10 +52,12 @@
|
|
|
52
52
|
"publish:do": "npm run publish:prepare && npm publish --access=public"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@h1deya/langchain-mcp-tools": "^0.3.
|
|
55
|
+
"@h1deya/langchain-mcp-tools": "^0.3.6",
|
|
56
56
|
"@langchain/anthropic": "^0.3.11",
|
|
57
|
+
"@langchain/cerebras": "^0.0.3",
|
|
57
58
|
"@langchain/core": "^0.3.61",
|
|
58
59
|
"@langchain/google-genai": "^0.2.12",
|
|
60
|
+
"@langchain/groq": "^0.2.3",
|
|
59
61
|
"@langchain/langgraph": "^0.3.6",
|
|
60
62
|
"@langchain/openai": "^0.3.16",
|
|
61
63
|
"@langchain/xai": "^0.1.0",
|