@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,277 @@
1
+ import * as readline from 'readline';
2
+ import { readFile, writeFile, mkdir } from 'fs/promises';
3
+ import { join } from 'path';
4
+ import { fileExists, getMcpcHome } from '../lib/utils.js';
5
+ import { formatError as formatErrorOutput } from './output.js';
6
+ import chalk from 'chalk';
7
+ import * as tools from './commands/tools.js';
8
+ import * as resources from './commands/resources.js';
9
+ import * as prompts from './commands/prompts.js';
10
+ import * as logging from './commands/logging.js';
11
+ import { ping } from './commands/utilities.js';
12
+ import { createSessionClient } from '../lib/session-client.js';
13
+ import { parseShellCommand } from './shell-parser.js';
14
+ const HISTORY_MAX_COMMANDS = 1000;
15
+ const HISTORY_FILE = 'shell-history';
16
+ async function loadHistory() {
17
+ const historyPath = join(getMcpcHome(), HISTORY_FILE);
18
+ if (!(await fileExists(historyPath))) {
19
+ return [];
20
+ }
21
+ try {
22
+ const content = await readFile(historyPath, 'utf-8');
23
+ return content.split('\n').filter((line) => line.trim().length > 0);
24
+ }
25
+ catch {
26
+ return [];
27
+ }
28
+ }
29
+ async function saveHistory(history) {
30
+ const historyPath = join(getMcpcHome(), HISTORY_FILE);
31
+ await mkdir(getMcpcHome(), { recursive: true });
32
+ const toSave = history.slice(-HISTORY_MAX_COMMANDS);
33
+ try {
34
+ await writeFile(historyPath, toSave.join('\n') + '\n', 'utf-8');
35
+ }
36
+ catch {
37
+ }
38
+ }
39
+ function addToHistory(ctx, line) {
40
+ const trimmed = line.trim();
41
+ if (!trimmed || trimmed === ctx.history[ctx.history.length - 1]) {
42
+ return;
43
+ }
44
+ ctx.history.push(trimmed);
45
+ }
46
+ function displayNotification(notification) {
47
+ const timestamp = new Date().toLocaleTimeString();
48
+ let message = '';
49
+ switch (notification.method) {
50
+ case 'tools/list_changed':
51
+ message = chalk.yellow(`[${timestamp}] Server tools list changed`);
52
+ break;
53
+ case 'resources/list_changed':
54
+ message = chalk.yellow(`[${timestamp}] Server resources list changed`);
55
+ break;
56
+ case 'prompts/list_changed':
57
+ message = chalk.yellow(`[${timestamp}] Server prompts list changed`);
58
+ break;
59
+ case 'resources/updated':
60
+ message = chalk.yellow(`[${timestamp}] Resource updated`);
61
+ break;
62
+ case 'progress':
63
+ message = chalk.blue(`[${timestamp}] Progress: ${JSON.stringify(notification.params)}`);
64
+ break;
65
+ case 'logging/message':
66
+ message = chalk.gray(`[${timestamp}] Server log: ${JSON.stringify(notification.params)}`);
67
+ break;
68
+ default:
69
+ message = chalk.dim(`[${timestamp}] Notification: ${String(notification.method)}`);
70
+ }
71
+ console.log(message);
72
+ }
73
+ async function setupNotificationListener(ctx) {
74
+ try {
75
+ if (!ctx.target.startsWith('@')) {
76
+ return;
77
+ }
78
+ ctx.notificationClient = await createSessionClient(ctx.target);
79
+ ctx.notificationClient.on('notification', (notification) => {
80
+ displayNotification(notification);
81
+ });
82
+ }
83
+ catch {
84
+ }
85
+ }
86
+ function showShellHelp() {
87
+ console.log(chalk.bold('\nAvailable commands:'));
88
+ console.log('');
89
+ console.log(chalk.cyan(' MCP commands:'));
90
+ console.log(' tools-list');
91
+ console.log(' tools-schema <name>');
92
+ console.log(' tools-call <name> [--args ...]');
93
+ console.log(' resources-list');
94
+ console.log(' resources-read <uri>');
95
+ console.log(' resources-templates-list');
96
+ console.log(' prompts-list');
97
+ console.log(' prompts-get <name> [--args ...]');
98
+ console.log(' logging-set-level <level>');
99
+ console.log(' ping');
100
+ console.log('');
101
+ console.log(chalk.cyan(' Shell commands:'));
102
+ console.log(' help Show this help message');
103
+ console.log(' exit, quit Exit the shell');
104
+ console.log(' clear Clear the screen');
105
+ console.log('');
106
+ }
107
+ async function executeCommand(ctx, line) {
108
+ const { command, args } = parseShellCommand(line);
109
+ if (!command) {
110
+ return;
111
+ }
112
+ if (command === 'help') {
113
+ showShellHelp();
114
+ return;
115
+ }
116
+ if (command === 'exit' || command === 'quit') {
117
+ ctx.running = false;
118
+ console.log(chalk.dim('Goodbye!'));
119
+ return;
120
+ }
121
+ if (command === 'clear') {
122
+ console.clear();
123
+ return;
124
+ }
125
+ const options = {
126
+ outputMode: 'human',
127
+ hideTarget: true,
128
+ };
129
+ try {
130
+ switch (command) {
131
+ case 'ping':
132
+ await ping(ctx.target, options);
133
+ break;
134
+ case 'tools':
135
+ case 'tools-list':
136
+ await tools.listTools(ctx.target, options);
137
+ break;
138
+ case 'tools-schema': {
139
+ if (args.length === 0) {
140
+ console.log(chalk.red('Error: tools-schema requires a tool name'));
141
+ console.log('Usage: tools-schema <name>');
142
+ return;
143
+ }
144
+ await tools.getTool(ctx.target, args[0], options);
145
+ break;
146
+ }
147
+ case 'tools-call': {
148
+ if (args.length === 0) {
149
+ console.log(chalk.red('Error: tools-call requires a tool name'));
150
+ console.log('Usage: tools-call <name> [--args ...]');
151
+ return;
152
+ }
153
+ const toolName = args[0];
154
+ const argsIndex = args.indexOf('--args');
155
+ const toolArgs = argsIndex !== -1 ? args.slice(argsIndex + 1) : undefined;
156
+ await tools.callTool(ctx.target, toolName, {
157
+ ...options,
158
+ ...(toolArgs ? { args: toolArgs } : {}),
159
+ });
160
+ break;
161
+ }
162
+ case 'resources':
163
+ case 'resources-list':
164
+ await resources.listResources(ctx.target, options);
165
+ break;
166
+ case 'resources-read': {
167
+ if (args.length === 0) {
168
+ console.log(chalk.red('Error: resources-read requires a URI'));
169
+ console.log('Usage: resources-read <uri>');
170
+ return;
171
+ }
172
+ await resources.getResource(ctx.target, args[0], options);
173
+ break;
174
+ }
175
+ case 'resources-templates-list':
176
+ await resources.listResourceTemplates(ctx.target, options);
177
+ break;
178
+ case 'prompts':
179
+ case 'prompts-list':
180
+ await prompts.listPrompts(ctx.target, options);
181
+ break;
182
+ case 'prompts-get': {
183
+ if (args.length === 0) {
184
+ console.log(chalk.red('Error: prompts-get requires a prompt name'));
185
+ console.log('Usage: prompts-get <name> [--args ...]');
186
+ return;
187
+ }
188
+ const promptName = args[0];
189
+ const argsIndex = args.indexOf('--args');
190
+ const promptArgs = argsIndex !== -1 ? args.slice(argsIndex + 1) : undefined;
191
+ await prompts.getPrompt(ctx.target, promptName, {
192
+ ...options,
193
+ ...(promptArgs ? { args: promptArgs } : {}),
194
+ });
195
+ break;
196
+ }
197
+ case 'logging-set-level': {
198
+ if (args.length === 0) {
199
+ console.log(chalk.red('Error: logging-set-level requires a level'));
200
+ console.log('Usage: logging-set-level <level>');
201
+ return;
202
+ }
203
+ await logging.setLogLevel(ctx.target, args[0], options);
204
+ break;
205
+ }
206
+ default:
207
+ console.log(chalk.red(`Unknown command: ${command}`));
208
+ console.log(chalk.dim('Type "help" for available commands'));
209
+ }
210
+ }
211
+ catch (error) {
212
+ const errorMessage = error instanceof Error ? error.message : String(error);
213
+ console.error(formatErrorOutput(errorMessage));
214
+ }
215
+ }
216
+ async function shellLoop(ctx) {
217
+ const historyReversed = ctx.history.slice(-HISTORY_MAX_COMMANDS).reverse();
218
+ const rl = readline.createInterface({
219
+ input: process.stdin,
220
+ output: process.stdout,
221
+ history: historyReversed,
222
+ historySize: HISTORY_MAX_COMMANDS,
223
+ prompt: chalk.cyan(`mcpc(${ctx.target})> `),
224
+ terminal: true,
225
+ });
226
+ rl.on('line', async (line) => {
227
+ addToHistory(ctx, line);
228
+ await executeCommand(ctx, line);
229
+ if (ctx.running) {
230
+ rl.prompt();
231
+ }
232
+ else {
233
+ rl.close();
234
+ }
235
+ });
236
+ rl.on('SIGINT', () => {
237
+ console.log('');
238
+ rl.prompt();
239
+ });
240
+ rl.on('close', () => {
241
+ ctx.running = false;
242
+ console.log(chalk.dim('Goodbye!'));
243
+ });
244
+ rl.prompt();
245
+ await new Promise((resolve) => {
246
+ rl.on('close', resolve);
247
+ });
248
+ }
249
+ export async function startShell(target) {
250
+ const ctx = {
251
+ target,
252
+ history: await loadHistory(),
253
+ running: true,
254
+ };
255
+ console.log(chalk.bold(`\nWelcome to mcpc shell for ${chalk.cyan(target)}`));
256
+ console.log(chalk.dim('Type "help" for available commands, "exit" to quit\n'));
257
+ await setupNotificationListener(ctx);
258
+ const cleanup = async () => {
259
+ await saveHistory(ctx.history);
260
+ if (ctx.notificationClient) {
261
+ await ctx.notificationClient.close();
262
+ }
263
+ };
264
+ process.on('SIGINT', () => {
265
+ ctx.running = false;
266
+ });
267
+ process.on('SIGTERM', () => {
268
+ ctx.running = false;
269
+ });
270
+ try {
271
+ await shellLoop(ctx);
272
+ }
273
+ finally {
274
+ await cleanup();
275
+ }
276
+ }
277
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/cli/shell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function extractSingleTextContent(data: unknown): string | undefined;
2
+ //# sourceMappingURL=tool-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.d.ts","sourceRoot":"","sources":["../../src/cli/tool-result.ts"],"names":[],"mappings":"AAQA,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAqB1E"}
@@ -0,0 +1,19 @@
1
+ export function extractSingleTextContent(data) {
2
+ if (data &&
3
+ typeof data === 'object' &&
4
+ 'content' in data &&
5
+ Array.isArray(data.content)) {
6
+ const content = data.content;
7
+ if (content.length === 1 &&
8
+ content[0] &&
9
+ typeof content[0] === 'object' &&
10
+ 'type' in content[0] &&
11
+ content[0].type === 'text' &&
12
+ 'text' in content[0] &&
13
+ typeof content[0].text === 'string') {
14
+ return content[0].text;
15
+ }
16
+ }
17
+ return undefined;
18
+ }
19
+ //# sourceMappingURL=tool-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.js","sourceRoot":"","sources":["../../src/cli/tool-result.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,wBAAwB,CAAC,IAAa;IACpD,IACE,IAAI;QACJ,OAAO,IAAI,KAAK,QAAQ;QACxB,SAAS,IAAI,IAAI;QACjB,KAAK,CAAC,OAAO,CAAE,IAAgC,CAAC,OAAO,CAAC,EACxD,CAAC;QACD,MAAM,OAAO,GAAI,IAAgC,CAAC,OAAoB,CAAC;QACvE,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;YACpB,OAAO,CAAC,CAAC,CAAC;YACV,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC,CAA6B,CAAC,IAAI,KAAK,MAAM;YACvD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;YACpB,OAAQ,OAAO,CAAC,CAAC,CAA6B,CAAC,IAAI,KAAK,QAAQ,EAChE,CAAC;YACD,OAAQ,OAAO,CAAC,CAAC,CAA6B,CAAC,IAAc,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ClientCapabilities, ListChangedHandlers } from '@modelcontextprotocol/sdk/types.js';
2
+ import { McpClient } from './mcp-client.js';
3
+ import type { TransportConfig } from '../lib/types.js';
4
+ export interface ClientInfo {
5
+ name: string;
6
+ version: string;
7
+ }
8
+ export interface CreateMcpClientOptions {
9
+ clientInfo: ClientInfo;
10
+ transport: TransportConfig;
11
+ capabilities?: ClientCapabilities;
12
+ listChanged?: ListChangedHandlers;
13
+ autoConnect?: boolean;
14
+ verbose?: boolean;
15
+ }
16
+ export declare function createMcpClient(options: CreateMcpClientOptions): Promise<McpClient>;
17
+ export declare function createStdioClient(clientInfo: ClientInfo, command: string, args?: string[], env?: Record<string, string>): Promise<McpClient>;
18
+ export declare function createHttpClient(clientInfo: ClientInfo, url: string, headers?: Record<string, string>, timeoutMs?: number): Promise<McpClient>;
19
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/core/factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAClG,OAAO,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMvD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,sBAAsB;IAIrC,UAAU,EAAE,UAAU,CAAC;IAKvB,SAAS,EAAE,eAAe,CAAC;IAK3B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAKlC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAMlC,WAAW,CAAC,EAAE,OAAO,CAAC;IAMtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6BD,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC,CA6BzF;AAWD,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,SAAS,CAAC,CAiBpB;AAWD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,CAiBpB"}
@@ -0,0 +1,55 @@
1
+ import { McpClient } from './mcp-client.js';
2
+ import { createTransportFromConfig } from './transports.js';
3
+ import { createLogger } from '../lib/logger.js';
4
+ export async function createMcpClient(options) {
5
+ const { autoConnect = true } = options;
6
+ const factoryLogger = createLogger('ClientFactory');
7
+ factoryLogger.debug('Creating MCP client', {
8
+ clientName: options.clientInfo.name,
9
+ transportType: options.transport.type,
10
+ });
11
+ const clientOptions = {
12
+ capabilities: options.capabilities || {},
13
+ ...(options.listChanged && { listChanged: options.listChanged }),
14
+ logger: createLogger(`McpClient:${options.clientInfo.name}`),
15
+ };
16
+ const client = new McpClient(options.clientInfo, clientOptions);
17
+ if (autoConnect) {
18
+ const transport = createTransportFromConfig(options.transport);
19
+ await client.connect(transport);
20
+ }
21
+ return client;
22
+ }
23
+ export async function createStdioClient(clientInfo, command, args, env) {
24
+ const transport = {
25
+ type: 'stdio',
26
+ command,
27
+ };
28
+ if (args !== undefined) {
29
+ transport.args = args;
30
+ }
31
+ if (env !== undefined) {
32
+ transport.env = env;
33
+ }
34
+ return createMcpClient({
35
+ clientInfo,
36
+ transport,
37
+ });
38
+ }
39
+ export async function createHttpClient(clientInfo, url, headers, timeoutMs) {
40
+ const transport = {
41
+ type: 'http',
42
+ url,
43
+ };
44
+ if (headers) {
45
+ transport.headers = headers;
46
+ }
47
+ if (timeoutMs) {
48
+ transport.timeoutMs = timeoutMs;
49
+ }
50
+ return createMcpClient({
51
+ clientInfo,
52
+ transport,
53
+ });
54
+ }
55
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/core/factory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0EhD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAIvC,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAEpD,aAAa,CAAC,KAAK,CAAC,qBAAqB,EAAE;QACzC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;QACnC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;KACtC,CAAC,CAAC;IAIH,MAAM,aAAa,GAAqB;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAChE,MAAM,EAAE,YAAY,CAAC,aAAa,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC7D,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAGhE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAsB,EACtB,OAAe,EACf,IAAe,EACf,GAA4B;IAE5B,MAAM,SAAS,GAAoB;QACjC,IAAI,EAAE,OAAO;QACb,OAAO;KACR,CAAC;IAEF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;IACtB,CAAC;IAED,OAAO,eAAe,CAAC;QACrB,UAAU;QACV,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAsB,EACtB,GAAW,EACX,OAAgC,EAChC,SAAkB;IAElB,MAAM,SAAS,GAAoB;QACjC,IAAI,EAAE,MAAM;QACZ,GAAG;KACJ,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IAClC,CAAC;IAED,OAAO,eAAe,CAAC;QACrB,UAAU;QACV,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './mcp-client.js';
2
+ export * from './transports.js';
3
+ export * from './factory.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAMA,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './mcp-client.js';
2
+ export * from './transports.js';
3
+ export * from './factory.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAMA,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Client as SDKClient, type ClientOptions } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
3
+ import type { Implementation, ListToolsResult, CallToolResult, ListResourcesResult, ListResourceTemplatesResult, ReadResourceResult, ListPromptsResult, GetPromptResult, LoggingLevel } from '@modelcontextprotocol/sdk/types.js';
4
+ import { type Logger } from '../lib/logger.js';
5
+ import type { IMcpClient, ServerInfo } from '../lib/types.js';
6
+ export interface McpClientOptions extends ClientOptions {
7
+ logger?: Logger;
8
+ }
9
+ export declare class McpClient implements IMcpClient {
10
+ private client;
11
+ private logger;
12
+ private negotiatedProtocolVersion?;
13
+ constructor(clientInfo: Implementation, options?: McpClientOptions);
14
+ connect(transport: Transport): Promise<void>;
15
+ close(): Promise<void>;
16
+ getServerInfo(): Promise<ServerInfo>;
17
+ ping(): Promise<void>;
18
+ listTools(cursor?: string): Promise<ListToolsResult>;
19
+ callTool(name: string, args?: Record<string, unknown>): Promise<CallToolResult>;
20
+ listResources(cursor?: string): Promise<ListResourcesResult>;
21
+ listResourceTemplates(cursor?: string): Promise<ListResourceTemplatesResult>;
22
+ readResource(uri: string): Promise<ReadResourceResult>;
23
+ subscribeResource(uri: string): Promise<void>;
24
+ unsubscribeResource(uri: string): Promise<void>;
25
+ listPrompts(cursor?: string): Promise<ListPromptsResult>;
26
+ getPrompt(name: string, args?: Record<string, string>): Promise<GetPromptResult>;
27
+ setLoggingLevel(level: LoggingLevel): Promise<void>;
28
+ getSDKClient(): SDKClient;
29
+ }
30
+ //# sourceMappingURL=mcp-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAoB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAY9D,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IAIrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAAC,CAAS;gBAE/B,UAAU,EAAE,cAAc,EAAE,OAAO,GAAE,gBAAqB;IAsBhE,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAiB9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAkBpD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAqB/E,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkB5D,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAkB5E,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBtD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBxD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBhF,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzD,YAAY,IAAI,SAAS;CAG1B"}