@@ -16,6 +16,7 @@ import type {
1616 SecretDetectionOptions ,
1717 WorkspaceFile ,
1818} from "./types.js" ;
19+ import type { McpClientManager } from "./mcpclient.js" ;
1920
2021export interface ResourceContent {
2122 uri : string ; // The URI of the resource
@@ -37,8 +38,39 @@ export interface Resource {
3738
3839export class ResourceManager extends EventTarget {
3940 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+
4047 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 ] ;
4274 }
4375 async readResource ( uri : string ) : Promise < ResourceContents | undefined > {
4476 dbg ( `reading resource: ${ uri } ` ) ;
0 commit comments