Skip to content

Commit 0cbfd2a

Browse files
committed
[session-resources] session aware now
1 parent 4b3c589 commit 0cbfd2a

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

server/server.go

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -936,9 +936,35 @@ func (s *MCPServer) handleReadResource(
936936
request mcp.ReadResourceRequest,
937937
) (*mcp.ReadResourceResult, *requestError) {
938938
s.resourcesMu.RLock()
939+
940+
// First check session-specific resources
941+
var handler ResourceHandlerFunc
942+
var ok bool
943+
944+
session := ClientSessionFromContext(ctx)
945+
if session != nil {
946+
if sessionWithResources, typeAssertOk := session.(SessionWithResources); typeAssertOk {
947+
if sessionResources := sessionWithResources.GetSessionResources(); sessionResources != nil {
948+
resource, sessionOk := sessionResources[request.Params.URI]
949+
if sessionOk {
950+
handler = resource.Handler
951+
ok = true
952+
}
953+
}
954+
}
955+
}
956+
957+
// If not found in session tools, check global tools
958+
if !ok {
959+
globalResource, rok := s.resources[request.Params.URI]
960+
if rok {
961+
handler = globalResource.handler
962+
ok = true
963+
}
964+
}
965+
939966
// First try direct resource handlers
940-
if entry, ok := s.resources[request.Params.URI]; ok {
941-
handler := entry.handler
967+
if ok {
942968
s.resourcesMu.RUnlock()
943969

944970
finalHandler := handler

0 commit comments

Comments
 (0)