File tree Expand file tree Collapse file tree 1 file changed +28
-2
lines changed Expand file tree Collapse file tree 1 file changed +28
-2
lines changed Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments