@apify/mcpc 0.1.0

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.
Files changed (178) hide show
  1. package/.claude/settings.local.json +36 -0
  2. package/.eslintrc.json +44 -0
  3. package/.idea/codeStyles/Project.xml +60 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +11 -0
  6. package/.idea/prettier.xml +6 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/.idea/workspace.xml +572 -0
  9. package/LICENSE +201 -0
  10. package/PHASE1-SUMMARY.md +269 -0
  11. package/PUBLISHING.md +111 -0
  12. package/README.md +1056 -0
  13. package/TESTING.md +212 -0
  14. package/TODOs.md +94 -0
  15. package/bin/mcpc +9 -0
  16. package/bin/mcpc-bridge +9 -0
  17. package/dist/bridge/index.d.ts +3 -0
  18. package/dist/bridge/index.d.ts.map +1 -0
  19. package/dist/bridge/index.js +587 -0
  20. package/dist/bridge/index.js.map +1 -0
  21. package/dist/cli/commands/auth.d.ts +9 -0
  22. package/dist/cli/commands/auth.d.ts.map +1 -0
  23. package/dist/cli/commands/auth.js +81 -0
  24. package/dist/cli/commands/auth.js.map +1 -0
  25. package/dist/cli/commands/clean.d.ts +11 -0
  26. package/dist/cli/commands/clean.d.ts.map +1 -0
  27. package/dist/cli/commands/clean.js +224 -0
  28. package/dist/cli/commands/clean.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +8 -0
  30. package/dist/cli/commands/index.d.ts.map +1 -0
  31. package/dist/cli/commands/index.js +8 -0
  32. package/dist/cli/commands/index.js.map +1 -0
  33. package/dist/cli/commands/logging.d.ts +3 -0
  34. package/dist/cli/commands/logging.d.ts.map +1 -0
  35. package/dist/cli/commands/logging.js +22 -0
  36. package/dist/cli/commands/logging.js.map +1 -0
  37. package/dist/cli/commands/prompts.d.ts +6 -0
  38. package/dist/cli/commands/prompts.d.ts.map +1 -0
  39. package/dist/cli/commands/prompts.js +27 -0
  40. package/dist/cli/commands/prompts.js.map +1 -0
  41. package/dist/cli/commands/resources.d.ts +11 -0
  42. package/dist/cli/commands/resources.d.ts.map +1 -0
  43. package/dist/cli/commands/resources.js +70 -0
  44. package/dist/cli/commands/resources.js.map +1 -0
  45. package/dist/cli/commands/sessions.d.ts +28 -0
  46. package/dist/cli/commands/sessions.d.ts.map +1 -0
  47. package/dist/cli/commands/sessions.js +356 -0
  48. package/dist/cli/commands/sessions.js.map +1 -0
  49. package/dist/cli/commands/tools.d.ts +8 -0
  50. package/dist/cli/commands/tools.d.ts.map +1 -0
  51. package/dist/cli/commands/tools.js +54 -0
  52. package/dist/cli/commands/tools.js.map +1 -0
  53. package/dist/cli/commands/utilities.d.ts +3 -0
  54. package/dist/cli/commands/utilities.d.ts.map +1 -0
  55. package/dist/cli/commands/utilities.js +20 -0
  56. package/dist/cli/commands/utilities.js.map +1 -0
  57. package/dist/cli/helpers.d.ts +18 -0
  58. package/dist/cli/helpers.d.ts.map +1 -0
  59. package/dist/cli/helpers.js +165 -0
  60. package/dist/cli/helpers.js.map +1 -0
  61. package/dist/cli/index.d.ts +3 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +326 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/output.d.ts +18 -0
  66. package/dist/cli/output.d.ts.map +1 -0
  67. package/dist/cli/output.js +221 -0
  68. package/dist/cli/output.js.map +1 -0
  69. package/dist/cli/parser.d.ts +19 -0
  70. package/dist/cli/parser.d.ts.map +1 -0
  71. package/dist/cli/parser.js +168 -0
  72. package/dist/cli/parser.js.map +1 -0
  73. package/dist/cli/shell-parser.d.ts +5 -0
  74. package/dist/cli/shell-parser.d.ts.map +1 -0
  75. package/dist/cli/shell-parser.js +38 -0
  76. package/dist/cli/shell-parser.js.map +1 -0
  77. package/dist/cli/shell.d.ts +2 -0
  78. package/dist/cli/shell.d.ts.map +1 -0
  79. package/dist/cli/shell.js +277 -0
  80. package/dist/cli/shell.js.map +1 -0
  81. package/dist/cli/tool-result.d.ts +2 -0
  82. package/dist/cli/tool-result.d.ts.map +1 -0
  83. package/dist/cli/tool-result.js +19 -0
  84. package/dist/cli/tool-result.js.map +1 -0
  85. package/dist/core/factory.d.ts +19 -0
  86. package/dist/core/factory.d.ts.map +1 -0
  87. package/dist/core/factory.js +55 -0
  88. package/dist/core/factory.js.map +1 -0
  89. package/dist/core/index.d.ts +4 -0
  90. package/dist/core/index.d.ts.map +1 -0
  91. package/dist/core/index.js +4 -0
  92. package/dist/core/index.js.map +1 -0
  93. package/dist/core/mcp-client.d.ts +30 -0
  94. package/dist/core/mcp-client.d.ts.map +1 -0
  95. package/dist/core/mcp-client.js +215 -0
  96. package/dist/core/mcp-client.js.map +1 -0
  97. package/dist/core/transports.d.ts +12 -0
  98. package/dist/core/transports.d.ts.map +1 -0
  99. package/dist/core/transports.js +65 -0
  100. package/dist/core/transports.js.map +1 -0
  101. package/dist/lib/auth/auth-profiles.d.ts +7 -0
  102. package/dist/lib/auth/auth-profiles.d.ts.map +1 -0
  103. package/dist/lib/auth/auth-profiles.js +105 -0
  104. package/dist/lib/auth/auth-profiles.js.map +1 -0
  105. package/dist/lib/auth/keychain.d.ts +22 -0
  106. package/dist/lib/auth/keychain.d.ts.map +1 -0
  107. package/dist/lib/auth/keychain.js +92 -0
  108. package/dist/lib/auth/keychain.js.map +1 -0
  109. package/dist/lib/auth/oauth-flow.d.ts +7 -0
  110. package/dist/lib/auth/oauth-flow.d.ts.map +1 -0
  111. package/dist/lib/auth/oauth-flow.js +236 -0
  112. package/dist/lib/auth/oauth-flow.js.map +1 -0
  113. package/dist/lib/auth/oauth-provider.d.ts +24 -0
  114. package/dist/lib/auth/oauth-provider.d.ts.map +1 -0
  115. package/dist/lib/auth/oauth-provider.js +144 -0
  116. package/dist/lib/auth/oauth-provider.js.map +1 -0
  117. package/dist/lib/auth/oauth-token-manager.d.ts +25 -0
  118. package/dist/lib/auth/oauth-token-manager.d.ts.map +1 -0
  119. package/dist/lib/auth/oauth-token-manager.js +70 -0
  120. package/dist/lib/auth/oauth-token-manager.js.map +1 -0
  121. package/dist/lib/auth/oauth-utils.d.ts +14 -0
  122. package/dist/lib/auth/oauth-utils.d.ts.map +1 -0
  123. package/dist/lib/auth/oauth-utils.js +68 -0
  124. package/dist/lib/auth/oauth-utils.js.map +1 -0
  125. package/dist/lib/auth/token-refresh.d.ts +2 -0
  126. package/dist/lib/auth/token-refresh.d.ts.map +1 -0
  127. package/dist/lib/auth/token-refresh.js +70 -0
  128. package/dist/lib/auth/token-refresh.js.map +1 -0
  129. package/dist/lib/bridge-client.d.ts +23 -0
  130. package/dist/lib/bridge-client.d.ts.map +1 -0
  131. package/dist/lib/bridge-client.js +181 -0
  132. package/dist/lib/bridge-client.js.map +1 -0
  133. package/dist/lib/bridge-manager.d.ts +17 -0
  134. package/dist/lib/bridge-manager.d.ts.map +1 -0
  135. package/dist/lib/bridge-manager.js +240 -0
  136. package/dist/lib/bridge-manager.js.map +1 -0
  137. package/dist/lib/config.d.ts +6 -0
  138. package/dist/lib/config.d.ts.map +1 -0
  139. package/dist/lib/config.js +116 -0
  140. package/dist/lib/config.js.map +1 -0
  141. package/dist/lib/errors.d.ts +23 -0
  142. package/dist/lib/errors.d.ts.map +1 -0
  143. package/dist/lib/errors.js +81 -0
  144. package/dist/lib/errors.js.map +1 -0
  145. package/dist/lib/file-lock.d.ts +2 -0
  146. package/dist/lib/file-lock.d.ts.map +1 -0
  147. package/dist/lib/file-lock.js +46 -0
  148. package/dist/lib/file-lock.js.map +1 -0
  149. package/dist/lib/file-logger.d.ts +19 -0
  150. package/dist/lib/file-logger.d.ts.map +1 -0
  151. package/dist/lib/file-logger.js +126 -0
  152. package/dist/lib/file-logger.js.map +1 -0
  153. package/dist/lib/index.d.ts +6 -0
  154. package/dist/lib/index.d.ts.map +1 -0
  155. package/dist/lib/index.js +6 -0
  156. package/dist/lib/index.js.map +1 -0
  157. package/dist/lib/logger.d.ts +24 -0
  158. package/dist/lib/logger.d.ts.map +1 -0
  159. package/dist/lib/logger.js +189 -0
  160. package/dist/lib/logger.js.map +1 -0
  161. package/dist/lib/session-client.d.ts +28 -0
  162. package/dist/lib/session-client.d.ts.map +1 -0
  163. package/dist/lib/session-client.js +104 -0
  164. package/dist/lib/session-client.js.map +1 -0
  165. package/dist/lib/sessions.d.ts +9 -0
  166. package/dist/lib/sessions.d.ts.map +1 -0
  167. package/dist/lib/sessions.js +116 -0
  168. package/dist/lib/sessions.js.map +1 -0
  169. package/dist/lib/types.d.ts +117 -0
  170. package/dist/lib/types.d.ts.map +1 -0
  171. package/dist/lib/types.js +2 -0
  172. package/dist/lib/types.js.map +1 -0
  173. package/dist/lib/utils.d.ts +29 -0
  174. package/dist/lib/utils.d.ts.map +1 -0
  175. package/dist/lib/utils.js +173 -0
  176. package/dist/lib/utils.js.map +1 -0
  177. package/package.json +71 -0
  178. package/tsconfig.test.json +11 -0
@@ -0,0 +1,587 @@
1
+ #!/usr/bin/env node
2
+ import { createServer } from 'net';
3
+ import { unlink, readdir, stat } from 'fs/promises';
4
+ import { createMcpClient } from '../core/index.js';
5
+ import { createLogger, setVerbose, initFileLogger, closeFileLogger } from '../lib/index.js';
6
+ import { fileExists, getBridgesDir, ensureDir, getLogsDir } from '../lib/index.js';
7
+ import { ClientError, NetworkError } from '../lib/index.js';
8
+ import { loadSessions, updateSession } from '../lib/sessions.js';
9
+ import { OAuthTokenManager } from '../lib/auth/oauth-token-manager.js';
10
+ import { join } from 'path';
11
+ import packageJson from '../../package.json' with { type: 'json' };
12
+ const KEEPALIVE_INTERVAL_MS = 30_000;
13
+ const logger = createLogger('bridge');
14
+ class BridgeProcess {
15
+ client = null;
16
+ server = null;
17
+ connections = new Set();
18
+ options;
19
+ isShuttingDown = false;
20
+ keepaliveInterval = null;
21
+ tokenManager = null;
22
+ headers = null;
23
+ authCredentialsReceived = null;
24
+ authCredentialsResolver = null;
25
+ mcpClientReady;
26
+ mcpClientReadyResolver;
27
+ mcpClientReadyRejecter;
28
+ constructor(options) {
29
+ this.options = options;
30
+ this.mcpClientReady = new Promise((resolve, reject) => {
31
+ this.mcpClientReadyResolver = resolve;
32
+ this.mcpClientReadyRejecter = reject;
33
+ });
34
+ if (options.verbose) {
35
+ setVerbose(true);
36
+ }
37
+ }
38
+ setAuthCredentials(credentials) {
39
+ logger.info(`Received auth credentials for profile: ${credentials.profileName}`);
40
+ if (credentials.refreshToken && credentials.clientId) {
41
+ this.tokenManager = new OAuthTokenManager({
42
+ serverUrl: credentials.serverUrl,
43
+ profileName: credentials.profileName,
44
+ clientId: credentials.clientId,
45
+ refreshToken: credentials.refreshToken,
46
+ });
47
+ logger.debug('OAuth token manager initialized');
48
+ }
49
+ else if (credentials.refreshToken && !credentials.clientId) {
50
+ logger.warn('Refresh token provided but client ID is missing - token refresh will not work');
51
+ }
52
+ if (credentials.headers) {
53
+ this.headers = credentials.headers;
54
+ logger.debug(`Stored ${Object.keys(this.headers).length} headers in memory`);
55
+ }
56
+ if (this.authCredentialsResolver) {
57
+ this.authCredentialsResolver();
58
+ this.authCredentialsResolver = null;
59
+ }
60
+ }
61
+ async updateTransportAuth() {
62
+ const config = { ...this.options.target };
63
+ if (config.type !== 'http') {
64
+ return config;
65
+ }
66
+ try {
67
+ if (this.tokenManager) {
68
+ const token = await this.tokenManager.getValidAccessToken();
69
+ config.headers = {
70
+ ...this.headers,
71
+ ...config.headers,
72
+ Authorization: `Bearer ${token}`,
73
+ };
74
+ logger.debug('Updated transport config with fresh OAuth access token');
75
+ return config;
76
+ }
77
+ if (this.headers) {
78
+ config.headers = {
79
+ ...config.headers,
80
+ ...this.headers,
81
+ };
82
+ logger.debug(`Updated transport config with ${Object.keys(this.headers).length} headers`);
83
+ return config;
84
+ }
85
+ }
86
+ catch (error) {
87
+ logger.error('Failed to get access token:', error);
88
+ await this.markSessionExpiredAndExit();
89
+ throw error;
90
+ }
91
+ return config;
92
+ }
93
+ cleanupOrphanedLogFiles() {
94
+ void (async () => {
95
+ try {
96
+ logger.debug('Starting cleanup of orphaned log files');
97
+ const sessionsStorage = await loadSessions();
98
+ const activeSessions = sessionsStorage.sessions;
99
+ const logsDir = getLogsDir();
100
+ await ensureDir(logsDir);
101
+ const files = await readdir(logsDir);
102
+ const bridgeLogPattern = /^bridge-(@.+?)\.log(?:\.\d+)?$/;
103
+ const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
104
+ logger.debug(`Found ${files.length} files in logs directory, cutoff date: ${new Date(sevenDaysAgo).toISOString()}`);
105
+ for (const file of files) {
106
+ const match = file.match(bridgeLogPattern);
107
+ if (!match || !match[1])
108
+ continue;
109
+ const sessionName = match[1];
110
+ logger.debug(`Checking log file: ${file} (session: ${sessionName})`);
111
+ if (sessionName === this.options.sessionName) {
112
+ logger.debug(`Skipping current session's log file: ${file}`);
113
+ continue;
114
+ }
115
+ if (!activeSessions[sessionName]) {
116
+ const filePath = join(logsDir, file);
117
+ try {
118
+ const fileStats = await stat(filePath);
119
+ const fileAge = fileStats.mtime.getTime();
120
+ const ageInDays = Math.floor((Date.now() - fileAge) / (24 * 60 * 60 * 1000));
121
+ logger.debug(`File ${file} age: ${ageInDays} days (mtime: ${new Date(fileAge).toISOString()})`);
122
+ if (fileAge < sevenDaysAgo) {
123
+ await unlink(filePath);
124
+ logger.debug(`Cleaned up orphaned log file: ${file} (age: ${ageInDays} days)`);
125
+ }
126
+ else {
127
+ logger.debug(`Keeping recent orphaned log file: ${file} (age: ${ageInDays} days)`);
128
+ }
129
+ }
130
+ catch (error) {
131
+ logger.debug(`Failed to stat log file ${file}:`, error);
132
+ }
133
+ }
134
+ else {
135
+ logger.debug(`Session ${sessionName} still exists, keeping log file: ${file}`);
136
+ }
137
+ }
138
+ logger.debug('Finished cleanup of orphaned log files');
139
+ }
140
+ catch (error) {
141
+ logger.warn('Failed to clean up orphaned log files:', error);
142
+ }
143
+ })();
144
+ }
145
+ async start() {
146
+ await initFileLogger(`bridge-${this.options.sessionName}.log`);
147
+ logger.info(`Bridge process starting for session: ${this.options.sessionName}`);
148
+ this.cleanupOrphanedLogFiles();
149
+ try {
150
+ await this.createSocketServer();
151
+ if (this.options.profileName) {
152
+ logger.debug(`Waiting for auth credentials (profile: ${this.options.profileName})...`);
153
+ this.authCredentialsReceived = new Promise((resolve) => {
154
+ this.authCredentialsResolver = resolve;
155
+ });
156
+ const timeout = new Promise((_, reject) => {
157
+ setTimeout(() => reject(new Error('Timeout waiting for auth credentials')), 5000);
158
+ });
159
+ await Promise.race([this.authCredentialsReceived, timeout]);
160
+ logger.debug('Auth credentials received, proceeding with MCP connection');
161
+ }
162
+ try {
163
+ await this.connectToMcp();
164
+ this.mcpClientReadyResolver();
165
+ }
166
+ catch (error) {
167
+ this.mcpClientReadyRejecter(error);
168
+ throw error;
169
+ }
170
+ this.startKeepalive();
171
+ this.setupSignalHandlers();
172
+ logger.info('Bridge process started successfully');
173
+ }
174
+ catch (error) {
175
+ logger.error('Failed to start bridge:', error);
176
+ await this.cleanup();
177
+ throw error;
178
+ }
179
+ }
180
+ broadcastNotification(method, params) {
181
+ const notification = {
182
+ type: 'notification',
183
+ notification: {
184
+ method: method,
185
+ params,
186
+ },
187
+ };
188
+ const data = JSON.stringify(notification) + '\n';
189
+ for (const socket of this.connections) {
190
+ try {
191
+ socket.write(data);
192
+ }
193
+ catch (error) {
194
+ logger.error('Failed to send notification to client:', error);
195
+ }
196
+ }
197
+ }
198
+ async connectToMcp() {
199
+ logger.debug('Connecting to MCP server...');
200
+ const transport = await this.updateTransportAuth();
201
+ const clientConfig = {
202
+ clientInfo: { name: 'mcpc', version: packageJson.version },
203
+ transport,
204
+ capabilities: {
205
+ roots: { listChanged: true },
206
+ sampling: {},
207
+ },
208
+ listChanged: {
209
+ tools: {
210
+ autoRefresh: true,
211
+ onChanged: () => {
212
+ logger.debug('Tools list changed');
213
+ this.broadcastNotification('tools/list_changed');
214
+ },
215
+ },
216
+ resources: {
217
+ autoRefresh: true,
218
+ onChanged: () => {
219
+ logger.debug('Resources list changed');
220
+ this.broadcastNotification('resources/list_changed');
221
+ },
222
+ },
223
+ prompts: {
224
+ autoRefresh: true,
225
+ onChanged: () => {
226
+ logger.debug('Prompts list changed');
227
+ this.broadcastNotification('prompts/list_changed');
228
+ },
229
+ },
230
+ },
231
+ autoConnect: true,
232
+ verbose: this.options.verbose || false,
233
+ };
234
+ this.client = await createMcpClient(clientConfig);
235
+ logger.info('Connected to MCP server');
236
+ await this.updateLastSeenAt();
237
+ }
238
+ startKeepalive() {
239
+ logger.debug(`Starting keepalive ping every ${KEEPALIVE_INTERVAL_MS / 1000}s`);
240
+ this.keepaliveInterval = setInterval(() => {
241
+ this.sendKeepalivePing().catch((error) => {
242
+ logger.error('Keepalive ping failed:', error);
243
+ this.handlePossibleExpiration(error);
244
+ });
245
+ }, KEEPALIVE_INTERVAL_MS);
246
+ this.keepaliveInterval.unref();
247
+ }
248
+ async sendKeepalivePing() {
249
+ if (!this.client || this.isShuttingDown) {
250
+ return;
251
+ }
252
+ logger.debug('Sending keepalive ping');
253
+ await this.client.ping();
254
+ logger.debug('Keepalive ping successful');
255
+ await this.updateLastSeenAt();
256
+ }
257
+ async updateLastSeenAt() {
258
+ try {
259
+ await updateSession(this.options.sessionName, {
260
+ lastSeenAt: new Date().toISOString(),
261
+ });
262
+ }
263
+ catch (error) {
264
+ logger.error('Failed to update lastSeenAt:', error);
265
+ }
266
+ }
267
+ handlePossibleExpiration(error) {
268
+ const errorMessage = error.message.toLowerCase();
269
+ const isExpired = errorMessage.includes('404') ||
270
+ errorMessage.includes('-32000') ||
271
+ errorMessage.includes('not found') ||
272
+ errorMessage.includes('session expired') ||
273
+ errorMessage.includes('invalid session');
274
+ if (isExpired) {
275
+ logger.warn('Session appears to be expired, marking as expired and shutting down');
276
+ this.markSessionExpiredAndExit().catch((e) => {
277
+ logger.error('Failed to mark session as expired:', e);
278
+ process.exit(1);
279
+ });
280
+ }
281
+ }
282
+ async markSessionExpiredAndExit() {
283
+ if (this.isShuttingDown) {
284
+ return;
285
+ }
286
+ try {
287
+ await updateSession(this.options.sessionName, { status: 'expired' });
288
+ logger.info(`Session ${this.options.sessionName} marked as expired`);
289
+ }
290
+ catch (error) {
291
+ logger.error('Failed to update session status:', error);
292
+ }
293
+ await this.shutdown();
294
+ }
295
+ async createSocketServer() {
296
+ const { socketPath } = this.options;
297
+ await ensureDir(getBridgesDir());
298
+ if (await fileExists(socketPath)) {
299
+ logger.debug(`Removing existing socket: ${socketPath}`);
300
+ await unlink(socketPath);
301
+ }
302
+ const server = createServer((socket) => this.handleConnection(socket));
303
+ this.server = server;
304
+ await new Promise((resolve, reject) => {
305
+ server.listen(socketPath, () => {
306
+ logger.info(`Socket server listening: ${socketPath}`);
307
+ resolve();
308
+ });
309
+ server.on('error', (error) => {
310
+ logger.error('Socket server error:', error);
311
+ reject(error);
312
+ });
313
+ });
314
+ }
315
+ handleConnection(socket) {
316
+ logger.debug('New client connected');
317
+ this.connections.add(socket);
318
+ let buffer = '';
319
+ socket.on('data', (data) => {
320
+ buffer += data.toString();
321
+ let newlineIndex;
322
+ while ((newlineIndex = buffer.indexOf('\n')) !== -1) {
323
+ const line = buffer.slice(0, newlineIndex);
324
+ buffer = buffer.slice(newlineIndex + 1);
325
+ if (line.trim()) {
326
+ this.handleMessage(socket, line).catch((error) => {
327
+ logger.error('Error handling message:', error);
328
+ });
329
+ }
330
+ }
331
+ });
332
+ socket.on('end', () => {
333
+ logger.debug('Client disconnected');
334
+ this.connections.delete(socket);
335
+ });
336
+ socket.on('error', (error) => {
337
+ logger.error('Socket error:', error);
338
+ this.connections.delete(socket);
339
+ });
340
+ }
341
+ async handleMessage(socket, data) {
342
+ let messageId;
343
+ try {
344
+ const message = JSON.parse(data);
345
+ messageId = message.id;
346
+ logger.debug('Received message:', { type: message.type, method: message.method });
347
+ switch (message.type) {
348
+ case 'request':
349
+ await this.handleMcpRequest(socket, message);
350
+ break;
351
+ case 'shutdown':
352
+ logger.info('Received shutdown request');
353
+ if (message.id) {
354
+ this.sendResponse(socket, { type: 'response', id: message.id });
355
+ }
356
+ await this.shutdown();
357
+ break;
358
+ case 'set-auth-credentials':
359
+ if (message.authCredentials) {
360
+ this.setAuthCredentials(message.authCredentials);
361
+ if (message.id) {
362
+ this.sendResponse(socket, {
363
+ type: 'response',
364
+ id: message.id,
365
+ result: { success: true },
366
+ });
367
+ }
368
+ }
369
+ else {
370
+ throw new ClientError('Missing authCredentials in set-auth-credentials message');
371
+ }
372
+ break;
373
+ default:
374
+ throw new ClientError(`Unknown message type: ${message.type}`);
375
+ }
376
+ }
377
+ catch (error) {
378
+ logger.error('Failed to handle message:', error);
379
+ this.sendError(socket, error, messageId);
380
+ }
381
+ }
382
+ async handleMcpRequest(socket, message) {
383
+ await this.mcpClientReady;
384
+ if (!this.client) {
385
+ throw new NetworkError('MCP client not connected');
386
+ }
387
+ if (!message.method) {
388
+ throw new ClientError('Missing method in request');
389
+ }
390
+ try {
391
+ let result;
392
+ switch (message.method) {
393
+ case 'ping':
394
+ result = await this.client.ping();
395
+ break;
396
+ case 'listTools': {
397
+ const cursor = message.params;
398
+ result = await this.client.listTools(cursor);
399
+ break;
400
+ }
401
+ case 'callTool': {
402
+ const params = message.params;
403
+ result = await this.client.callTool(params.name, params.arguments);
404
+ break;
405
+ }
406
+ case 'listResources': {
407
+ const cursor = message.params;
408
+ result = await this.client.listResources(cursor);
409
+ break;
410
+ }
411
+ case 'readResource': {
412
+ const params = message.params;
413
+ result = await this.client.readResource(params.uri);
414
+ break;
415
+ }
416
+ case 'listResourceTemplates': {
417
+ const cursor = message.params;
418
+ result = await this.client.listResourceTemplates(cursor);
419
+ break;
420
+ }
421
+ case 'subscribeResource': {
422
+ const params = message.params;
423
+ result = await this.client.subscribeResource(params.uri);
424
+ break;
425
+ }
426
+ case 'unsubscribeResource': {
427
+ const params = message.params;
428
+ result = await this.client.unsubscribeResource(params.uri);
429
+ break;
430
+ }
431
+ case 'listPrompts': {
432
+ const cursor = message.params;
433
+ result = await this.client.listPrompts(cursor);
434
+ break;
435
+ }
436
+ case 'getPrompt': {
437
+ const params = message.params;
438
+ result = await this.client.getPrompt(params.name, params.arguments);
439
+ break;
440
+ }
441
+ case 'setLoggingLevel': {
442
+ const params = message.params;
443
+ result = await this.client.setLoggingLevel(params);
444
+ break;
445
+ }
446
+ case 'getServerInfo':
447
+ result = await this.client.getServerInfo();
448
+ break;
449
+ default:
450
+ throw new ClientError(`Unknown MCP method: ${message.method}`);
451
+ }
452
+ if (message.id) {
453
+ this.sendResponse(socket, {
454
+ type: 'response',
455
+ id: message.id,
456
+ result,
457
+ });
458
+ }
459
+ }
460
+ catch (error) {
461
+ logger.error('Failed to forward MCP request to server:', error);
462
+ this.sendError(socket, error, message.id);
463
+ this.handlePossibleExpiration(error);
464
+ }
465
+ }
466
+ sendResponse(socket, message) {
467
+ const data = JSON.stringify(message) + '\n';
468
+ socket.write(data);
469
+ }
470
+ sendError(socket, error, id) {
471
+ const message = {
472
+ type: 'response',
473
+ error: {
474
+ code: error instanceof ClientError ? 1 : error instanceof NetworkError ? 3 : 2,
475
+ message: error.message,
476
+ },
477
+ };
478
+ if (id) {
479
+ message.id = id;
480
+ }
481
+ this.sendResponse(socket, message);
482
+ }
483
+ setupSignalHandlers() {
484
+ const handleSignal = (signal) => {
485
+ logger.info(`Received ${signal}, shutting down...`);
486
+ this.shutdown().catch((error) => {
487
+ logger.error('Error during shutdown:', error);
488
+ process.exit(1);
489
+ });
490
+ };
491
+ process.on('SIGTERM', () => handleSignal('SIGTERM'));
492
+ process.on('SIGINT', () => handleSignal('SIGINT'));
493
+ }
494
+ async shutdown() {
495
+ if (this.isShuttingDown) {
496
+ return;
497
+ }
498
+ this.isShuttingDown = true;
499
+ logger.info('Shutting down bridge...');
500
+ await this.cleanup();
501
+ process.exit(0);
502
+ }
503
+ async cleanup() {
504
+ if (this.keepaliveInterval) {
505
+ clearInterval(this.keepaliveInterval);
506
+ this.keepaliveInterval = null;
507
+ logger.debug('Keepalive interval stopped');
508
+ }
509
+ for (const socket of this.connections) {
510
+ socket.end();
511
+ }
512
+ this.connections.clear();
513
+ if (this.server) {
514
+ const server = this.server;
515
+ await new Promise((resolve) => {
516
+ server.close(() => {
517
+ logger.debug('Socket server closed');
518
+ resolve();
519
+ });
520
+ });
521
+ try {
522
+ if (await fileExists(this.options.socketPath)) {
523
+ await unlink(this.options.socketPath);
524
+ logger.debug('Socket file removed');
525
+ }
526
+ }
527
+ catch (error) {
528
+ logger.warn('Failed to remove socket file:', error);
529
+ }
530
+ }
531
+ if (this.client) {
532
+ try {
533
+ await this.client.close();
534
+ logger.debug('MCP client closed');
535
+ }
536
+ catch (error) {
537
+ logger.warn('Failed to close MCP client:', error);
538
+ }
539
+ }
540
+ try {
541
+ await closeFileLogger();
542
+ logger.debug('File logger closed');
543
+ }
544
+ catch (error) {
545
+ logger.warn('Failed to close file logger:', error);
546
+ }
547
+ }
548
+ }
549
+ async function main() {
550
+ const args = process.argv.slice(2);
551
+ if (args.length < 3) {
552
+ console.error('Usage: mcpc-bridge <sessionName> <socketPath> <transportConfigJson> [--verbose] [--profile <name>]');
553
+ process.exit(1);
554
+ }
555
+ const sessionName = args[0];
556
+ const socketPath = args[1];
557
+ const transportConfigJson = args[2];
558
+ const verbose = args.includes('--verbose');
559
+ let profileName;
560
+ const profileIndex = args.indexOf('--profile');
561
+ if (profileIndex !== -1 && args[profileIndex + 1]) {
562
+ profileName = args[profileIndex + 1];
563
+ }
564
+ try {
565
+ const target = JSON.parse(transportConfigJson);
566
+ const bridgeOptions = {
567
+ sessionName,
568
+ target,
569
+ socketPath,
570
+ verbose,
571
+ };
572
+ if (profileName) {
573
+ bridgeOptions.profileName = profileName;
574
+ }
575
+ const bridge = new BridgeProcess(bridgeOptions);
576
+ await bridge.start();
577
+ }
578
+ catch (error) {
579
+ console.error('Bridge failed to start:', error);
580
+ process.exit(1);
581
+ }
582
+ }
583
+ main().catch((error) => {
584
+ console.error('Fatal error:', error);
585
+ process.exit(1);
586
+ });
587
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { CommandOptions } from '../../lib/types.js';
2
+ export declare function login(serverUrl: string, options: CommandOptions & {
3
+ profile?: string;
4
+ scope?: string;
5
+ }): Promise<void>;
6
+ export declare function logout(serverUrl: string, options: CommandOptions & {
7
+ profile?: string;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUzD,wBAAsB,KAAK,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAKD,wBAAsB,MAAM,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CA4Cf"}