@apify/mcpc 0.1.4 → 0.1.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/.claude/settings.local.json +31 -1
- package/.idea/codeStyles/Project.xml +4 -1
- package/.idea/workspace.xml +308 -276
- package/README.md +666 -521
- package/dist/bridge/index.js +78 -3
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/proxy-server.d.ts +22 -0
- package/dist/bridge/proxy-server.d.ts.map +1 -0
- package/dist/bridge/proxy-server.js +161 -0
- package/dist/bridge/proxy-server.js.map +1 -0
- package/dist/cli/commands/clean.js +8 -8
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/logging.js +1 -1
- package/dist/cli/commands/logging.js.map +1 -1
- package/dist/cli/commands/prompts.d.ts.map +1 -1
- package/dist/cli/commands/prompts.js +13 -4
- package/dist/cli/commands/prompts.js.map +1 -1
- package/dist/cli/commands/resources.js +5 -5
- package/dist/cli/commands/resources.js.map +1 -1
- package/dist/cli/commands/sessions.d.ts +2 -0
- package/dist/cli/commands/sessions.d.ts.map +1 -1
- package/dist/cli/commands/sessions.js +68 -57
- package/dist/cli/commands/sessions.js.map +1 -1
- package/dist/cli/commands/tools.d.ts +0 -1
- package/dist/cli/commands/tools.d.ts.map +1 -1
- package/dist/cli/commands/tools.js +9 -9
- package/dist/cli/commands/tools.js.map +1 -1
- package/dist/cli/commands/utilities.js +1 -1
- package/dist/cli/commands/utilities.js.map +1 -1
- package/dist/cli/helpers.d.ts +7 -2
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/helpers.js +31 -14
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/index.js +75 -45
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +87 -5
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/parser.d.ts +6 -1
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +78 -53
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/shell.d.ts.map +1 -1
- package/dist/cli/shell.js +27 -13
- package/dist/cli/shell.js.map +1 -1
- package/dist/core/factory.d.ts.map +1 -1
- package/dist/core/factory.js +1 -0
- package/dist/core/factory.js.map +1 -1
- package/dist/core/mcp-client.d.ts +5 -0
- package/dist/core/mcp-client.d.ts.map +1 -1
- package/dist/core/mcp-client.js +76 -26
- package/dist/core/mcp-client.js.map +1 -1
- package/dist/lib/auth/keychain.d.ts +3 -0
- package/dist/lib/auth/keychain.d.ts.map +1 -1
- package/dist/lib/auth/keychain.js +18 -0
- package/dist/lib/auth/keychain.js.map +1 -1
- package/dist/lib/auth/oauth-flow.d.ts.map +1 -1
- package/dist/lib/auth/oauth-flow.js +52 -12
- package/dist/lib/auth/oauth-flow.js.map +1 -1
- package/dist/lib/bridge-manager.d.ts +2 -1
- package/dist/lib/bridge-manager.d.ts.map +1 -1
- package/dist/lib/bridge-manager.js +25 -6
- package/dist/lib/bridge-manager.js.map +1 -1
- package/dist/lib/errors.d.ts +6 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +13 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/logger.d.ts +2 -0
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +10 -0
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/schema-validator.d.ts.map +1 -1
- package/dist/lib/schema-validator.js +45 -0
- package/dist/lib/schema-validator.js.map +1 -1
- package/dist/lib/sessions.d.ts +1 -1
- package/dist/lib/sessions.d.ts.map +1 -1
- package/dist/lib/sessions.js +31 -10
- package/dist/lib/sessions.js.map +1 -1
- package/dist/lib/types.d.ts +18 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +5 -1
- package/dist/lib/utils.js.map +1 -1
- package/docs/README.md +19 -0
- package/docs/TODOs.md +40 -0
- package/docs/claude-skill/SKILL.md +53 -28
- package/docs/images/mcpc-screenshot.png +0 -0
- package/package.json +4 -3
- package/PUBLISHING.md +0 -111
- package/TODOs.md +0 -46
package/dist/core/mcp-client.js
CHANGED
|
@@ -5,8 +5,14 @@ export class McpClient {
|
|
|
5
5
|
client;
|
|
6
6
|
logger;
|
|
7
7
|
negotiatedProtocolVersion;
|
|
8
|
+
transport;
|
|
9
|
+
hasConnected = false;
|
|
10
|
+
requestTimeout;
|
|
8
11
|
constructor(clientInfo, options = {}) {
|
|
9
12
|
this.logger = options.logger || createNoOpLogger();
|
|
13
|
+
if (options.requestTimeout !== undefined) {
|
|
14
|
+
this.requestTimeout = options.requestTimeout;
|
|
15
|
+
}
|
|
10
16
|
this.client = new SDKClient(clientInfo, {
|
|
11
17
|
capabilities: options.capabilities || {},
|
|
12
18
|
...options,
|
|
@@ -16,23 +22,28 @@ export class McpClient {
|
|
|
16
22
|
this.logger.debug('Client aborted (expected during close)');
|
|
17
23
|
return;
|
|
18
24
|
}
|
|
19
|
-
this.logger.
|
|
25
|
+
this.logger.log(this.hasConnected ? 'error' : 'debug', 'Client error:', error);
|
|
20
26
|
};
|
|
21
27
|
}
|
|
28
|
+
getRequestOptions() {
|
|
29
|
+
return this.requestTimeout ? { timeout: this.requestTimeout } : undefined;
|
|
30
|
+
}
|
|
22
31
|
async connect(transport) {
|
|
23
32
|
try {
|
|
24
33
|
this.logger.debug('Connecting to MCP server...');
|
|
34
|
+
this.transport = transport;
|
|
25
35
|
transport.onerror = (error) => {
|
|
26
36
|
if (isShutdownError(error)) {
|
|
27
37
|
this.logger.debug('Transport aborted (expected during close)');
|
|
28
38
|
return;
|
|
29
39
|
}
|
|
30
|
-
this.logger.
|
|
40
|
+
this.logger.log(this.hasConnected ? 'error' : 'debug', 'Transport error:', error);
|
|
31
41
|
};
|
|
32
42
|
transport.onclose = () => {
|
|
33
43
|
this.logger.debug('Transport closed');
|
|
34
44
|
};
|
|
35
45
|
await this.client.connect(transport);
|
|
46
|
+
this.hasConnected = true;
|
|
36
47
|
const transportWithVersion = transport;
|
|
37
48
|
if (transportWithVersion.protocolVersion) {
|
|
38
49
|
this.negotiatedProtocolVersion = transportWithVersion.protocolVersion;
|
|
@@ -45,15 +56,36 @@ export class McpClient {
|
|
|
45
56
|
}
|
|
46
57
|
catch (error) {
|
|
47
58
|
this.logger.error('Failed to connect:', error);
|
|
48
|
-
throw new NetworkError(`Failed to connect to MCP server: ${error.message}`, {
|
|
59
|
+
throw new NetworkError(`Failed to connect to MCP server: ${error.message}`, {
|
|
60
|
+
originalError: error,
|
|
61
|
+
});
|
|
49
62
|
}
|
|
50
63
|
}
|
|
51
64
|
async close() {
|
|
52
65
|
this.logger.debug('Closing connection...');
|
|
53
|
-
|
|
66
|
+
try {
|
|
67
|
+
if (this.transport?.terminateSession) {
|
|
68
|
+
this.logger.debug('Terminating session (sending DELETE)...');
|
|
69
|
+
try {
|
|
70
|
+
await Promise.race([
|
|
71
|
+
this.transport.terminateSession(),
|
|
72
|
+
new Promise((resolve) => setTimeout(resolve, 2000)),
|
|
73
|
+
]);
|
|
74
|
+
this.logger.debug('Session terminated');
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
this.logger.debug('Error terminating session:', error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
await Promise.race([
|
|
81
|
+
this.client.close(),
|
|
82
|
+
new Promise((resolve) => setTimeout(resolve, 1000)),
|
|
83
|
+
]);
|
|
84
|
+
this.logger.debug('Connection closed');
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
54
87
|
this.logger.debug('Error during close (ignored):', error);
|
|
55
|
-
}
|
|
56
|
-
this.logger.debug('Connection closed');
|
|
88
|
+
}
|
|
57
89
|
}
|
|
58
90
|
getServerDetails() {
|
|
59
91
|
const details = {};
|
|
@@ -73,7 +105,7 @@ export class McpClient {
|
|
|
73
105
|
async ping() {
|
|
74
106
|
try {
|
|
75
107
|
this.logger.debug('Sending ping...');
|
|
76
|
-
await this.client.ping();
|
|
108
|
+
await this.client.ping(this.getRequestOptions());
|
|
77
109
|
this.logger.debug('Ping successful');
|
|
78
110
|
}
|
|
79
111
|
catch (error) {
|
|
@@ -84,13 +116,15 @@ export class McpClient {
|
|
|
84
116
|
async listTools(cursor) {
|
|
85
117
|
try {
|
|
86
118
|
this.logger.debug('Listing tools...', cursor ? { cursor } : {});
|
|
87
|
-
const result = await this.client.listTools({ cursor });
|
|
119
|
+
const result = await this.client.listTools({ cursor }, this.getRequestOptions());
|
|
88
120
|
this.logger.debug(`Found ${result.tools.length} tools`);
|
|
89
121
|
return result;
|
|
90
122
|
}
|
|
91
123
|
catch (error) {
|
|
92
124
|
this.logger.error('Failed to list tools:', error);
|
|
93
|
-
throw new ServerError(`Failed to list tools: ${error.message}`, {
|
|
125
|
+
throw new ServerError(`Failed to list tools: ${error.message}`, {
|
|
126
|
+
originalError: error,
|
|
127
|
+
});
|
|
94
128
|
}
|
|
95
129
|
}
|
|
96
130
|
async callTool(name, args) {
|
|
@@ -99,66 +133,76 @@ export class McpClient {
|
|
|
99
133
|
const result = (await this.client.callTool({
|
|
100
134
|
name,
|
|
101
135
|
arguments: args || {},
|
|
102
|
-
}));
|
|
136
|
+
}, undefined, this.getRequestOptions()));
|
|
103
137
|
this.logger.debug(`Tool ${name} completed`);
|
|
104
138
|
return result;
|
|
105
139
|
}
|
|
106
140
|
catch (error) {
|
|
107
141
|
this.logger.error(`Failed to call tool ${name}:`, error);
|
|
108
|
-
throw new ServerError(`Failed to call tool ${name}: ${error.message}`, {
|
|
142
|
+
throw new ServerError(`Failed to call tool ${name}: ${error.message}`, {
|
|
143
|
+
originalError: error,
|
|
144
|
+
});
|
|
109
145
|
}
|
|
110
146
|
}
|
|
111
147
|
async listResources(cursor) {
|
|
112
148
|
try {
|
|
113
149
|
this.logger.debug('Listing resources...', cursor ? { cursor } : {});
|
|
114
|
-
const result = await this.client.listResources({ cursor });
|
|
150
|
+
const result = await this.client.listResources({ cursor }, this.getRequestOptions());
|
|
115
151
|
this.logger.debug(`Found ${result.resources.length} resources`);
|
|
116
152
|
return result;
|
|
117
153
|
}
|
|
118
154
|
catch (error) {
|
|
119
155
|
this.logger.error('Failed to list resources:', error);
|
|
120
|
-
throw new ServerError(`Failed to list resources: ${error.message}`, {
|
|
156
|
+
throw new ServerError(`Failed to list resources: ${error.message}`, {
|
|
157
|
+
originalError: error,
|
|
158
|
+
});
|
|
121
159
|
}
|
|
122
160
|
}
|
|
123
161
|
async listResourceTemplates(cursor) {
|
|
124
162
|
try {
|
|
125
163
|
this.logger.debug('Listing resource templates...', cursor ? { cursor } : {});
|
|
126
|
-
const result = await this.client.listResourceTemplates({ cursor });
|
|
164
|
+
const result = await this.client.listResourceTemplates({ cursor }, this.getRequestOptions());
|
|
127
165
|
this.logger.debug(`Found ${result.resourceTemplates.length} resource templates`);
|
|
128
166
|
return result;
|
|
129
167
|
}
|
|
130
168
|
catch (error) {
|
|
131
169
|
this.logger.error('Failed to list resource templates:', error);
|
|
132
|
-
throw new ServerError(`Failed to list resource templates: ${error.message}`, {
|
|
170
|
+
throw new ServerError(`Failed to list resource templates: ${error.message}`, {
|
|
171
|
+
originalError: error,
|
|
172
|
+
});
|
|
133
173
|
}
|
|
134
174
|
}
|
|
135
175
|
async readResource(uri) {
|
|
136
176
|
try {
|
|
137
177
|
this.logger.debug(`Reading resource: ${uri}`);
|
|
138
|
-
const result = await this.client.readResource({ uri });
|
|
178
|
+
const result = await this.client.readResource({ uri }, this.getRequestOptions());
|
|
139
179
|
this.logger.debug(`Resource ${uri} read successfully`);
|
|
140
180
|
return result;
|
|
141
181
|
}
|
|
142
182
|
catch (error) {
|
|
143
183
|
this.logger.error(`Failed to read resource ${uri}:`, error);
|
|
144
|
-
throw new ServerError(`Failed to read resource ${uri}: ${error.message}`, {
|
|
184
|
+
throw new ServerError(`Failed to read resource ${uri}: ${error.message}`, {
|
|
185
|
+
originalError: error,
|
|
186
|
+
});
|
|
145
187
|
}
|
|
146
188
|
}
|
|
147
189
|
async subscribeResource(uri) {
|
|
148
190
|
try {
|
|
149
191
|
this.logger.debug(`Subscribing to resource: ${uri}`);
|
|
150
|
-
await this.client.subscribeResource({ uri });
|
|
192
|
+
await this.client.subscribeResource({ uri }, this.getRequestOptions());
|
|
151
193
|
this.logger.debug(`Subscribed to resource ${uri}`);
|
|
152
194
|
}
|
|
153
195
|
catch (error) {
|
|
154
196
|
this.logger.error(`Failed to subscribe to resource ${uri}:`, error);
|
|
155
|
-
throw new ServerError(`Failed to subscribe to resource ${uri}: ${error.message}`, {
|
|
197
|
+
throw new ServerError(`Failed to subscribe to resource ${uri}: ${error.message}`, {
|
|
198
|
+
originalError: error,
|
|
199
|
+
});
|
|
156
200
|
}
|
|
157
201
|
}
|
|
158
202
|
async unsubscribeResource(uri) {
|
|
159
203
|
try {
|
|
160
204
|
this.logger.debug(`Unsubscribing from resource: ${uri}`);
|
|
161
|
-
await this.client.unsubscribeResource({ uri });
|
|
205
|
+
await this.client.unsubscribeResource({ uri }, this.getRequestOptions());
|
|
162
206
|
this.logger.debug(`Unsubscribed from resource ${uri}`);
|
|
163
207
|
}
|
|
164
208
|
catch (error) {
|
|
@@ -169,13 +213,15 @@ export class McpClient {
|
|
|
169
213
|
async listPrompts(cursor) {
|
|
170
214
|
try {
|
|
171
215
|
this.logger.debug('Listing prompts...', cursor ? { cursor } : {});
|
|
172
|
-
const result = await this.client.listPrompts({ cursor });
|
|
216
|
+
const result = await this.client.listPrompts({ cursor }, this.getRequestOptions());
|
|
173
217
|
this.logger.debug(`Found ${result.prompts.length} prompts`);
|
|
174
218
|
return result;
|
|
175
219
|
}
|
|
176
220
|
catch (error) {
|
|
177
221
|
this.logger.error('Failed to list prompts:', error);
|
|
178
|
-
throw new ServerError(`Failed to list prompts: ${error.message}`, {
|
|
222
|
+
throw new ServerError(`Failed to list prompts: ${error.message}`, {
|
|
223
|
+
originalError: error,
|
|
224
|
+
});
|
|
179
225
|
}
|
|
180
226
|
}
|
|
181
227
|
async getPrompt(name, args) {
|
|
@@ -184,24 +230,28 @@ export class McpClient {
|
|
|
184
230
|
const result = (await this.client.getPrompt({
|
|
185
231
|
name,
|
|
186
232
|
arguments: args,
|
|
187
|
-
}));
|
|
233
|
+
}, this.getRequestOptions()));
|
|
188
234
|
this.logger.debug(`Prompt ${name} retrieved`);
|
|
189
235
|
return result;
|
|
190
236
|
}
|
|
191
237
|
catch (error) {
|
|
192
238
|
this.logger.error(`Failed to get prompt ${name}:`, error);
|
|
193
|
-
throw new ServerError(`Failed to get prompt ${name}: ${error.message}`, {
|
|
239
|
+
throw new ServerError(`Failed to get prompt ${name}: ${error.message}`, {
|
|
240
|
+
originalError: error,
|
|
241
|
+
});
|
|
194
242
|
}
|
|
195
243
|
}
|
|
196
244
|
async setLoggingLevel(level) {
|
|
197
245
|
try {
|
|
198
246
|
this.logger.debug(`Setting log level to: ${level}`);
|
|
199
|
-
await this.client.setLoggingLevel(level);
|
|
247
|
+
await this.client.setLoggingLevel(level, this.getRequestOptions());
|
|
200
248
|
this.logger.debug('Log level set successfully');
|
|
201
249
|
}
|
|
202
250
|
catch (error) {
|
|
203
251
|
this.logger.error(`Failed to set log level:`, error);
|
|
204
|
-
throw new ServerError(`Failed to set log level: ${error.message}`, {
|
|
252
|
+
throw new ServerError(`Failed to set log level: ${error.message}`, {
|
|
253
|
+
originalError: error,
|
|
254
|
+
});
|
|
205
255
|
}
|
|
206
256
|
}
|
|
207
257
|
getSDKClient() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAsB,MAAM,2CAA2C,CAAC;AAapG,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,4 +19,7 @@ export declare function removeKeychainOAuthTokenInfo(serverUrl: string, profileN
|
|
|
19
19
|
export declare function storeKeychainSessionHeaders(sessionName: string, headers: Record<string, string>): Promise<void>;
|
|
20
20
|
export declare function readKeychainSessionHeaders(sessionName: string): Promise<Record<string, string> | undefined>;
|
|
21
21
|
export declare function removeKeychainSessionHeaders(sessionName: string): Promise<boolean>;
|
|
22
|
+
export declare function storeKeychainProxyBearerToken(sessionName: string, token: string): Promise<void>;
|
|
23
|
+
export declare function readKeychainProxyBearerToken(sessionName: string): Promise<string | undefined>;
|
|
24
|
+
export declare function removeKeychainProxyBearerToken(sessionName: string): Promise<boolean>;
|
|
22
25
|
//# sourceMappingURL=keychain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqCD,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;AAKD,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAgBtC;AAKD,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAMD,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAMf;AAKD,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAgBrC;AAKD,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAMD,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAMf;AAKD,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAgB7C;AAKD,wBAAsB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxF;AAMD,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf;AAKD,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAK7B;AAKD,wBAAsB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK1F"}
|
|
@@ -14,6 +14,9 @@ function buildOAuthTokensAccountName(serverUrl, profileName) {
|
|
|
14
14
|
function buildSessionAccountName(sessionName) {
|
|
15
15
|
return `session:${sessionName}:headers`;
|
|
16
16
|
}
|
|
17
|
+
function buildProxyBearerTokenAccountName(sessionName) {
|
|
18
|
+
return `session:${sessionName}:proxy-bearer-token`;
|
|
19
|
+
}
|
|
17
20
|
export async function storeKeychainOAuthClientInfo(serverUrl, profileName, client) {
|
|
18
21
|
const account = buildOAuthClientAccountName(serverUrl, profileName);
|
|
19
22
|
const value = JSON.stringify(client);
|
|
@@ -92,4 +95,19 @@ export async function removeKeychainSessionHeaders(sessionName) {
|
|
|
92
95
|
logger.debug(`Deleting headers for session ${sessionName}`);
|
|
93
96
|
return keytar.deletePassword(SERVICE_NAME, account);
|
|
94
97
|
}
|
|
98
|
+
export async function storeKeychainProxyBearerToken(sessionName, token) {
|
|
99
|
+
const account = buildProxyBearerTokenAccountName(sessionName);
|
|
100
|
+
logger.debug(`Storing proxy bearer token for session ${sessionName}`);
|
|
101
|
+
await keytar.setPassword(SERVICE_NAME, account, token);
|
|
102
|
+
}
|
|
103
|
+
export async function readKeychainProxyBearerToken(sessionName) {
|
|
104
|
+
const account = buildProxyBearerTokenAccountName(sessionName);
|
|
105
|
+
logger.debug(`Retrieving proxy bearer token for session ${sessionName}`);
|
|
106
|
+
return (await keytar.getPassword(SERVICE_NAME, account)) || undefined;
|
|
107
|
+
}
|
|
108
|
+
export async function removeKeychainProxyBearerToken(sessionName) {
|
|
109
|
+
const account = buildProxyBearerTokenAccountName(sessionName);
|
|
110
|
+
logger.debug(`Deleting proxy bearer token for session ${sessionName}`);
|
|
111
|
+
return keytar.deletePassword(SERVICE_NAME, account);
|
|
112
|
+
}
|
|
95
113
|
//# sourceMappingURL=keychain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../src/lib/auth/keychain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-flow.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/oauth-flow.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-flow.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/oauth-flow.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuG/C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AA+JD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAmI1B"}
|
|
@@ -8,16 +8,26 @@ import { createLogger } from '../logger.js';
|
|
|
8
8
|
import { removeKeychainOAuthClientInfo } from './keychain.js';
|
|
9
9
|
const logger = createLogger('oauth-flow');
|
|
10
10
|
const ESCAPE_KEY = '\x1b';
|
|
11
|
-
|
|
11
|
+
const CTRL_C = '\x03';
|
|
12
|
+
const ENTER_CR = '\r';
|
|
13
|
+
const ENTER_LF = '\n';
|
|
14
|
+
function setupKeyListener(onKey) {
|
|
12
15
|
let cleanup = () => { };
|
|
13
16
|
let cleaned = false;
|
|
14
|
-
const promise = new Promise((
|
|
17
|
+
const promise = new Promise((resolve, reject) => {
|
|
15
18
|
if (!process.stdin.isTTY) {
|
|
16
19
|
return;
|
|
17
20
|
}
|
|
18
21
|
const onData = (key) => {
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
const result = onKey(key.toString());
|
|
23
|
+
if (result.done) {
|
|
24
|
+
cleanup();
|
|
25
|
+
if ('error' in result) {
|
|
26
|
+
reject(result.error);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resolve(result.value);
|
|
30
|
+
}
|
|
21
31
|
}
|
|
22
32
|
};
|
|
23
33
|
process.stdin.setRawMode(true);
|
|
@@ -34,6 +44,29 @@ function waitForEscapeKey() {
|
|
|
34
44
|
});
|
|
35
45
|
return { promise, cleanup };
|
|
36
46
|
}
|
|
47
|
+
function waitForEscapeKey() {
|
|
48
|
+
const { promise, cleanup } = setupKeyListener((char) => {
|
|
49
|
+
if (char === ESCAPE_KEY || char === CTRL_C) {
|
|
50
|
+
return { done: true, error: new ClientError('Authentication cancelled by user') };
|
|
51
|
+
}
|
|
52
|
+
return { done: false };
|
|
53
|
+
});
|
|
54
|
+
return { promise, cleanup };
|
|
55
|
+
}
|
|
56
|
+
async function waitForEnterKey(prompt) {
|
|
57
|
+
if (!process.stdin.isTTY) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
process.stdout.write(prompt);
|
|
61
|
+
const { promise } = setupKeyListener((char) => {
|
|
62
|
+
console.log('');
|
|
63
|
+
if (char === ENTER_CR || char === ENTER_LF) {
|
|
64
|
+
return { done: true, value: true };
|
|
65
|
+
}
|
|
66
|
+
return { done: true, value: false };
|
|
67
|
+
});
|
|
68
|
+
return promise;
|
|
69
|
+
}
|
|
37
70
|
function startCallbackServer(port) {
|
|
38
71
|
let resolveCode;
|
|
39
72
|
let rejectCode;
|
|
@@ -184,11 +217,18 @@ export async function performOAuthFlow(serverUrl, profileName, scope) {
|
|
|
184
217
|
resolve();
|
|
185
218
|
});
|
|
186
219
|
});
|
|
220
|
+
const escapeHandlerRef = { current: null };
|
|
187
221
|
provider.redirectToAuthorization = async (authorizationUrl) => {
|
|
188
222
|
logger.debug('Opening browser for authorization...');
|
|
189
|
-
console.log(`\
|
|
223
|
+
console.log(`\nAuthorization URL: ${authorizationUrl.toString()}`);
|
|
224
|
+
const confirmed = await waitForEnterKey('Press Enter to open browser (any other key to cancel): ');
|
|
225
|
+
if (!confirmed) {
|
|
226
|
+
throw new ClientError('Authentication cancelled by user');
|
|
227
|
+
}
|
|
228
|
+
console.log('Opening browser...');
|
|
190
229
|
console.log('If the browser does not open automatically, please visit the URL above.');
|
|
191
230
|
console.log('Press Esc to cancel.\n');
|
|
231
|
+
escapeHandlerRef.current = waitForEscapeKey();
|
|
192
232
|
try {
|
|
193
233
|
await openBrowser(authorizationUrl.toString());
|
|
194
234
|
}
|
|
@@ -196,7 +236,6 @@ export async function performOAuthFlow(serverUrl, profileName, scope) {
|
|
|
196
236
|
console.error(error.message);
|
|
197
237
|
}
|
|
198
238
|
};
|
|
199
|
-
const escapeHandler = waitForEscapeKey();
|
|
200
239
|
try {
|
|
201
240
|
logger.debug('Calling SDK auth()...');
|
|
202
241
|
const authOptions = {
|
|
@@ -208,10 +247,11 @@ export async function performOAuthFlow(serverUrl, profileName, scope) {
|
|
|
208
247
|
const result = await sdkAuth(provider, authOptions);
|
|
209
248
|
if (result === 'REDIRECT') {
|
|
210
249
|
logger.debug('Waiting for authorization code...');
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
250
|
+
const racers = [codePromise];
|
|
251
|
+
if (escapeHandlerRef.current) {
|
|
252
|
+
racers.push(escapeHandlerRef.current.promise);
|
|
253
|
+
}
|
|
254
|
+
const { code } = await Promise.race(racers);
|
|
215
255
|
logger.debug('Exchanging authorization code for tokens...');
|
|
216
256
|
const tokenOptions = {
|
|
217
257
|
serverUrl: normalizedServerUrl,
|
|
@@ -224,7 +264,7 @@ export async function performOAuthFlow(serverUrl, profileName, scope) {
|
|
|
224
264
|
}
|
|
225
265
|
}
|
|
226
266
|
finally {
|
|
227
|
-
|
|
267
|
+
escapeHandlerRef.current?.cleanup();
|
|
228
268
|
}
|
|
229
269
|
const profile = provider._authProfile;
|
|
230
270
|
if (!profile) {
|
|
@@ -237,7 +277,7 @@ export async function performOAuthFlow(serverUrl, profileName, scope) {
|
|
|
237
277
|
};
|
|
238
278
|
}
|
|
239
279
|
catch (error) {
|
|
240
|
-
logger.
|
|
280
|
+
logger.debug(`OAuth flow failed: ${error.message}`);
|
|
241
281
|
throw error;
|
|
242
282
|
}
|
|
243
283
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-flow.js","sourceRoot":"","sources":["../../../src/lib/auth/oauth-flow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAA0D,MAAM,MAAM,CAAC;AAE5F,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAG9D,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAG1C,MAAM,UAAU,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-flow.js","sourceRoot":"","sources":["../../../src/lib/auth/oauth-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { ServerConfig } from './types.js';
|
|
1
|
+
import type { ServerConfig, ProxyConfig } from './types.js';
|
|
2
2
|
export interface StartBridgeOptions {
|
|
3
3
|
sessionName: string;
|
|
4
4
|
serverConfig: ServerConfig;
|
|
5
5
|
verbose?: boolean;
|
|
6
6
|
profileName?: string;
|
|
7
7
|
headers?: Record<string, string>;
|
|
8
|
+
proxyConfig?: ProxyConfig;
|
|
8
9
|
}
|
|
9
10
|
export interface StartBridgeResult {
|
|
10
11
|
pid: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-manager.d.ts","sourceRoot":"","sources":["../../src/lib/bridge-manager.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge-manager.d.ts","sourceRoot":"","sources":["../../src/lib/bridge-manager.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAC;AAsB7E,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAiBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8FzF;AAMD,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCnE;AASD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2DnF;AAuHD,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0E5E"}
|
|
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'url';
|
|
|
5
5
|
import { getSocketPath, waitForFile, isProcessAlive, fileExists, getLogsDir } from './utils.js';
|
|
6
6
|
import { updateSession, getSession } from './sessions.js';
|
|
7
7
|
import { createLogger } from './logger.js';
|
|
8
|
-
import { ClientError, NetworkError } from './errors.js';
|
|
8
|
+
import { ClientError, NetworkError, isAuthenticationError, createServerAuthError } from './errors.js';
|
|
9
9
|
import { BridgeClient } from './bridge-client.js';
|
|
10
10
|
import { readKeychainOAuthTokenInfo, readKeychainOAuthClientInfo, readKeychainSessionHeaders } from './auth/keychain.js';
|
|
11
11
|
import { getAuthProfile } from './auth/profiles.js';
|
|
@@ -16,7 +16,7 @@ function getBridgeExecutable() {
|
|
|
16
16
|
return join(__dirname, '..', 'bridge', 'index.js');
|
|
17
17
|
}
|
|
18
18
|
export async function startBridge(options) {
|
|
19
|
-
const { sessionName, serverConfig, verbose, profileName, headers } = options;
|
|
19
|
+
const { sessionName, serverConfig, verbose, profileName, headers, proxyConfig } = options;
|
|
20
20
|
logger.debug(`Launching bridge for session: ${sessionName}`);
|
|
21
21
|
const socketPath = getSocketPath(sessionName);
|
|
22
22
|
if (process.platform !== 'win32' && (await fileExists(socketPath))) {
|
|
@@ -37,6 +37,10 @@ export async function startBridge(options) {
|
|
|
37
37
|
else if (headers && Object.keys(headers).length > 0) {
|
|
38
38
|
args.push('--profile', 'dummy');
|
|
39
39
|
}
|
|
40
|
+
if (proxyConfig) {
|
|
41
|
+
args.push('--proxy-host', proxyConfig.host);
|
|
42
|
+
args.push('--proxy-port', String(proxyConfig.port));
|
|
43
|
+
}
|
|
40
44
|
logger.debug('Bridge executable:', bridgeExecutable);
|
|
41
45
|
logger.debug('Bridge args:', args);
|
|
42
46
|
const bridgeProcess = spawn('node', [bridgeExecutable, ...args], {
|
|
@@ -123,6 +127,9 @@ export async function restartBridge(sessionName) {
|
|
|
123
127
|
if (session.profileName) {
|
|
124
128
|
bridgeOptions.profileName = session.profileName;
|
|
125
129
|
}
|
|
130
|
+
if (session.proxy) {
|
|
131
|
+
bridgeOptions.proxyConfig = session.proxy;
|
|
132
|
+
}
|
|
126
133
|
const { pid } = await startBridge(bridgeOptions);
|
|
127
134
|
await updateSession(sessionName, { pid });
|
|
128
135
|
logger.debug(`Bridge restarted for ${sessionName} with PID: ${pid}`);
|
|
@@ -154,10 +161,10 @@ async function sendAuthCredentialsToBridge(socketPath, serverUrl, profileName, h
|
|
|
154
161
|
credentials.headers = headers;
|
|
155
162
|
logger.debug(`Including ${Object.keys(headers).length} headers in credentials`);
|
|
156
163
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
164
|
+
logger.debug('Sending auth credentials to bridge' +
|
|
165
|
+
(credentials.refreshToken ? ' (with refresh token)' : '') +
|
|
166
|
+
(credentials.headers ? ` (with ${Object.keys(credentials.headers).length} headers)` : '') +
|
|
167
|
+
(!credentials.refreshToken && !credentials.headers ? ' (minimal - no tokens or headers)' : ''));
|
|
161
168
|
const client = new BridgeClient(socketPath);
|
|
162
169
|
try {
|
|
163
170
|
await client.connect();
|
|
@@ -205,6 +212,11 @@ export async function ensureBridgeReady(sessionName) {
|
|
|
205
212
|
logger.warn(`Bridge process alive but socket not responding for ${sessionName}`);
|
|
206
213
|
}
|
|
207
214
|
else if (result.error) {
|
|
215
|
+
const errorMessage = result.error.message || '';
|
|
216
|
+
if (isAuthenticationError(errorMessage)) {
|
|
217
|
+
const target = session.server.url || session.server.command || sessionName;
|
|
218
|
+
throw createServerAuthError(target, { sessionName, originalError: result.error });
|
|
219
|
+
}
|
|
208
220
|
throw new ClientError(`Bridge for ${sessionName} failed to connect to MCP server: ${result.error.message}`);
|
|
209
221
|
}
|
|
210
222
|
}
|
|
@@ -218,6 +230,13 @@ export async function ensureBridgeReady(sessionName) {
|
|
|
218
230
|
return socketPath;
|
|
219
231
|
}
|
|
220
232
|
const errorMsg = result.error?.message || 'unknown error';
|
|
233
|
+
if (isAuthenticationError(errorMsg)) {
|
|
234
|
+
const target = session.server.url || session.server.command || sessionName;
|
|
235
|
+
throw createServerAuthError(target, {
|
|
236
|
+
sessionName,
|
|
237
|
+
...(result.error && { originalError: result.error }),
|
|
238
|
+
});
|
|
239
|
+
}
|
|
221
240
|
const logPath = `${getLogsDir()}/bridge-${sessionName}.log`;
|
|
222
241
|
throw new ClientError(`Bridge for ${sessionName} failed after restart: ${errorMsg}. ` +
|
|
223
242
|
`For details, check logs at ${logPath}`);
|