Skip to content

Commit 26c6137

Browse files
committed
fix: refactor resource handler to use the cache smartly during function handler code
Signed-off-by: Liran Tal <liran.tal@gmail.com>
1 parent 69cf036 commit 26c6137

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

src/resources/index.ts

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { Server } from '@modelcontextprotocol/sdk/server/index.js'
22
import {
33
ListResourcesRequestSchema,
4-
ReadResourceRequestSchema,
4+
ReadResourceRequestSchema
55
} from '@modelcontextprotocol/sdk/types.js'
66
import { initLogger, type Logger } from '../utils/logger.ts'
77
import { CacheService } from '../services/cache-service.ts'
@@ -10,21 +10,9 @@ import type { ReadResourceRequest } from '@modelcontextprotocol/sdk/types.js'
1010
const logger: Logger = initLogger()
1111
const cacheService = new CacheService()
1212

13-
export async function initializeResources (server: Server): Promise<void> {
13+
export async function initializeResources(server: Server): Promise<void> {
1414
logger.info({ msg: 'Initializing resources...' })
1515

16-
const resourceNodejsReleasesChartURL =
17-
'https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true'
18-
19-
// Use cache service to fetch the SVG with 7-day expiration
20-
const resourceNodejsReleasesChartSVGText = await cacheService.fetchHttpWithCache(
21-
resourceNodejsReleasesChartURL,
22-
{
23-
responseType: 'text',
24-
ttlDays: 7
25-
}
26-
)
27-
2816
const resources = [
2917
{
3018
uri: 'nodejs://releases-schedule-chart.svg',
@@ -34,16 +22,28 @@ export async function initializeResources (server: Server): Promise<void> {
3422
handler: async (request: ReadResourceRequest) => {
3523
logger.info({ msg: 'Resource URI Access:', uri: request.params.uri })
3624

25+
const resourceNodejsReleasesChartURL =
26+
'https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true'
27+
28+
// Fetch SVG data with cache on each request
29+
const resourceNodejsReleasesChartSVGText = await cacheService.fetchHttpWithCache(
30+
resourceNodejsReleasesChartURL,
31+
{
32+
responseType: 'text',
33+
ttlDays: 7
34+
}
35+
)
36+
3737
return {
3838
contents: [
3939
{
4040
uri: request.params.uri,
41-
text: resourceNodejsReleasesChartSVGText,
42-
},
43-
],
41+
text: resourceNodejsReleasesChartSVGText
42+
}
43+
]
4444
}
45-
},
46-
},
45+
}
46+
}
4747
]
4848

4949
server.setRequestHandler(ListResourcesRequestSchema, async () => {
@@ -52,12 +52,12 @@ export async function initializeResources (server: Server): Promise<void> {
5252
uri: resource.uri,
5353
name: resource.name,
5454
description: resource.description,
55-
mimeType: resource.mimeType || 'text/plain',
55+
mimeType: resource.mimeType || 'text/plain'
5656
}
5757
})
5858

5959
return {
60-
resources: resourcesList,
60+
resources: resourcesList
6161
}
6262
})
6363

0 commit comments

Comments
 (0)