@@ -16,6 +16,7 @@ import type {
16
16
SecretDetectionOptions ,
17
17
WorkspaceFile ,
18
18
} from "./types.js" ;
19
+ import type { McpClientManager } from "./mcpclient.js" ;
19
20
20
21
export interface ResourceContent {
21
22
uri : string ; // The URI of the resource
@@ -37,8 +38,39 @@ export interface Resource {
37
38
38
39
export class ResourceManager extends EventTarget {
39
40
private _resources : Record < string , Resource > = { } ;
41
+ private _mcpClientManager ?: McpClientManager ; // Will be set after construction
42
+
43
+ setMcpClientManager ( mcpClientManager : McpClientManager ) {
44
+ this . _mcpClientManager = mcpClientManager ;
45
+ }
46
+
40
47
async resources ( ) : Promise < ResourceReference [ ] > {
41
- return Object . values ( this . _resources ) . map ( ( r ) => r . reference ) ;
48
+ const localResources = Object . values ( this . _resources ) . map ( ( r ) => r . reference ) ;
49
+
50
+ // Also get resources from all connected MCP servers
51
+ const mcpResources : ResourceReference [ ] = [ ] ;
52
+ if ( this . _mcpClientManager ) {
53
+ try {
54
+ const clients = this . _mcpClientManager . clients || [ ] ;
55
+ for ( const client of clients ) {
56
+ try {
57
+ const serverResources = await client . listResources ( ) ;
58
+ mcpResources . push ( ...serverResources . map ( ( r : any ) => ( {
59
+ name : r . name ,
60
+ description : r . description ,
61
+ uri : r . uri ,
62
+ mimeType : r . mimeType ,
63
+ } satisfies ResourceReference ) ) ) ;
64
+ } catch ( error ) {
65
+ dbg ( `error listing resources from MCP server ${ client . config ?. id } : ${ error instanceof Error ? error . message : String ( error ) } ` ) ;
66
+ }
67
+ }
68
+ } catch ( error ) {
69
+ dbg ( `error accessing MCP clients: ${ error instanceof Error ? error . message : String ( error ) } ` ) ;
70
+ }
71
+ }
72
+
73
+ return [ ...localResources , ...mcpResources ] ;
42
74
}
43
75
async readResource ( uri : string ) : Promise < ResourceContents | undefined > {
44
76
dbg ( `reading resource: ${ uri } ` ) ;
0 commit comments