@@ -6,25 +6,28 @@ import {
66} from "@modelcontextprotocol/sdk/server/mcp.js" ;
77import { Server } from "../../server.js" ;
88import { LogId } from "../../common/logger.js" ;
9+ import { Session } from "../../common/session.js" ;
910
1011export class ExportedData {
1112 private readonly name = "exported-data" ;
1213 private readonly description = "Data files exported in the current session." ;
1314 private readonly uri = "exported-data://{exportName}" ;
15+ private server ?: Server ;
1416
15- constructor ( private readonly server : Server ) {
16- this . server . session . exportsManager . on ( "export-available" , ( uri ) => {
17- this . server . mcpServer . sendResourceListChanged ( ) ;
18- void this . server . mcpServer . server . sendResourceUpdated ( {
17+ constructor ( private readonly session : Session ) {
18+ this . session . exportsManager . on ( "export-available" , ( uri ) => {
19+ this . server ? .mcpServer . sendResourceListChanged ( ) ;
20+ void this . server ? .mcpServer . server . sendResourceUpdated ( {
1921 uri,
2022 } ) ;
2123 } ) ;
22- this . server . session . exportsManager . on ( "export-expired" , ( ) => {
23- this . server . mcpServer . sendResourceListChanged ( ) ;
24+ this . session . exportsManager . on ( "export-expired" , ( ) => {
25+ this . server ? .mcpServer . sendResourceListChanged ( ) ;
2426 } ) ;
2527 }
2628
27- public register ( ) : void {
29+ public register ( server : Server ) : void {
30+ this . server = server ;
2831 this . server . mcpServer . registerResource (
2932 this . name ,
3033 new ResourceTemplate ( this . uri , {
@@ -48,15 +51,15 @@ export class ExportedData {
4851 private listResourcesCallback : ListResourcesCallback = ( ) => {
4952 try {
5053 return {
51- resources : this . server . session . exportsManager . availableExports . map ( ( { exportName, exportURI } ) => ( {
54+ resources : this . session . exportsManager . availableExports . map ( ( { exportName, exportURI } ) => ( {
5255 name : exportName ,
5356 description : this . exportNameToDescription ( exportName ) ,
5457 uri : exportURI ,
5558 mimeType : "application/json" ,
5659 } ) ) ,
5760 } ;
5861 } catch ( error ) {
59- this . server . session . logger . error ( {
62+ this . session . logger . error ( {
6063 id : LogId . exportedDataListError ,
6164 context : "Error when listing exported data resources" ,
6265 message : error instanceof Error ? error . message : String ( error ) ,
@@ -69,11 +72,11 @@ export class ExportedData {
6972
7073 private autoCompleteExportName : CompleteResourceTemplateCallback = ( value ) => {
7174 try {
72- return this . server . session . exportsManager . availableExports
75+ return this . session . exportsManager . availableExports
7376 . filter ( ( { exportName } ) => exportName . startsWith ( value ) )
7477 . map ( ( { exportName } ) => exportName ) ;
7578 } catch ( error ) {
76- this . server . session . logger . error ( {
79+ this . session . logger . error ( {
7780 id : LogId . exportedDataAutoCompleteError ,
7881 context : "Error when autocompleting exported data" ,
7982 message : error instanceof Error ? error . message : String ( error ) ,
@@ -88,7 +91,7 @@ export class ExportedData {
8891 throw new Error ( "Cannot retrieve exported data, exportName not provided." ) ;
8992 }
9093
91- const content = await this . server . session . exportsManager . readExport ( exportName ) ;
94+ const content = await this . session . exportsManager . readExport ( exportName ) ;
9295
9396 return {
9497 contents : [
@@ -112,7 +115,7 @@ export class ExportedData {
112115 }
113116 } ;
114117
115- private exportNameToDescription ( exportName : string ) {
118+ private exportNameToDescription ( exportName : string ) : string {
116119 const match = exportName . match ( / ^ ( .+ ) \. ( \d + ) \. j s o n $ / ) ;
117120 if ( ! match ) return "Exported data for an unknown namespace." ;
118121
0 commit comments