@agent-deck/backend 1.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 (166) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/cli-runtime.d.ts +4 -0
  3. package/dist/cli-runtime.d.ts.map +1 -0
  4. package/dist/cli-runtime.js +12 -0
  5. package/dist/cli-runtime.js.map +1 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +30 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/agent-deck-context.d.ts +8 -0
  11. package/dist/lib/agent-deck-context.d.ts.map +1 -0
  12. package/dist/lib/agent-deck-context.js +48 -0
  13. package/dist/lib/agent-deck-context.js.map +1 -0
  14. package/dist/lib/bound-deck-scope.d.ts +15 -0
  15. package/dist/lib/bound-deck-scope.d.ts.map +1 -0
  16. package/dist/lib/bound-deck-scope.js +68 -0
  17. package/dist/lib/bound-deck-scope.js.map +1 -0
  18. package/dist/lib/client-scope.d.ts +14 -0
  19. package/dist/lib/client-scope.d.ts.map +1 -0
  20. package/dist/lib/client-scope.js +46 -0
  21. package/dist/lib/client-scope.js.map +1 -0
  22. package/dist/lib/paths.d.ts +2 -0
  23. package/dist/lib/paths.d.ts.map +1 -0
  24. package/dist/lib/paths.js +24 -0
  25. package/dist/lib/paths.js.map +1 -0
  26. package/dist/lib/version.d.ts +3 -0
  27. package/dist/lib/version.d.ts.map +1 -0
  28. package/dist/lib/version.js +20 -0
  29. package/dist/lib/version.js.map +1 -0
  30. package/dist/mcp-index.d.ts +2 -0
  31. package/dist/mcp-index.d.ts.map +1 -0
  32. package/dist/mcp-index.js +32 -0
  33. package/dist/mcp-index.js.map +1 -0
  34. package/dist/mcp-server.d.ts +25 -0
  35. package/dist/mcp-server.d.ts.map +1 -0
  36. package/dist/mcp-server.js +1121 -0
  37. package/dist/mcp-server.js.map +1 -0
  38. package/dist/mcp-stdio.d.ts +2 -0
  39. package/dist/mcp-stdio.d.ts.map +1 -0
  40. package/dist/mcp-stdio.js.map +1 -0
  41. package/dist/models/database.d.ts +64 -0
  42. package/dist/models/database.d.ts.map +1 -0
  43. package/dist/models/database.js +965 -0
  44. package/dist/models/database.js.map +1 -0
  45. package/dist/playbooks/playbook-manager.d.ts +29 -0
  46. package/dist/playbooks/playbook-manager.d.ts.map +1 -0
  47. package/dist/playbooks/playbook-manager.js +198 -0
  48. package/dist/playbooks/playbook-manager.js.map +1 -0
  49. package/dist/playbooks/playbook-parser.d.ts +8 -0
  50. package/dist/playbooks/playbook-parser.d.ts.map +1 -0
  51. package/dist/playbooks/playbook-parser.js +76 -0
  52. package/dist/playbooks/playbook-parser.js.map +1 -0
  53. package/dist/playbooks/playbook-service.d.ts +9 -0
  54. package/dist/playbooks/playbook-service.d.ts.map +1 -0
  55. package/dist/playbooks/playbook-service.js +107 -0
  56. package/dist/playbooks/playbook-service.js.map +1 -0
  57. package/dist/routes/collection.d.ts +3 -0
  58. package/dist/routes/collection.d.ts.map +1 -0
  59. package/dist/routes/collection.js +34 -0
  60. package/dist/routes/collection.js.map +1 -0
  61. package/dist/routes/credentials.d.ts +3 -0
  62. package/dist/routes/credentials.d.ts.map +1 -0
  63. package/dist/routes/credentials.js +241 -0
  64. package/dist/routes/credentials.js.map +1 -0
  65. package/dist/routes/decks.d.ts +3 -0
  66. package/dist/routes/decks.d.ts.map +1 -0
  67. package/dist/routes/decks.js +430 -0
  68. package/dist/routes/decks.js.map +1 -0
  69. package/dist/routes/local-mcp.d.ts +3 -0
  70. package/dist/routes/local-mcp.d.ts.map +1 -0
  71. package/dist/routes/local-mcp.js +189 -0
  72. package/dist/routes/local-mcp.js.map +1 -0
  73. package/dist/routes/mcp.d.ts +3 -0
  74. package/dist/routes/mcp.d.ts.map +1 -0
  75. package/dist/routes/mcp.js +170 -0
  76. package/dist/routes/mcp.js.map +1 -0
  77. package/dist/routes/oauth.d.ts +3 -0
  78. package/dist/routes/oauth.d.ts.map +1 -0
  79. package/dist/routes/oauth.js +242 -0
  80. package/dist/routes/oauth.js.map +1 -0
  81. package/dist/routes/playbooks.d.ts +5 -0
  82. package/dist/routes/playbooks.d.ts.map +1 -0
  83. package/dist/routes/playbooks.js +220 -0
  84. package/dist/routes/playbooks.js.map +1 -0
  85. package/dist/routes/scope.d.ts +3 -0
  86. package/dist/routes/scope.d.ts.map +1 -0
  87. package/dist/routes/scope.js +107 -0
  88. package/dist/routes/scope.js.map +1 -0
  89. package/dist/routes/services.d.ts +3 -0
  90. package/dist/routes/services.d.ts.map +1 -0
  91. package/dist/routes/services.js +281 -0
  92. package/dist/routes/services.js.map +1 -0
  93. package/dist/routes/websocket.d.ts +11 -0
  94. package/dist/routes/websocket.d.ts.map +1 -0
  95. package/dist/routes/websocket.js +154 -0
  96. package/dist/routes/websocket.js.map +1 -0
  97. package/dist/scope/repo-deck.d.ts +10 -0
  98. package/dist/scope/repo-deck.d.ts.map +1 -0
  99. package/dist/scope/repo-deck.js +63 -0
  100. package/dist/scope/repo-deck.js.map +1 -0
  101. package/dist/server/index.d.ts +24 -0
  102. package/dist/server/index.d.ts.map +1 -0
  103. package/dist/server/index.js +111 -0
  104. package/dist/server/index.js.map +1 -0
  105. package/dist/services/collection-warning-service.d.ts +18 -0
  106. package/dist/services/collection-warning-service.d.ts.map +1 -0
  107. package/dist/services/collection-warning-service.js +129 -0
  108. package/dist/services/collection-warning-service.js.map +1 -0
  109. package/dist/services/config-manager.d.ts +32 -0
  110. package/dist/services/config-manager.d.ts.map +1 -0
  111. package/dist/services/config-manager.js +119 -0
  112. package/dist/services/config-manager.js.map +1 -0
  113. package/dist/services/icon-resolver.d.ts +20 -0
  114. package/dist/services/icon-resolver.d.ts.map +1 -0
  115. package/dist/services/icon-resolver.js +224 -0
  116. package/dist/services/icon-resolver.js.map +1 -0
  117. package/dist/services/local-mcp-server-manager.d.ts +51 -0
  118. package/dist/services/local-mcp-server-manager.d.ts.map +1 -0
  119. package/dist/services/local-mcp-server-manager.js +246 -0
  120. package/dist/services/local-mcp-server-manager.js.map +1 -0
  121. package/dist/services/mcp-client-manager.d.ts +22 -0
  122. package/dist/services/mcp-client-manager.d.ts.map +1 -0
  123. package/dist/services/mcp-client-manager.js +257 -0
  124. package/dist/services/mcp-client-manager.js.map +1 -0
  125. package/dist/services/mcp-discovery-service.d.ts +31 -0
  126. package/dist/services/mcp-discovery-service.d.ts.map +1 -0
  127. package/dist/services/mcp-discovery-service.js +164 -0
  128. package/dist/services/mcp-discovery-service.js.map +1 -0
  129. package/dist/services/oauth-manager.d.ts +25 -0
  130. package/dist/services/oauth-manager.d.ts.map +1 -0
  131. package/dist/services/oauth-manager.js +365 -0
  132. package/dist/services/oauth-manager.js.map +1 -0
  133. package/dist/services/service-manager.d.ts +61 -0
  134. package/dist/services/service-manager.d.ts.map +1 -0
  135. package/dist/services/service-manager.js +447 -0
  136. package/dist/services/service-manager.js.map +1 -0
  137. package/dist/test-local-mcp-e2e.d.ts +3 -0
  138. package/dist/test-local-mcp-e2e.d.ts.map +1 -0
  139. package/dist/test-local-mcp-e2e.js +104 -0
  140. package/dist/test-local-mcp-e2e.js.map +1 -0
  141. package/dist/test-local-mcp.d.ts +3 -0
  142. package/dist/test-local-mcp.d.ts.map +1 -0
  143. package/dist/test-local-mcp.js +54 -0
  144. package/dist/test-local-mcp.js.map +1 -0
  145. package/dist/vault/credential-manager.d.ts +45 -0
  146. package/dist/vault/credential-manager.d.ts.map +1 -0
  147. package/dist/vault/credential-manager.js +237 -0
  148. package/dist/vault/credential-manager.js.map +1 -0
  149. package/dist/vault/index.d.ts +4 -0
  150. package/dist/vault/index.d.ts.map +1 -0
  151. package/dist/vault/index.js +20 -0
  152. package/dist/vault/index.js.map +1 -0
  153. package/dist/vault/secret-store.d.ts +36 -0
  154. package/dist/vault/secret-store.d.ts.map +1 -0
  155. package/dist/vault/secret-store.js +207 -0
  156. package/dist/vault/secret-store.js.map +1 -0
  157. package/dist/vault/yaml-sync.d.ts +8 -0
  158. package/dist/vault/yaml-sync.d.ts.map +1 -0
  159. package/dist/vault/yaml-sync.js +60 -0
  160. package/dist/vault/yaml-sync.js.map +1 -0
  161. package/package.json +64 -0
  162. package/static-ui/assets/AgentDeckLogo2-z3pVqJJ3.png +0 -0
  163. package/static-ui/assets/index-BnA3AsqY.css +1 -0
  164. package/static-ui/assets/index-D1IuraRt.js +334 -0
  165. package/static-ui/favicon.png +0 -0
  166. package/static-ui/index.html +17 -0
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalMCPServerManager = void 0;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
6
+ const shared_1 = require("@agent-deck/shared");
7
+ class LocalMCPServerManager {
8
+ processes = new Map();
9
+ clients = new Map();
10
+ /**
11
+ * Start a local MCP server process
12
+ */
13
+ async startLocalServer(service) {
14
+ if (!service.localCommand) {
15
+ throw new Error('Local command not configured for service');
16
+ }
17
+ const processId = (0, shared_1.generateId)();
18
+ console.log(`๐Ÿš€ Starting local MCP server: ${service.name} (${service.localCommand} ${service.localArgs?.join(' ')})`);
19
+ try {
20
+ // Prepare environment variables
21
+ const env = {};
22
+ // Copy process.env, filtering out undefined values
23
+ for (const [key, value] of Object.entries(process.env)) {
24
+ if (value !== undefined) {
25
+ env[key] = value;
26
+ }
27
+ }
28
+ // Add service-specific environment variables
29
+ if (service.localEnv) {
30
+ Object.assign(env, service.localEnv);
31
+ }
32
+ // Create MCP client with stdio transport
33
+ const client = new index_js_1.Client({
34
+ name: 'agent-deck-local-mcp-client',
35
+ version: '1.0.0'
36
+ });
37
+ const transport = new stdio_js_1.StdioClientTransport({
38
+ command: service.localCommand,
39
+ args: service.localArgs || [],
40
+ cwd: service.localWorkingDir,
41
+ env: env,
42
+ });
43
+ // Connect to the local server
44
+ await client.connect(transport);
45
+ // Discover capabilities
46
+ const capabilities = await this.discoverCapabilities(client);
47
+ // Create process record
48
+ const processRecord = {
49
+ id: processId,
50
+ serviceId: service.id,
51
+ process: null, // The transport manages the process internally
52
+ isRunning: true,
53
+ startTime: new Date(),
54
+ lastActivity: new Date(),
55
+ capabilities,
56
+ };
57
+ // Store references
58
+ this.processes.set(processId, processRecord);
59
+ this.clients.set(service.id, client);
60
+ console.log(`โœ… Local MCP server started: ${service.name}`);
61
+ console.log(`๐Ÿ“‹ Discovered ${capabilities.tools.length} tools, ${capabilities.resources.length} resources, ${capabilities.prompts.length} prompts`);
62
+ return processRecord;
63
+ }
64
+ catch (error) {
65
+ console.error(`โŒ Failed to start local MCP server ${service.name}:`, error);
66
+ throw error;
67
+ }
68
+ }
69
+ /**
70
+ * Stop a local MCP server process
71
+ */
72
+ async stopLocalServer(serviceId) {
73
+ const processRecord = Array.from(this.processes.values()).find(p => p.serviceId === serviceId);
74
+ if (!processRecord) {
75
+ console.log(`โš ๏ธ No local server found for service ${serviceId}`);
76
+ return;
77
+ }
78
+ console.log(`๐Ÿ›‘ Stopping local MCP server: ${processRecord.serviceId}`);
79
+ try {
80
+ // Close the MCP client connection (this will also stop the process)
81
+ const client = this.clients.get(serviceId);
82
+ if (client) {
83
+ await client.close();
84
+ this.clients.delete(serviceId);
85
+ }
86
+ // Remove from tracking
87
+ this.processes.delete(processRecord.id);
88
+ console.log(`โœ… Local MCP server stopped: ${serviceId}`);
89
+ }
90
+ catch (error) {
91
+ console.error(`โŒ Error stopping local MCP server ${serviceId}:`, error);
92
+ throw error;
93
+ }
94
+ }
95
+ /**
96
+ * Get a local MCP server process
97
+ */
98
+ getLocalServer(serviceId) {
99
+ return Array.from(this.processes.values()).find(p => p.serviceId === serviceId);
100
+ }
101
+ /**
102
+ * Get the MCP client for a local server
103
+ */
104
+ getClient(serviceId) {
105
+ return this.clients.get(serviceId);
106
+ }
107
+ /**
108
+ * Check if a local server is running
109
+ */
110
+ isLocalServerRunning(serviceId) {
111
+ const processRecord = this.getLocalServer(serviceId);
112
+ return processRecord?.isRunning || false;
113
+ }
114
+ /**
115
+ * Discover capabilities of a local MCP server
116
+ */
117
+ async discoverCapabilities(client) {
118
+ try {
119
+ const [toolsResponse, resources, prompts] = await Promise.all([
120
+ client.listTools().catch(() => ({ tools: [] })),
121
+ client.listResources().catch(() => []),
122
+ client.listPrompts().catch(() => []),
123
+ ]);
124
+ // Handle tools response - it might be an object with a tools property or a direct array
125
+ const tools = Array.isArray(toolsResponse) ? toolsResponse : toolsResponse?.tools || [];
126
+ return {
127
+ tools: tools.map((tool) => ({
128
+ name: tool.name || tool.title || 'Unknown Tool',
129
+ description: tool.description || '',
130
+ inputSchema: tool.inputSchema || {},
131
+ })),
132
+ resources: resources || [],
133
+ prompts: (prompts || []).map((prompt) => prompt.name || 'Unknown Prompt'),
134
+ };
135
+ }
136
+ catch (error) {
137
+ console.error('โŒ Failed to discover capabilities:', error);
138
+ return {
139
+ tools: [],
140
+ resources: [],
141
+ prompts: [],
142
+ };
143
+ }
144
+ }
145
+ /**
146
+ * Call a tool on a local MCP server
147
+ */
148
+ async callTool(serviceId, toolName, arguments_) {
149
+ const client = this.clients.get(serviceId);
150
+ if (!client) {
151
+ throw new Error(`No local MCP client found for service ${serviceId}`);
152
+ }
153
+ const processRecord = this.getLocalServer(serviceId);
154
+ if (!processRecord?.isRunning) {
155
+ throw new Error(`Local MCP server ${serviceId} is not running`);
156
+ }
157
+ try {
158
+ console.log(`๐Ÿ”ง Calling tool ${toolName} on local MCP server ${serviceId}`);
159
+ // Update last activity
160
+ processRecord.lastActivity = new Date();
161
+ // Call the tool
162
+ const result = await client.callTool({
163
+ name: toolName,
164
+ arguments: arguments_ || {},
165
+ });
166
+ console.log(`โœ… Successfully called tool ${toolName} on local server ${serviceId}`);
167
+ return result;
168
+ }
169
+ catch (error) {
170
+ console.error(`โŒ Failed to call tool ${toolName} on local server ${serviceId}:`, error);
171
+ throw error;
172
+ }
173
+ }
174
+ /**
175
+ * Get a resource from a local MCP server
176
+ */
177
+ async getResource(serviceId, resourceUri) {
178
+ const client = this.clients.get(serviceId);
179
+ if (!client) {
180
+ throw new Error(`No local MCP client found for service ${serviceId}`);
181
+ }
182
+ const processRecord = this.getLocalServer(serviceId);
183
+ if (!processRecord?.isRunning) {
184
+ throw new Error(`Local MCP server ${serviceId} is not running`);
185
+ }
186
+ try {
187
+ console.log(`๐Ÿ“– Getting resource ${resourceUri} from local MCP server ${serviceId}`);
188
+ // Update last activity
189
+ processRecord.lastActivity = new Date();
190
+ // Get the resource
191
+ const result = await client.readResource({
192
+ uri: resourceUri,
193
+ });
194
+ return result;
195
+ }
196
+ catch (error) {
197
+ console.error(`โŒ Failed to get resource ${resourceUri} from local server ${serviceId}:`, error);
198
+ throw error;
199
+ }
200
+ }
201
+ /**
202
+ * Get a prompt from a local MCP server
203
+ */
204
+ async getPrompt(serviceId, promptName, arguments_) {
205
+ const client = this.clients.get(serviceId);
206
+ if (!client) {
207
+ throw new Error(`No local MCP client found for service ${serviceId}`);
208
+ }
209
+ const processRecord = this.getLocalServer(serviceId);
210
+ if (!processRecord?.isRunning) {
211
+ throw new Error(`Local MCP server ${serviceId} is not running`);
212
+ }
213
+ try {
214
+ console.log(`๐Ÿ“ Getting prompt ${promptName} from local MCP server ${serviceId}`);
215
+ // Update last activity
216
+ processRecord.lastActivity = new Date();
217
+ // Get the prompt
218
+ const result = await client.getPrompt({
219
+ name: promptName,
220
+ arguments: arguments_ || {},
221
+ });
222
+ return result;
223
+ }
224
+ catch (error) {
225
+ console.error(`โŒ Failed to get prompt ${promptName} from local server ${serviceId}:`, error);
226
+ throw error;
227
+ }
228
+ }
229
+ /**
230
+ * Get all running local servers
231
+ */
232
+ getAllRunningServers() {
233
+ return Array.from(this.processes.values()).filter(p => p.isRunning);
234
+ }
235
+ /**
236
+ * Cleanup all local servers
237
+ */
238
+ async cleanup() {
239
+ console.log(`๐Ÿงน Cleaning up ${this.processes.size} local MCP server processes`);
240
+ const stopPromises = Array.from(this.processes.values()).map(processRecord => this.stopLocalServer(processRecord.serviceId));
241
+ await Promise.all(stopPromises);
242
+ console.log(`โœ… Cleanup completed`);
243
+ }
244
+ }
245
+ exports.LocalMCPServerManager = LocalMCPServerManager;
246
+ //# sourceMappingURL=local-mcp-server-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-mcp-server-manager.js","sourceRoot":"","sources":["../../src/services/local-mcp-server-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Service, ServiceTool } from '@agent-deck/shared';
2
+ interface MCPResource {
3
+ uri: string;
4
+ mimeType: string;
5
+ name: string;
6
+ description: string;
7
+ }
8
+ export declare class MCPClientManager {
9
+ private clients;
10
+ private localServerManager;
11
+ constructor();
12
+ private getClient;
13
+ discoverTools(service: Service): Promise<ServiceTool[]>;
14
+ callTool(service: Service, toolName: string, arguments_: any): Promise<any>;
15
+ discoverResources(service: Service): Promise<MCPResource[]>;
16
+ getResource(service: Service, resourceUri: string): Promise<any>;
17
+ listPrompts(service: Service): Promise<string[]>;
18
+ getPrompt(service: Service, promptName: string, arguments_?: Record<string, any>): Promise<any>;
19
+ cleanup(): Promise<void>;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=mcp-client-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-manager.d.ts","sourceRoot":"","sources":["../../src/services/mcp-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAY1D,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,kBAAkB,CAAwB;;YAMpC,SAAS;IAkFjB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA8CvD,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB3E,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAuC3D,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAuBhE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBhD,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB/F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAe/B"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MCPClientManager = void 0;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
5
+ const sse_js_1 = require("@modelcontextprotocol/sdk/client/sse.js");
6
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
7
+ const local_mcp_server_manager_1 = require("./local-mcp-server-manager");
8
+ class MCPClientManager {
9
+ clients = new Map();
10
+ localServerManager;
11
+ constructor() {
12
+ this.localServerManager = new local_mcp_server_manager_1.LocalMCPServerManager();
13
+ }
14
+ async getClient(service) {
15
+ const clientKey = service.id;
16
+ // Check if this is a local MCP server
17
+ if (service.type === 'local-mcp') {
18
+ // For local servers, we need to start them and get the client from the local manager
19
+ if (!this.localServerManager.isLocalServerRunning(service.id)) {
20
+ await this.localServerManager.startLocalServer(service);
21
+ }
22
+ const client = this.localServerManager.getClient(service.id);
23
+ if (!client) {
24
+ throw new Error(`Failed to get client for local MCP server ${service.id}`);
25
+ }
26
+ return client;
27
+ }
28
+ if (this.clients.has(clientKey)) {
29
+ return this.clients.get(clientKey);
30
+ }
31
+ const client = new index_js_1.Client({
32
+ name: 'agent-deck-mcp-client',
33
+ version: '1.0.0'
34
+ });
35
+ const baseUrl = new URL(service.url);
36
+ // Prepare headers for MCP communication
37
+ const headers = {
38
+ 'Accept': 'application/json, text/event-stream',
39
+ 'Content-Type': 'application/json'
40
+ };
41
+ // Add OAuth token if available
42
+ if (service.oauthAccessToken) {
43
+ headers['Authorization'] = `Bearer ${service.oauthAccessToken}`;
44
+ }
45
+ // Add custom headers from service configuration
46
+ if (service.headers) {
47
+ try {
48
+ const customHeaders = typeof service.headers === 'string'
49
+ ? JSON.parse(service.headers)
50
+ : service.headers;
51
+ Object.assign(headers, customHeaders);
52
+ console.log(`๐Ÿ”ง Using custom headers for service ${service.id}:`, customHeaders);
53
+ }
54
+ catch (error) {
55
+ console.warn(`โš ๏ธ Failed to parse custom headers for service ${service.id}:`, error);
56
+ }
57
+ }
58
+ try {
59
+ // Try StreamableHTTP transport first (modern approach with headers support)
60
+ console.log(`๐Ÿ”— Attempting StreamableHTTP transport for ${service.url} with headers:`, headers);
61
+ const streamableTransport = new streamableHttp_js_1.StreamableHTTPClientTransport(baseUrl, {
62
+ requestInit: {
63
+ headers
64
+ }
65
+ });
66
+ await client.connect(streamableTransport);
67
+ console.log(`โœ… Connected to MCP service ${service.url} using StreamableHTTP transport`);
68
+ }
69
+ catch (streamableError) {
70
+ console.log(`โš ๏ธ StreamableHTTP failed for ${service.url}, trying SSE transport:`, streamableError);
71
+ try {
72
+ // Fallback to SSE transport (legacy approach)
73
+ const sseTransport = new sse_js_1.SSEClientTransport(baseUrl);
74
+ await client.connect(sseTransport);
75
+ console.log(`โœ… Connected to MCP service ${service.url} using SSE transport`);
76
+ }
77
+ catch (sseError) {
78
+ console.error(`โŒ Both StreamableHTTP and SSE failed for ${service.url}`);
79
+ console.error(`StreamableHTTP error:`, streamableError);
80
+ console.error(`SSE error:`, sseError);
81
+ throw new Error(`Failed to connect to MCP service: ${sseError instanceof Error ? sseError.message : 'Unknown error'}`);
82
+ }
83
+ }
84
+ this.clients.set(clientKey, client);
85
+ return client;
86
+ }
87
+ async discoverTools(service) {
88
+ try {
89
+ console.log(`๐Ÿ” Discovering tools for MCP service: ${service.url}`);
90
+ const client = await this.getClient(service);
91
+ // List available tools using the MCP protocol
92
+ const tools = await client.listTools();
93
+ console.log(`๐Ÿ“‹ Raw tools result from MCP service ${service.url}:`, tools);
94
+ console.log(`๐Ÿ“‹ Tools type:`, typeof tools);
95
+ console.log(`๐Ÿ“‹ Tools is array:`, Array.isArray(tools));
96
+ console.log(`๐Ÿ“‹ Tools structure:`, JSON.stringify(tools, null, 2));
97
+ // Handle different response formats from MCP SDK
98
+ let toolsArray = [];
99
+ if (Array.isArray(tools)) {
100
+ toolsArray = tools;
101
+ }
102
+ else if (tools && typeof tools === 'object' && tools.tools) {
103
+ // MCP SDK might return { tools: [...] }
104
+ toolsArray = Array.isArray(tools.tools) ? tools.tools : [];
105
+ }
106
+ else if (tools && typeof tools === 'object') {
107
+ // Try to extract tools from object structure
108
+ console.log(`๐Ÿ” Attempting to extract tools from object structure`);
109
+ toolsArray = [];
110
+ }
111
+ console.log(`๐Ÿ“‹ Final tools array length:`, toolsArray.length);
112
+ // Convert MCP tools to our ServiceTool format
113
+ const serviceTools = toolsArray.map((tool) => ({
114
+ name: tool.name || tool.title || 'Unknown Tool',
115
+ description: tool.description || '',
116
+ inputSchema: tool.inputSchema || {},
117
+ }));
118
+ console.log(`โœ… Successfully discovered ${serviceTools.length} tools for ${service.url}`);
119
+ return serviceTools;
120
+ }
121
+ catch (error) {
122
+ console.error(`โŒ Failed to discover tools for service ${service.id}:`, error);
123
+ throw error;
124
+ }
125
+ }
126
+ async callTool(service, toolName, arguments_) {
127
+ try {
128
+ console.log(`๐Ÿ”ง Calling tool ${toolName} on MCP service: ${service.url}`);
129
+ // For local servers, use the local manager
130
+ if (service.type === 'local-mcp') {
131
+ return await this.localServerManager.callTool(service.id, toolName, arguments_);
132
+ }
133
+ const client = await this.getClient(service);
134
+ // Call the tool using the MCP protocol
135
+ const result = await client.callTool({
136
+ name: toolName,
137
+ arguments: arguments_ || {},
138
+ });
139
+ console.log(`โœ… Successfully called tool ${toolName} on ${service.url}`);
140
+ return result;
141
+ }
142
+ catch (error) {
143
+ console.error(`โŒ Failed to call tool ${toolName} for service ${service.id}:`, error);
144
+ throw error;
145
+ }
146
+ }
147
+ async discoverResources(service) {
148
+ try {
149
+ console.log(`๐Ÿ” Discovering resources for MCP service: ${service.url}`);
150
+ // For local servers, get capabilities from the local manager
151
+ if (service.type === 'local-mcp') {
152
+ const processRecord = this.localServerManager.getLocalServer(service.id);
153
+ if (processRecord?.capabilities?.resources) {
154
+ return processRecord.capabilities.resources.map((resource) => ({
155
+ uri: resource.uri,
156
+ mimeType: resource.mimeType || 'application/json',
157
+ name: resource.name || resource.uri,
158
+ description: resource.description || '',
159
+ }));
160
+ }
161
+ return [];
162
+ }
163
+ const client = await this.getClient(service);
164
+ // List available resources using the MCP protocol
165
+ const resources = await client.listResources();
166
+ console.log(`๐Ÿ“‹ Found ${resources.length} resources from MCP service ${service.url}`);
167
+ // Convert MCP resources to our format
168
+ const mcpResources = resources.map((resource) => ({
169
+ uri: resource.uri,
170
+ mimeType: resource.mimeType || 'application/json',
171
+ name: resource.name || resource.uri,
172
+ description: resource.description || '',
173
+ }));
174
+ return mcpResources;
175
+ }
176
+ catch (error) {
177
+ console.error(`โŒ Failed to discover resources for service ${service.id}:`, error);
178
+ throw error;
179
+ }
180
+ }
181
+ async getResource(service, resourceUri) {
182
+ try {
183
+ console.log(`๐Ÿ“– Getting resource ${resourceUri} from MCP service: ${service.url}`);
184
+ // For local servers, use the local manager
185
+ if (service.type === 'local-mcp') {
186
+ return await this.localServerManager.getResource(service.id, resourceUri);
187
+ }
188
+ const client = await this.getClient(service);
189
+ // Read the resource using the MCP protocol
190
+ const resource = await client.readResource({
191
+ uri: resourceUri,
192
+ });
193
+ return resource;
194
+ }
195
+ catch (error) {
196
+ console.error(`โŒ Failed to get resource ${resourceUri} for service ${service.id}:`, error);
197
+ throw error;
198
+ }
199
+ }
200
+ async listPrompts(service) {
201
+ try {
202
+ console.log(`๐Ÿ” Listing prompts for MCP service: ${service.url}`);
203
+ // For local servers, get capabilities from the local manager
204
+ if (service.type === 'local-mcp') {
205
+ const processRecord = this.localServerManager.getLocalServer(service.id);
206
+ return processRecord?.capabilities?.prompts || [];
207
+ }
208
+ const client = await this.getClient(service);
209
+ // List available prompts using the MCP protocol
210
+ const prompts = await client.listPrompts();
211
+ console.log(`๐Ÿ“‹ Found ${prompts.length} prompts from MCP service ${service.url}`);
212
+ return prompts.map((prompt) => prompt.name);
213
+ }
214
+ catch (error) {
215
+ console.error(`โŒ Failed to list prompts for service ${service.id}:`, error);
216
+ throw error;
217
+ }
218
+ }
219
+ async getPrompt(service, promptName, arguments_) {
220
+ try {
221
+ console.log(`๐Ÿ“ Getting prompt ${promptName} from MCP service: ${service.url}`);
222
+ // For local servers, use the local manager
223
+ if (service.type === 'local-mcp') {
224
+ return await this.localServerManager.getPrompt(service.id, promptName, arguments_);
225
+ }
226
+ const client = await this.getClient(service);
227
+ // Get the prompt using the MCP protocol
228
+ const prompt = await client.getPrompt({
229
+ name: promptName,
230
+ arguments: arguments_ || {},
231
+ });
232
+ return prompt;
233
+ }
234
+ catch (error) {
235
+ console.error(`โŒ Failed to get prompt ${promptName} for service ${service.id}:`, error);
236
+ throw error;
237
+ }
238
+ }
239
+ // Cleanup method to close connections
240
+ async cleanup() {
241
+ console.log(`๐Ÿงน Cleaning up ${this.clients.size} MCP client connections`);
242
+ for (const [key, client] of this.clients.entries()) {
243
+ try {
244
+ await client.close();
245
+ console.log(`โœ… Closed connection for ${key}`);
246
+ }
247
+ catch (error) {
248
+ console.error(`โŒ Error closing client for ${key}:`, error);
249
+ }
250
+ }
251
+ this.clients.clear();
252
+ // Clean up local servers
253
+ await this.localServerManager.cleanup();
254
+ }
255
+ }
256
+ exports.MCPClientManager = MCPClientManager;
257
+ //# sourceMappingURL=mcp-client-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../src/services/mcp-client-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ interface MCPDiscoveryResult {
2
+ success: boolean;
3
+ transport_type: string;
4
+ url: string;
5
+ tools_count: number;
6
+ tools: any[];
7
+ capabilities: {
8
+ supports_tool_discovery: boolean;
9
+ supports_tool_calling: boolean;
10
+ };
11
+ oauth: {
12
+ required: boolean;
13
+ resourceName?: string;
14
+ issuer?: string;
15
+ authorizationUrl?: string;
16
+ tokenUrl?: string;
17
+ scopesSupported?: string[];
18
+ bearerMethodsSupported?: string[];
19
+ provider?: string;
20
+ error?: string;
21
+ };
22
+ health: string;
23
+ error: string | null;
24
+ }
25
+ export declare class MCPDiscoveryService {
26
+ discoverService(url: string): Promise<MCPDiscoveryResult>;
27
+ private tryBasicDiscovery;
28
+ private detectOAuthRequirements;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=mcp-discovery-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-discovery-service.d.ts","sourceRoot":"","sources":["../../src/services/mcp-discovery-service.ts"],"names":[],"mappings":"AAYA,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,YAAY,EAAE;QACZ,uBAAuB,EAAE,OAAO,CAAC;QACjC,qBAAqB,EAAE,OAAO,CAAC;KAChC,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,OAAO,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,qBAAa,mBAAmB;IACxB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAuCjD,iBAAiB;YA0CjB,uBAAuB;CAwFtC"}