@kwonye/mcpx 0.1.0 → 0.1.43
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/dist/adapters/claude-desktop.d.ts +8 -0
- package/dist/adapters/claude-desktop.js +116 -0
- package/dist/adapters/claude-desktop.js.map +1 -0
- package/dist/adapters/claude.d.ts +2 -1
- package/dist/adapters/claude.js +70 -23
- package/dist/adapters/claude.js.map +1 -1
- package/dist/adapters/cline.d.ts +2 -1
- package/dist/adapters/cline.js +72 -1
- package/dist/adapters/cline.js.map +1 -1
- package/dist/adapters/codex.d.ts +2 -1
- package/dist/adapters/codex.js +77 -2
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/cursor.d.ts +2 -1
- package/dist/adapters/cursor.js +72 -1
- package/dist/adapters/cursor.js.map +1 -1
- package/dist/adapters/index.js +9 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/kiro.d.ts +8 -0
- package/dist/adapters/kiro.js +122 -0
- package/dist/adapters/kiro.js.map +1 -0
- package/dist/adapters/opencode.d.ts +8 -0
- package/dist/adapters/opencode.js +124 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/adapters/qwen.d.ts +8 -0
- package/dist/adapters/qwen.js +114 -0
- package/dist/adapters/qwen.js.map +1 -0
- package/dist/adapters/{utils.d.ts → utils/index.d.ts} +9 -1
- package/dist/adapters/{utils.js → utils/index.js} +59 -2
- package/dist/adapters/utils/index.js.map +1 -0
- package/dist/adapters/vscode.d.ts +2 -1
- package/dist/adapters/vscode.js +72 -1
- package/dist/adapters/vscode.js.map +1 -1
- package/dist/cli.js +586 -23
- package/dist/cli.js.map +1 -1
- package/dist/compat/claude.d.ts +28 -0
- package/dist/compat/claude.js +252 -0
- package/dist/compat/claude.js.map +1 -0
- package/dist/compat/codex.d.ts +22 -0
- package/dist/compat/codex.js +179 -0
- package/dist/compat/codex.js.map +1 -0
- package/dist/compat/index.d.ts +28 -0
- package/dist/compat/index.js +108 -0
- package/dist/compat/index.js.map +1 -0
- package/dist/compat/qwen.d.ts +29 -0
- package/dist/compat/qwen.js +316 -0
- package/dist/compat/qwen.js.map +1 -0
- package/dist/compat/unsupported.d.ts +24 -0
- package/dist/compat/unsupported.js +47 -0
- package/dist/compat/unsupported.js.map +1 -0
- package/dist/compat/vscode.d.ts +21 -0
- package/dist/compat/vscode.js +164 -0
- package/dist/compat/vscode.js.map +1 -0
- package/dist/core/auth-probe.d.ts +9 -0
- package/dist/core/auth-probe.js +54 -0
- package/dist/core/auth-probe.js.map +1 -0
- package/dist/core/config.js +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.js +21 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/registry.d.ts +1 -0
- package/dist/core/registry.js +7 -0
- package/dist/core/registry.js.map +1 -1
- package/dist/core/status.d.ts +32 -0
- package/dist/core/status.js +63 -0
- package/dist/core/status.js.map +1 -0
- package/dist/core/sync.d.ts +2 -1
- package/dist/core/sync.js +70 -7
- package/dist/core/sync.js.map +1 -1
- package/dist/gateway/server.js +33 -3
- package/dist/gateway/server.js.map +1 -1
- package/dist/types.d.ts +54 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +14 -3
- package/LICENSE +0 -21
- package/README.md +0 -150
- package/dist/adapters/utils.js.map +0 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VS Code MCP compatibility layer.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - code --add-mcp '<json>' with single-server JSON
|
|
6
|
+
* - Fields: name, type, url, command, args, env, headers
|
|
7
|
+
*
|
|
8
|
+
* Rejects:
|
|
9
|
+
* - VS Code-only fields: sandbox, scope, container-specific config
|
|
10
|
+
* - Multi-server JSON arrays
|
|
11
|
+
* - Invalid JSON
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* VS Code-only fields that cannot be mapped to mcpx.
|
|
15
|
+
*/
|
|
16
|
+
const VS_CODE_ONLY_FIELDS = [
|
|
17
|
+
"sandbox",
|
|
18
|
+
"scope",
|
|
19
|
+
"container",
|
|
20
|
+
"containerId",
|
|
21
|
+
"workspaceFolder",
|
|
22
|
+
"lifecycle",
|
|
23
|
+
"alwaysAllow",
|
|
24
|
+
"disabled"
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Validates VS Code server config and rejects unsupported fields.
|
|
28
|
+
*/
|
|
29
|
+
function validateVSCodeConfig(config) {
|
|
30
|
+
// Check for VS Code-only fields
|
|
31
|
+
for (const field of VS_CODE_ONLY_FIELDS) {
|
|
32
|
+
if (config[field] !== undefined) {
|
|
33
|
+
return `VS Code field "${field}" is not supported. Use global \`mcpx add\` for advanced configuration.`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Validate required fields
|
|
37
|
+
if (!config.name) {
|
|
38
|
+
return "VS Code config must include 'name' field.";
|
|
39
|
+
}
|
|
40
|
+
// Must have either url (HTTP) or command (stdio)
|
|
41
|
+
if (!config.url && !config.command) {
|
|
42
|
+
return "VS Code config must include either 'url' (HTTP) or 'command' (stdio) field.";
|
|
43
|
+
}
|
|
44
|
+
// Cannot have both url and command
|
|
45
|
+
if (config.url && config.command) {
|
|
46
|
+
return "VS Code config cannot have both 'url' and 'command'. Specify one transport type.";
|
|
47
|
+
}
|
|
48
|
+
// Validate type field if present
|
|
49
|
+
if (config.type !== undefined && config.type !== "http" && config.type !== "stdio") {
|
|
50
|
+
return `Invalid 'type' value: ${config.type}. Must be 'http' or 'stdio'.`;
|
|
51
|
+
}
|
|
52
|
+
// Validate env is a simple string map
|
|
53
|
+
if (config.env !== undefined) {
|
|
54
|
+
if (typeof config.env !== "object" || config.env === null || Array.isArray(config.env)) {
|
|
55
|
+
return "'env' must be a key-value object.";
|
|
56
|
+
}
|
|
57
|
+
for (const [key, value] of Object.entries(config.env)) {
|
|
58
|
+
if (typeof value !== "string") {
|
|
59
|
+
return `'env["${key}"]' must be a string value.`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Validate headers is a simple string map
|
|
64
|
+
if (config.headers !== undefined) {
|
|
65
|
+
if (typeof config.headers !== "object" || config.headers === null || Array.isArray(config.headers)) {
|
|
66
|
+
return "'headers' must be a key-value object.";
|
|
67
|
+
}
|
|
68
|
+
for (const [key, value] of Object.entries(config.headers)) {
|
|
69
|
+
if (typeof value !== "string") {
|
|
70
|
+
return `'headers["${key}"]' must be a string value.`;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Validate args is an array of strings
|
|
75
|
+
if (config.args !== undefined) {
|
|
76
|
+
if (!Array.isArray(config.args)) {
|
|
77
|
+
return "'args' must be an array.";
|
|
78
|
+
}
|
|
79
|
+
for (let i = 0; i < config.args.length; i++) {
|
|
80
|
+
if (typeof config.args[i] !== "string") {
|
|
81
|
+
return `'args[${i}]' must be a string.`;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Normalizes VS Code JSON config to canonical mcpx add format.
|
|
89
|
+
*
|
|
90
|
+
* VS Code HTTP: { name, url, headers? }
|
|
91
|
+
* -> mcpx add <name> <url> --header "Key=Value"...
|
|
92
|
+
*
|
|
93
|
+
* VS Code stdio: { name, command, args?, env? }
|
|
94
|
+
* -> mcpx add <name> <command> [args...] --env KEY=VALUE...
|
|
95
|
+
*/
|
|
96
|
+
function normalizeVSCodeConfig(config) {
|
|
97
|
+
const normalized = [config.name];
|
|
98
|
+
if (config.url) {
|
|
99
|
+
// HTTP mode
|
|
100
|
+
normalized.push(config.url);
|
|
101
|
+
// Add headers
|
|
102
|
+
if (config.headers) {
|
|
103
|
+
for (const [key, value] of Object.entries(config.headers)) {
|
|
104
|
+
normalized.push("--header", `${key}=${value}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (config.command) {
|
|
109
|
+
// stdio mode
|
|
110
|
+
normalized.push(config.command);
|
|
111
|
+
// Add args
|
|
112
|
+
if (config.args && config.args.length > 0) {
|
|
113
|
+
normalized.push(...config.args);
|
|
114
|
+
}
|
|
115
|
+
// Add env vars
|
|
116
|
+
if (config.env) {
|
|
117
|
+
for (const [key, value] of Object.entries(config.env)) {
|
|
118
|
+
normalized.push("--env", `${key}=${value}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return normalized;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parses VS Code --add-mcp JSON payload and normalizes to mcpx add format.
|
|
126
|
+
*/
|
|
127
|
+
export function parseVSCodeArgs(jsonPayload) {
|
|
128
|
+
if (!jsonPayload) {
|
|
129
|
+
return {
|
|
130
|
+
normalizedArgs: [],
|
|
131
|
+
error: "Usage: mcpx code --add-mcp '<json>'"
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// Parse JSON
|
|
135
|
+
let config;
|
|
136
|
+
try {
|
|
137
|
+
config = JSON.parse(jsonPayload);
|
|
138
|
+
}
|
|
139
|
+
catch (parseError) {
|
|
140
|
+
return {
|
|
141
|
+
normalizedArgs: [],
|
|
142
|
+
error: `Invalid JSON: ${parseError.message}`
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// Reject arrays - we only support single-server config
|
|
146
|
+
if (Array.isArray(config)) {
|
|
147
|
+
return {
|
|
148
|
+
normalizedArgs: [],
|
|
149
|
+
error: "Array of servers not supported. Use `mcpx add` for each server individually."
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// Validate config
|
|
153
|
+
const validationError = validateVSCodeConfig(config);
|
|
154
|
+
if (validationError) {
|
|
155
|
+
return {
|
|
156
|
+
normalizedArgs: [],
|
|
157
|
+
error: validationError
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
// Normalize to mcpx add format
|
|
161
|
+
const normalized = normalizeVSCodeConfig(config);
|
|
162
|
+
return { normalizedArgs: normalized };
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=vscode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../src/compat/vscode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HttpServerSpec } from "../types.js";
|
|
2
|
+
import { SecretsManager } from "./secrets.js";
|
|
3
|
+
export interface HttpAuthProbeResult {
|
|
4
|
+
authRequired: boolean;
|
|
5
|
+
status?: number;
|
|
6
|
+
wwwAuthenticate?: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function probeHttpAuthRequirement(spec: HttpServerSpec, secrets: SecretsManager, timeoutMs?: number): Promise<HttpAuthProbeResult>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const JSON_RPC_VERSION = "2.0";
|
|
2
|
+
const DEFAULT_AUTH_PROBE_TIMEOUT_MS = 8000;
|
|
3
|
+
function resolveHeaders(spec, secrets) {
|
|
4
|
+
const headers = {
|
|
5
|
+
"content-type": "application/json",
|
|
6
|
+
accept: "application/json, text/event-stream"
|
|
7
|
+
};
|
|
8
|
+
for (const [key, value] of Object.entries(spec.headers ?? {})) {
|
|
9
|
+
headers[key] = secrets.resolveMaybeSecret(value);
|
|
10
|
+
}
|
|
11
|
+
return headers;
|
|
12
|
+
}
|
|
13
|
+
export async function probeHttpAuthRequirement(spec, secrets, timeoutMs = DEFAULT_AUTH_PROBE_TIMEOUT_MS) {
|
|
14
|
+
const timeoutController = new AbortController();
|
|
15
|
+
const timeoutHandle = setTimeout(() => timeoutController.abort(), timeoutMs);
|
|
16
|
+
try {
|
|
17
|
+
const headers = resolveHeaders(spec, secrets);
|
|
18
|
+
const response = await fetch(spec.url, {
|
|
19
|
+
method: "POST",
|
|
20
|
+
headers,
|
|
21
|
+
body: JSON.stringify({
|
|
22
|
+
jsonrpc: JSON_RPC_VERSION,
|
|
23
|
+
id: "mcpx-auth-probe",
|
|
24
|
+
method: "tools/list",
|
|
25
|
+
params: {}
|
|
26
|
+
}),
|
|
27
|
+
signal: timeoutController.signal
|
|
28
|
+
});
|
|
29
|
+
if (response.status === 401 || response.status === 403) {
|
|
30
|
+
return {
|
|
31
|
+
authRequired: true,
|
|
32
|
+
status: response.status,
|
|
33
|
+
wwwAuthenticate: response.headers.get("www-authenticate") ?? undefined
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
authRequired: false,
|
|
38
|
+
status: response.status
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const isAbort = error.name === "AbortError";
|
|
43
|
+
return {
|
|
44
|
+
authRequired: false,
|
|
45
|
+
error: isAbort
|
|
46
|
+
? `Auth probe timed out after ${timeoutMs}ms.`
|
|
47
|
+
: error.message
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
clearTimeout(timeoutHandle);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=auth-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-probe.js","sourceRoot":"","sources":["../../src/core/auth-probe.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAS3C,SAAS,cAAc,CAAC,IAAoB,EAAE,OAAuB;IACnE,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,qCAAqC;KAC9C,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAoB,EACpB,OAAuB,EACvB,SAAS,GAAG,6BAA6B;IAEzC,MAAM,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO,EAAE,gBAAgB;gBACzB,EAAE,EAAE,iBAAiB;gBACrB,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,EAAE;aACX,CAAC;YACF,MAAM,EAAE,iBAAiB,CAAC,MAAM;SACjC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,OAAO;gBACL,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS;aACvE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAI,KAA2B,CAAC,IAAI,KAAK,YAAY,CAAC;QACnE,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,OAAO;gBACZ,CAAC,CAAC,8BAA8B,SAAS,KAAK;gBAC9C,CAAC,CAAE,KAAe,CAAC,OAAO;SAC7B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
package/dist/core/config.js
CHANGED
|
@@ -54,7 +54,7 @@ export function loadConfig(configPath = getConfigPath()) {
|
|
|
54
54
|
}
|
|
55
55
|
const clientEntries = {};
|
|
56
56
|
for (const [key, value] of Object.entries(parsed.data.clients)) {
|
|
57
|
-
if (["claude", "codex", "cursor", "cline", "vscode"].includes(key)) {
|
|
57
|
+
if (["claude", "codex", "cursor", "cline", "opencode", "kiro", "vscode", "qwen"].includes(key)) {
|
|
58
58
|
clientEntries[key] = value;
|
|
59
59
|
}
|
|
60
60
|
}
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { loadConfig, saveConfig, defaultConfig } from "./config.js";
|
|
2
|
+
export { getDaemonStatus, startDaemon, stopDaemon, restartDaemon, readDaemonLogs, runDaemonForeground } from "./daemon.js";
|
|
3
|
+
export type { DaemonStatus, DaemonStartResult } from "./daemon.js";
|
|
4
|
+
export { syncAllClients, getGatewayUrl } from "./sync.js";
|
|
5
|
+
export type { SyncSummary } from "./sync.js";
|
|
6
|
+
export { addServer, removeServer, updateServer } from "./registry.js";
|
|
7
|
+
export { SecretsManager } from "./secrets.js";
|
|
8
|
+
export { applyAuthReference, removeAuthReference, listAuthBindings, resolveAuthTarget, defaultAuthSecretName, maybePrefixBearer, secretRefName, toSecretRef } from "./server-auth.js";
|
|
9
|
+
export { buildStatusReport, STATUS_CLIENTS } from "./status.js";
|
|
10
|
+
export type { StatusReport, StatusServerEntry, StatusClientMapping, StatusAuthBinding } from "./status.js";
|
|
11
|
+
export { probeHttpAuthRequirement } from "./auth-probe.js";
|
|
12
|
+
export type { HttpAuthProbeResult } from "./auth-probe.js";
|
|
13
|
+
export { loadManagedIndex } from "./managed-index.js";
|
|
14
|
+
export { getConfigPath, getManagedIndexPath } from "./paths.js";
|
|
15
|
+
export type { McpxConfig, ClientId, ClientStatus, UpstreamServerSpec, HttpServerSpec, StdioServerSpec, GatewayConfig, ClientSyncState, ManagedIndex, ManagedEntry, ManagedClientState, ClientImportCandidate, ClientImportScanResult, ClientImportSkippedEntry, SyncImportReport, SyncImportedEntry, SyncDuplicateImportEntry, SyncImportConflictEntry, SyncImportErrorEntry, SyncResult, ManagedGatewayEntry } from "../types.js";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Config
|
|
2
|
+
export { loadConfig, saveConfig, defaultConfig } from "./config.js";
|
|
3
|
+
// Daemon
|
|
4
|
+
export { getDaemonStatus, startDaemon, stopDaemon, restartDaemon, readDaemonLogs, runDaemonForeground } from "./daemon.js";
|
|
5
|
+
// Sync
|
|
6
|
+
export { syncAllClients, getGatewayUrl } from "./sync.js";
|
|
7
|
+
// Registry (server add/remove)
|
|
8
|
+
export { addServer, removeServer, updateServer } from "./registry.js";
|
|
9
|
+
// Secrets
|
|
10
|
+
export { SecretsManager } from "./secrets.js";
|
|
11
|
+
// Server Auth
|
|
12
|
+
export { applyAuthReference, removeAuthReference, listAuthBindings, resolveAuthTarget, defaultAuthSecretName, maybePrefixBearer, secretRefName, toSecretRef } from "./server-auth.js";
|
|
13
|
+
// Status
|
|
14
|
+
export { buildStatusReport, STATUS_CLIENTS } from "./status.js";
|
|
15
|
+
// Auth Probe
|
|
16
|
+
export { probeHttpAuthRequirement } from "./auth-probe.js";
|
|
17
|
+
// Managed Index
|
|
18
|
+
export { loadManagedIndex } from "./managed-index.js";
|
|
19
|
+
// Paths
|
|
20
|
+
export { getConfigPath, getManagedIndexPath } from "./paths.js";
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpE,SAAS;AACT,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAGrB,OAAO;AACP,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1D,+BAA+B;AAC/B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEtE,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,cAAc;AACd,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,aAAa;AACb,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/core/registry.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ import { SecretsManager } from "./secrets.js";
|
|
|
3
3
|
export declare function validateServerName(name: string): void;
|
|
4
4
|
export declare function addServer(config: McpxConfig, name: string, spec: UpstreamServerSpec, force?: boolean): void;
|
|
5
5
|
export declare function removeServer(config: McpxConfig, name: string, force?: boolean): void;
|
|
6
|
+
export declare function updateServer(config: McpxConfig, name: string, spec: UpstreamServerSpec): void;
|
|
6
7
|
export declare function getGatewayTokenSecretName(config: McpxConfig): string;
|
|
7
8
|
export declare function ensureGatewayToken(config: McpxConfig, secrets: SecretsManager): string;
|
package/dist/core/registry.js
CHANGED
|
@@ -16,6 +16,13 @@ export function removeServer(config, name, force = false) {
|
|
|
16
16
|
}
|
|
17
17
|
delete config.servers[name];
|
|
18
18
|
}
|
|
19
|
+
export function updateServer(config, name, spec) {
|
|
20
|
+
validateServerName(name);
|
|
21
|
+
if (!config.servers[name]) {
|
|
22
|
+
throw new Error(`Server \"${name}\" does not exist.`);
|
|
23
|
+
}
|
|
24
|
+
config.servers[name] = spec;
|
|
25
|
+
}
|
|
19
26
|
export function getGatewayTokenSecretName(config) {
|
|
20
27
|
if (!config.gateway.tokenRef.startsWith("secret://")) {
|
|
21
28
|
return "local_gateway_token";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAkB,EAAE,IAAY,EAAE,IAAwB,EAAE,KAAK,GAAG,KAAK;IACjG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,8CAA8C,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAY,EAAE,KAAK,GAAG,KAAK;IAC1E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAkB;IAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,OAAuB;IAC5E,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAkB,EAAE,IAAY,EAAE,IAAwB,EAAE,KAAK,GAAG,KAAK;IACjG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,8CAA8C,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAY,EAAE,KAAK,GAAG,KAAK;IAC1E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,IAAY,EAAE,IAAwB;IACrF,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAkB;IAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,OAAuB;IAC5E,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type DaemonStatus } from "./daemon.js";
|
|
2
|
+
import type { ClientId, ClientStatus, ManagedIndex, McpxConfig, UpstreamServerSpec } from "../types.js";
|
|
3
|
+
export declare const STATUS_CLIENTS: ClientId[];
|
|
4
|
+
export interface StatusAuthBinding {
|
|
5
|
+
kind: "header" | "env";
|
|
6
|
+
key: string;
|
|
7
|
+
value: string;
|
|
8
|
+
secretName?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface StatusClientMapping {
|
|
11
|
+
clientId: ClientId;
|
|
12
|
+
managed: boolean;
|
|
13
|
+
status: ClientStatus;
|
|
14
|
+
configPath?: string;
|
|
15
|
+
message?: string;
|
|
16
|
+
lastSyncAt?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface StatusServerEntry {
|
|
19
|
+
name: string;
|
|
20
|
+
transport: UpstreamServerSpec["transport"];
|
|
21
|
+
target: string;
|
|
22
|
+
authBindings: StatusAuthBinding[];
|
|
23
|
+
clients: StatusClientMapping[];
|
|
24
|
+
}
|
|
25
|
+
export interface StatusReport {
|
|
26
|
+
gatewayUrl: string;
|
|
27
|
+
daemon: DaemonStatus;
|
|
28
|
+
upstreamCount: number;
|
|
29
|
+
servers: StatusServerEntry[];
|
|
30
|
+
clients: McpxConfig["clients"];
|
|
31
|
+
}
|
|
32
|
+
export declare function buildStatusReport(config: McpxConfig, managedIndex: ManagedIndex, daemon?: DaemonStatus): StatusReport;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { getDaemonStatus } from "./daemon.js";
|
|
2
|
+
import { getGatewayUrl } from "./sync.js";
|
|
3
|
+
import { listAuthBindings, secretRefName } from "./server-auth.js";
|
|
4
|
+
export const STATUS_CLIENTS = ["claude", "codex", "cursor", "cline", "opencode", "kiro", "vscode", "qwen"];
|
|
5
|
+
function describeServerTarget(spec) {
|
|
6
|
+
if (spec.transport === "http") {
|
|
7
|
+
return spec.url;
|
|
8
|
+
}
|
|
9
|
+
const args = (spec.args ?? []).join(" ");
|
|
10
|
+
const command = `${spec.command}${args ? ` ${args}` : ""}`;
|
|
11
|
+
return spec.cwd ? `${command} (cwd: ${spec.cwd})` : command;
|
|
12
|
+
}
|
|
13
|
+
function deriveClientStatus(managed, configured) {
|
|
14
|
+
if (configured) {
|
|
15
|
+
return configured;
|
|
16
|
+
}
|
|
17
|
+
return managed ? "SYNCED" : "SKIPPED";
|
|
18
|
+
}
|
|
19
|
+
function buildClientMappings(config, managedIndex, serverName) {
|
|
20
|
+
return STATUS_CLIENTS.map((clientId) => {
|
|
21
|
+
const configState = config.clients[clientId];
|
|
22
|
+
const managedClient = managedIndex.managed[clientId];
|
|
23
|
+
const managedEntry = managedClient?.entries?.[`${serverName} (mcpx)`];
|
|
24
|
+
const managed = Boolean(managedEntry);
|
|
25
|
+
return {
|
|
26
|
+
clientId,
|
|
27
|
+
managed,
|
|
28
|
+
status: deriveClientStatus(managed, configState?.status),
|
|
29
|
+
configPath: managedClient?.configPath ?? configState?.configPath,
|
|
30
|
+
message: configState?.message,
|
|
31
|
+
lastSyncAt: managedEntry?.lastSyncedAt ?? configState?.lastSyncAt
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function buildAuthBindings(spec) {
|
|
36
|
+
return listAuthBindings(spec).map((binding) => ({
|
|
37
|
+
kind: binding.kind,
|
|
38
|
+
key: binding.key,
|
|
39
|
+
value: binding.value,
|
|
40
|
+
secretName: secretRefName(binding.value) ?? undefined
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
export function buildStatusReport(config, managedIndex, daemon = getDaemonStatus(config)) {
|
|
44
|
+
const serverNames = Object.keys(config.servers).sort((left, right) => left.localeCompare(right));
|
|
45
|
+
const servers = serverNames.map((name) => {
|
|
46
|
+
const spec = config.servers[name];
|
|
47
|
+
return {
|
|
48
|
+
name,
|
|
49
|
+
transport: spec.transport,
|
|
50
|
+
target: describeServerTarget(spec),
|
|
51
|
+
authBindings: buildAuthBindings(spec),
|
|
52
|
+
clients: buildClientMappings(config, managedIndex, name)
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
gatewayUrl: getGatewayUrl(config),
|
|
57
|
+
daemon,
|
|
58
|
+
upstreamCount: servers.length,
|
|
59
|
+
servers,
|
|
60
|
+
clients: config.clients
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/core/status.ts"],"names":[],"mappings":"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"}
|
package/dist/core/sync.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { ClientId, McpxConfig, SyncResult } from "../types.js";
|
|
1
|
+
import type { ClientId, McpxConfig, SyncImportReport, SyncResult } from "../types.js";
|
|
2
2
|
import { SecretsManager } from "./secrets.js";
|
|
3
3
|
export interface SyncSummary {
|
|
4
4
|
gatewayUrl: string;
|
|
5
|
+
imports: SyncImportReport;
|
|
5
6
|
results: SyncResult[];
|
|
6
7
|
hasErrors: boolean;
|
|
7
8
|
}
|
package/dist/core/sync.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getAdapters } from "../adapters/index.js";
|
|
2
|
+
import { serverSpecsEqual } from "../adapters/utils/index.js";
|
|
2
3
|
import { loadManagedIndex, saveManagedIndex } from "./managed-index.js";
|
|
3
4
|
import { getManagedIndexPath } from "./paths.js";
|
|
4
5
|
import { ensureGatewayToken } from "./registry.js";
|
|
@@ -9,10 +10,10 @@ export function getGatewayUrl(config) {
|
|
|
9
10
|
function buildManagedEntries(config, gatewayUrl, localToken) {
|
|
10
11
|
const names = Object.keys(config.servers);
|
|
11
12
|
return names.map((name) => ({
|
|
12
|
-
name
|
|
13
|
+
name: `${name} (mcpx)`,
|
|
13
14
|
url: `${gatewayUrl}?upstream=${encodeURIComponent(name)}`,
|
|
14
15
|
headers: {
|
|
15
|
-
|
|
16
|
+
Authorization: `Bearer ${localToken}`
|
|
16
17
|
}
|
|
17
18
|
}));
|
|
18
19
|
}
|
|
@@ -20,12 +21,70 @@ export function syncAllClients(config, secrets, targetClients) {
|
|
|
20
21
|
const adapters = getAdapters();
|
|
21
22
|
const managedIndexPath = getManagedIndexPath();
|
|
22
23
|
const managedIndex = loadManagedIndex(managedIndexPath);
|
|
23
|
-
const localToken = ensureGatewayToken(config, secrets);
|
|
24
|
-
const gatewayUrl = getGatewayUrl(config);
|
|
25
|
-
const managedEntries = buildManagedEntries(config, gatewayUrl, localToken);
|
|
26
24
|
const filteredAdapters = targetClients && targetClients.length > 0
|
|
27
25
|
? adapters.filter((adapter) => targetClients.includes(adapter.id))
|
|
28
26
|
: adapters;
|
|
27
|
+
const imports = {
|
|
28
|
+
imported: [],
|
|
29
|
+
duplicates: [],
|
|
30
|
+
skipped: [],
|
|
31
|
+
conflicts: [],
|
|
32
|
+
errors: []
|
|
33
|
+
};
|
|
34
|
+
const sourceEntriesToRemove = new Map();
|
|
35
|
+
for (const adapter of filteredAdapters) {
|
|
36
|
+
try {
|
|
37
|
+
const scan = adapter.scanForImports(config, managedIndex);
|
|
38
|
+
imports.skipped.push(...scan.skipped);
|
|
39
|
+
for (const candidate of scan.candidates) {
|
|
40
|
+
const existing = config.servers[candidate.serverName];
|
|
41
|
+
if (!existing) {
|
|
42
|
+
config.servers[candidate.serverName] = candidate.spec;
|
|
43
|
+
imports.imported.push({
|
|
44
|
+
clientId: candidate.clientId,
|
|
45
|
+
configPath: candidate.configPath,
|
|
46
|
+
sourceEntryName: candidate.sourceEntryName,
|
|
47
|
+
serverName: candidate.serverName
|
|
48
|
+
});
|
|
49
|
+
if (!sourceEntriesToRemove.has(candidate.clientId)) {
|
|
50
|
+
sourceEntriesToRemove.set(candidate.clientId, new Set());
|
|
51
|
+
}
|
|
52
|
+
sourceEntriesToRemove.get(candidate.clientId)?.add(candidate.sourceEntryName);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (serverSpecsEqual(existing, candidate.spec)) {
|
|
56
|
+
imports.duplicates.push({
|
|
57
|
+
clientId: candidate.clientId,
|
|
58
|
+
configPath: candidate.configPath,
|
|
59
|
+
sourceEntryName: candidate.sourceEntryName,
|
|
60
|
+
serverName: candidate.serverName
|
|
61
|
+
});
|
|
62
|
+
if (!sourceEntriesToRemove.has(candidate.clientId)) {
|
|
63
|
+
sourceEntriesToRemove.set(candidate.clientId, new Set());
|
|
64
|
+
}
|
|
65
|
+
sourceEntriesToRemove.get(candidate.clientId)?.add(candidate.sourceEntryName);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
imports.conflicts.push({
|
|
69
|
+
clientId: candidate.clientId,
|
|
70
|
+
configPath: candidate.configPath,
|
|
71
|
+
sourceEntryName: candidate.sourceEntryName,
|
|
72
|
+
serverName: candidate.serverName,
|
|
73
|
+
message: `Server "${candidate.serverName}" already exists in mcpx with a different configuration.`
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
imports.errors.push({
|
|
79
|
+
clientId: adapter.id,
|
|
80
|
+
configPath: adapter.detectConfigPath() ?? undefined,
|
|
81
|
+
message: error instanceof Error ? error.message : String(error)
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const localToken = ensureGatewayToken(config, secrets);
|
|
86
|
+
const gatewayUrl = getGatewayUrl(config);
|
|
87
|
+
const managedEntries = buildManagedEntries(config, gatewayUrl, localToken);
|
|
29
88
|
const results = [];
|
|
30
89
|
for (const adapter of filteredAdapters) {
|
|
31
90
|
if (!adapter.supportsHttp()) {
|
|
@@ -39,7 +98,8 @@ export function syncAllClients(config, secrets, targetClients) {
|
|
|
39
98
|
const result = adapter.syncGateway(config, {
|
|
40
99
|
managedEntries,
|
|
41
100
|
managedIndex,
|
|
42
|
-
managedIndexPath
|
|
101
|
+
managedIndexPath,
|
|
102
|
+
sourceEntriesToRemove: Array.from(sourceEntriesToRemove.get(adapter.id) ?? [])
|
|
43
103
|
});
|
|
44
104
|
results.push(result);
|
|
45
105
|
}
|
|
@@ -53,9 +113,12 @@ export function syncAllClients(config, secrets, targetClients) {
|
|
|
53
113
|
}
|
|
54
114
|
saveManagedIndex(managedIndex, managedIndexPath);
|
|
55
115
|
saveConfig(config);
|
|
56
|
-
const hasErrors = results.some((result) => result.status === "ERROR")
|
|
116
|
+
const hasErrors = results.some((result) => result.status === "ERROR")
|
|
117
|
+
|| imports.conflicts.length > 0
|
|
118
|
+
|| imports.errors.length > 0;
|
|
57
119
|
return {
|
|
58
120
|
gatewayUrl,
|
|
121
|
+
imports,
|
|
59
122
|
results,
|
|
60
123
|
hasErrors
|
|
61
124
|
};
|
package/dist/core/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/core/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/core/sync.ts"],"names":[],"mappings":"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"}
|