@h1deya/mcp-client-cli 0.3.0 → 0.3.5
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 +49 -17
- package/dist/index.js +1 -1
- 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 +22 -9
- package/dist/init-chat-model.js.map +1 -1
- package/dist/load-config.d.ts +1 -1
- package/dist/load-config.d.ts.map +1 -1
- package/dist/load-config.js +63 -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 +5 -2
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Simple MCP Client to Explore MCP Servers
|
|
1
|
+
# Simple MCP Client to Explore MCP Servers [](https://github.com/hideya/mcp-langchain-client-ts/blob/main/LICENSE) [](https://www.npmjs.com/package/@h1deya/mcp-client-cli)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
**Quickly test and explore MCP servers from the command line!**
|
|
@@ -21,11 +21,14 @@ A Python equivalent of this utility is available [here](https://pypi.org/project
|
|
|
21
21
|
- Node.js 18+
|
|
22
22
|
- [optional] [`uv` (`uvx`)](https://docs.astral.sh/uv/getting-started/installation/)
|
|
23
23
|
installed to run Python-based local (stdio) MCP servers
|
|
24
|
-
- LLM API
|
|
24
|
+
- LLM API key(s) from
|
|
25
25
|
[OpenAI](https://platform.openai.com/api-keys),
|
|
26
26
|
[Anthropic](https://console.anthropic.com/settings/keys),
|
|
27
|
+
[Google AI Studio (for GenAI/Gemini)](https://aistudio.google.com/apikey),
|
|
28
|
+
[xAI](https://console.x.ai/),
|
|
29
|
+
[Cerebras](https://cloud.cerebras.ai),
|
|
27
30
|
and/or
|
|
28
|
-
[
|
|
31
|
+
[Groq](https://console.groq.com/keys),
|
|
29
32
|
as needed
|
|
30
33
|
|
|
31
34
|
## Quick Start
|
|
@@ -45,12 +48,12 @@ A Python equivalent of this utility is available [here](https://pypi.org/project
|
|
|
45
48
|
```json5
|
|
46
49
|
{
|
|
47
50
|
"llm": {
|
|
48
|
-
"
|
|
49
|
-
"model": "
|
|
50
|
-
// "
|
|
51
|
-
// "model": "
|
|
52
|
-
// "
|
|
53
|
-
// "model": "
|
|
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",
|
|
54
57
|
},
|
|
55
58
|
|
|
56
59
|
"mcp_servers": {
|
|
@@ -71,7 +74,10 @@ A Python equivalent of this utility is available [here](https://pypi.org/project
|
|
|
71
74
|
```bash
|
|
72
75
|
echo "ANTHROPIC_API_KEY=sk-ant-...
|
|
73
76
|
OPENAI_API_KEY=sk-proj-...
|
|
74
|
-
GOOGLE_API_KEY=AI...
|
|
77
|
+
GOOGLE_API_KEY=AI...
|
|
78
|
+
XAI_API_KEY=xai-...
|
|
79
|
+
CEREBRAS_API_KEY=csk-...
|
|
80
|
+
GROQ_API_KEY=gsk_..." > .env
|
|
75
81
|
|
|
76
82
|
code .env
|
|
77
83
|
```
|
|
@@ -138,9 +144,12 @@ mcp-client-cli --help
|
|
|
138
144
|
|
|
139
145
|
## Supported LLM Providers
|
|
140
146
|
|
|
141
|
-
- **OpenAI**: `
|
|
147
|
+
- **OpenAI**: `gpt-5-mini`, `gpt-4.1-nano`, etc.
|
|
142
148
|
- **Anthropic**: `claude-sonnet-4-0`, `claude-3-5-haiku-latest`, etc.
|
|
143
|
-
- **Google (GenAI)**: `gemini-2.5-
|
|
149
|
+
- **Google (GenAI)**: `gemini-2.5-flash`, `gemini-2.5-pro`, etc.
|
|
150
|
+
- **xAI**: `grok-3-mini`, `grok-4`, etc.
|
|
151
|
+
- **Cerebras**: `gpt-oss-120b`, etc.
|
|
152
|
+
- **Groq**: `openai/gpt-oss-20b`, `openai/gpt-oss-120b`, etc.
|
|
144
153
|
|
|
145
154
|
## Configuration
|
|
146
155
|
|
|
@@ -162,22 +171,39 @@ Create a `llm_mcp_config.json5` file:
|
|
|
162
171
|
```json5
|
|
163
172
|
{
|
|
164
173
|
"llm": {
|
|
165
|
-
"
|
|
174
|
+
"provider": "openai",
|
|
166
175
|
"model": "gpt-4.1-nano",
|
|
167
|
-
// model: "
|
|
176
|
+
// model: "gpt-5-mini",
|
|
168
177
|
},
|
|
169
178
|
|
|
170
179
|
// "llm": {
|
|
171
|
-
// "
|
|
180
|
+
// "provider": "anthropic",
|
|
172
181
|
// "model": "claude-3-5-haiku-latest",
|
|
173
182
|
// // "model": "claude-sonnet-4-0",
|
|
174
183
|
// },
|
|
175
184
|
|
|
176
185
|
// "llm": {
|
|
177
|
-
// "
|
|
186
|
+
// "provider": "google_genai",
|
|
178
187
|
// "model": "gemini-2.5-flash",
|
|
179
188
|
// // "model": "gemini-2.5-pro",
|
|
180
|
-
// }
|
|
189
|
+
// },
|
|
190
|
+
|
|
191
|
+
// "llm": {
|
|
192
|
+
// "provider": "xai",
|
|
193
|
+
// "model": "grok-3-mini",
|
|
194
|
+
// // "model": "grok-4",
|
|
195
|
+
// },
|
|
196
|
+
|
|
197
|
+
// "llm": {
|
|
198
|
+
// "provider": "cerebras",
|
|
199
|
+
// "model": "gpt-oss-120b",
|
|
200
|
+
// },
|
|
201
|
+
|
|
202
|
+
// "llm": {
|
|
203
|
+
// "provider": "groq",
|
|
204
|
+
// "model": "openai/gpt-oss-20b",
|
|
205
|
+
// // "model": "openai/gpt-oss-120b",
|
|
206
|
+
// },
|
|
181
207
|
|
|
182
208
|
"example_queries": [
|
|
183
209
|
"Tell me how LLMs work in a few sentences",
|
|
@@ -230,6 +256,8 @@ Create a `.env` file for API keys:
|
|
|
230
256
|
OPENAI_API_KEY=sk-ant-...
|
|
231
257
|
ANTHROPIC_API_KEY=sk-proj-...
|
|
232
258
|
GOOGLE_API_KEY=AI...
|
|
259
|
+
CEREBRAS_API_KEY=csk-...
|
|
260
|
+
GROQ_API_KEY=gsk_...
|
|
233
261
|
|
|
234
262
|
# Other services as needed
|
|
235
263
|
GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_...
|
|
@@ -249,6 +277,10 @@ There are quite a few useful MCP servers already available:
|
|
|
249
277
|
- Use `--verbose` flag to view the detailed logs
|
|
250
278
|
- Refer to [Debugging Section in MCP documentation](https://modelcontextprotocol.io/docs/tools/debugging)
|
|
251
279
|
|
|
280
|
+
## Change Log
|
|
281
|
+
|
|
282
|
+
Can be found [here](https://github.com/hideya/mcp-client-langchain-ts/blob/main/CHANGELOG.md)
|
|
283
|
+
|
|
252
284
|
## License
|
|
253
285
|
|
|
254
286
|
MIT License - see [LICENSE](LICENSE) file for details.
|
package/dist/index.js
CHANGED
|
@@ -141,7 +141,7 @@ function addLogFileWatcher(logPath, serverName) {
|
|
|
141
141
|
}
|
|
142
142
|
// Application initialization
|
|
143
143
|
async function initializeReactAgent(config, verbose, logDir) {
|
|
144
|
-
const llmProvider = config.llm.
|
|
144
|
+
const llmProvider = config.llm.provider;
|
|
145
145
|
console.log("Initializing model...", config.llm, "\n");
|
|
146
146
|
const llmConfig = {
|
|
147
147
|
modelProvider: llmProvider,
|
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,24 +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";
|
|
6
|
+
import { ChatXAI } from "@langchain/xai";
|
|
4
7
|
export function initChatModel(config) {
|
|
5
8
|
let model;
|
|
6
9
|
const { modelProvider, tools, ...llmConfig } = config;
|
|
7
10
|
try {
|
|
8
11
|
switch (modelProvider.toLowerCase()) {
|
|
9
|
-
case
|
|
12
|
+
case "openai":
|
|
10
13
|
model = new ChatOpenAI(llmConfig);
|
|
11
14
|
break;
|
|
12
|
-
case
|
|
15
|
+
case "anthropic":
|
|
13
16
|
model = new ChatAnthropic(llmConfig);
|
|
14
17
|
break;
|
|
15
|
-
case
|
|
18
|
+
case "google_genai":
|
|
19
|
+
case "google_gemini":
|
|
16
20
|
model = new ChatGoogleGenerativeAI(llmConfig);
|
|
17
21
|
break;
|
|
22
|
+
case "xai":
|
|
23
|
+
model = new ChatXAI(llmConfig);
|
|
24
|
+
break;
|
|
25
|
+
case "cerebras":
|
|
26
|
+
model = new ChatCerebras(llmConfig);
|
|
27
|
+
break;
|
|
28
|
+
case "groq":
|
|
29
|
+
model = new ChatGroq(llmConfig);
|
|
30
|
+
break;
|
|
18
31
|
default:
|
|
19
|
-
throw new Error(`Unsupported
|
|
32
|
+
throw new Error(`Unsupported LLM provider: ${modelProvider}`);
|
|
20
33
|
}
|
|
21
|
-
if (typeof model?.bindTools ===
|
|
34
|
+
if (typeof model?.bindTools === "function") {
|
|
22
35
|
if (tools && tools.length > 0) {
|
|
23
36
|
// FIXME
|
|
24
37
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
@@ -26,12 +39,12 @@ export function initChatModel(config) {
|
|
|
26
39
|
}
|
|
27
40
|
}
|
|
28
41
|
else {
|
|
29
|
-
throw new Error(`Tool calling unsupported by
|
|
42
|
+
throw new Error(`Tool calling unsupported by model: ${modelProvider}`);
|
|
30
43
|
}
|
|
31
44
|
return model;
|
|
32
45
|
}
|
|
33
46
|
catch (error) {
|
|
34
|
-
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"}`);
|
|
35
48
|
}
|
|
36
49
|
}
|
|
37
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,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,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 +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;CACF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+B/C"}
|
package/dist/load-config.js
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
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);
|
|
11
20
|
// Validate required fields
|
|
12
21
|
validateConfig(config);
|
|
13
22
|
return config;
|
|
@@ -20,26 +29,26 @@ export function loadConfig(path) {
|
|
|
20
29
|
}
|
|
21
30
|
}
|
|
22
31
|
function validateConfig(config) {
|
|
23
|
-
if (typeof config !==
|
|
24
|
-
throw new Error(
|
|
32
|
+
if (typeof config !== "object" || config === null) {
|
|
33
|
+
throw new Error("Configuration must be an object");
|
|
25
34
|
}
|
|
26
|
-
if (!(
|
|
27
|
-
throw new Error(
|
|
35
|
+
if (!("llm" in config)) {
|
|
36
|
+
throw new Error("LLM configuration is required");
|
|
28
37
|
}
|
|
29
38
|
validateLLMConfig(config.llm);
|
|
30
|
-
if (
|
|
39
|
+
if ("example_queries" in config) {
|
|
31
40
|
if (!Array.isArray(config.example_queries)) {
|
|
32
|
-
throw new Error(
|
|
41
|
+
throw new Error("example_queries must be an array if provided");
|
|
33
42
|
}
|
|
34
|
-
if (config.example_queries.some((query) => typeof query !==
|
|
35
|
-
throw new Error(
|
|
43
|
+
if (config.example_queries.some((query) => typeof query !== "string")) {
|
|
44
|
+
throw new Error("All example queries must be strings");
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
|
-
if (!(
|
|
39
|
-
throw new Error(
|
|
47
|
+
if (!("mcp_servers" in config)) {
|
|
48
|
+
throw new Error("mcp_servers configuration is required");
|
|
40
49
|
}
|
|
41
|
-
if (typeof config.mcp_servers !==
|
|
42
|
-
throw new Error(
|
|
50
|
+
if (typeof config.mcp_servers !== "object" || config.mcp_servers === null) {
|
|
51
|
+
throw new Error("mcp_servers must be an object");
|
|
43
52
|
}
|
|
44
53
|
Object.entries(config.mcp_servers).forEach(([key, value]) => {
|
|
45
54
|
try {
|
|
@@ -51,71 +60,71 @@ function validateConfig(config) {
|
|
|
51
60
|
});
|
|
52
61
|
}
|
|
53
62
|
function validateLLMConfig(llmConfig) {
|
|
54
|
-
if (typeof llmConfig !==
|
|
55
|
-
throw new Error(
|
|
63
|
+
if (typeof llmConfig !== "object" || llmConfig === null) {
|
|
64
|
+
throw new Error("LLM configuration must be an object");
|
|
56
65
|
}
|
|
57
|
-
if (!(
|
|
58
|
-
throw new Error(
|
|
66
|
+
if (!("provider" in llmConfig) || typeof llmConfig.provider !== "string") {
|
|
67
|
+
throw new Error("LLM provider must be a string");
|
|
59
68
|
}
|
|
60
|
-
if (!(
|
|
61
|
-
throw new Error(
|
|
69
|
+
if (!("model" in llmConfig) || typeof llmConfig.model !== "string") {
|
|
70
|
+
throw new Error("LLM model must be a string");
|
|
62
71
|
}
|
|
63
|
-
if (
|
|
64
|
-
throw new Error(
|
|
72
|
+
if ("temperature" in llmConfig && typeof llmConfig.temperature !== "number") {
|
|
73
|
+
throw new Error("LLM temperature must be a number if provided");
|
|
65
74
|
}
|
|
66
|
-
if (
|
|
67
|
-
throw new Error(
|
|
75
|
+
if ("max_tokens" in llmConfig && typeof llmConfig.max_tokens !== "number") {
|
|
76
|
+
throw new Error("LLM max_tokens must be a number if provided");
|
|
68
77
|
}
|
|
69
|
-
if (
|
|
70
|
-
throw new Error(
|
|
78
|
+
if ("max_completion_tokens" in llmConfig && typeof llmConfig.max_completion_tokens !== "number") {
|
|
79
|
+
throw new Error("LLM max_completion_tokens must be a number if provided");
|
|
71
80
|
}
|
|
72
81
|
}
|
|
73
82
|
function validateMCPServerConfig(serverConfig) {
|
|
74
|
-
if (typeof serverConfig !==
|
|
75
|
-
throw new Error(
|
|
83
|
+
if (typeof serverConfig !== "object" || serverConfig === null) {
|
|
84
|
+
throw new Error("MCP server configuration must be an object");
|
|
76
85
|
}
|
|
77
|
-
if (!(
|
|
78
|
-
throw new Error(
|
|
86
|
+
if (!("url" in serverConfig) && !("command" in serverConfig)) {
|
|
87
|
+
throw new Error("MCP server configuration must include command or url");
|
|
79
88
|
}
|
|
80
|
-
if (
|
|
81
|
-
throw new Error(
|
|
89
|
+
if ("url" in serverConfig && typeof serverConfig.url !== "string") {
|
|
90
|
+
throw new Error("MCP server url must be a string");
|
|
82
91
|
}
|
|
83
|
-
if (
|
|
84
|
-
throw new Error(
|
|
92
|
+
if ("transport" in serverConfig && typeof serverConfig.transport !== "string") {
|
|
93
|
+
throw new Error("MCP server transport must be a string");
|
|
85
94
|
}
|
|
86
|
-
if (
|
|
87
|
-
throw new Error(
|
|
95
|
+
if ("type" in serverConfig && typeof serverConfig.type !== "string") {
|
|
96
|
+
throw new Error("MCP server type must be a string");
|
|
88
97
|
}
|
|
89
|
-
if (
|
|
90
|
-
if (typeof serverConfig.headers !==
|
|
91
|
-
throw new Error(
|
|
98
|
+
if ("headers" in serverConfig && serverConfig.headers !== undefined) {
|
|
99
|
+
if (typeof serverConfig.headers !== "object" || serverConfig.headers === null) {
|
|
100
|
+
throw new Error("MCP server headers must be an object if provided");
|
|
92
101
|
}
|
|
93
102
|
// Validate that all env values are strings
|
|
94
103
|
for (const [, value] of Object.entries(serverConfig.headers)) {
|
|
95
|
-
if (typeof value !==
|
|
96
|
-
throw new Error(
|
|
104
|
+
if (typeof value !== "string") {
|
|
105
|
+
throw new Error("All MCP server headers values must be strings");
|
|
97
106
|
}
|
|
98
107
|
}
|
|
99
108
|
}
|
|
100
|
-
if (
|
|
101
|
-
throw new Error(
|
|
109
|
+
if ("command" in serverConfig && typeof serverConfig.command !== "string") {
|
|
110
|
+
throw new Error("MCP server command must be a string");
|
|
102
111
|
}
|
|
103
|
-
if (
|
|
112
|
+
if ("args" in serverConfig) {
|
|
104
113
|
if (!Array.isArray(serverConfig.args)) {
|
|
105
|
-
throw new Error(
|
|
114
|
+
throw new Error("MCP server args must be an array");
|
|
106
115
|
}
|
|
107
|
-
if (serverConfig.args.some((arg) => typeof arg !==
|
|
108
|
-
throw new Error(
|
|
116
|
+
if (serverConfig.args.some((arg) => typeof arg !== "string")) {
|
|
117
|
+
throw new Error("All MCP server args must be strings");
|
|
109
118
|
}
|
|
110
119
|
}
|
|
111
|
-
if (
|
|
112
|
-
if (typeof serverConfig.env !==
|
|
113
|
-
throw new Error(
|
|
120
|
+
if ("env" in serverConfig && serverConfig.env !== undefined) {
|
|
121
|
+
if (typeof serverConfig.env !== "object" || serverConfig.env === null) {
|
|
122
|
+
throw new Error("MCP server env must be an object if provided");
|
|
114
123
|
}
|
|
115
124
|
// Validate that all env values are strings
|
|
116
125
|
for (const [, value] of Object.entries(serverConfig.env)) {
|
|
117
|
-
if (typeof value !==
|
|
118
|
-
throw new Error(
|
|
126
|
+
if (typeof value !== "string") {
|
|
127
|
+
throw new Error("All MCP server env values must be strings");
|
|
119
128
|
}
|
|
120
129
|
}
|
|
121
130
|
}
|
package/dist/load-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../src/load-config.ts"],"names":[],"mappings":"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
|
|
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.5",
|
|
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,12 +52,15 @@
|
|
|
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.5",
|
|
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",
|
|
63
|
+
"@langchain/xai": "^0.1.0",
|
|
61
64
|
"@types/yargs": "^17.0.33",
|
|
62
65
|
"dotenv": "^16.4.7",
|
|
63
66
|
"json5": "^2.2.3",
|