Skip to content

Commit 4b2caf0

Browse files
committed
fix: #16 Add retrieval of _meta field when reading Resource
Signed-off-by: Laurent Broudoux <laurent.broudoux@gmail.com>
1 parent 6914671 commit 4b2caf0

4 files changed

Lines changed: 26 additions & 7 deletions

File tree

dev/github-api-resources.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ resources:
99
description: Display GitHub user information from get_user_with_latest_followers tool
1010
mimeType: text/html;profile=mcp-app
1111
remoteContent: http://localhost:3030/mcp-app.html
12+
_meta:
13+
ui:
14+
csp:
15+
resourceDomains:
16+
- https://avatars.githubusercontent.com
1217
tools:
1318
- get_user_with_latest_followers:
1419
visibility:

proxy/src/main/java/io/reshapr/proxy/mcp/McpController.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,29 @@
1515
*/
1616
package io.reshapr.proxy.mcp;
1717

18-
import com.fasterxml.jackson.core.type.TypeReference;
19-
import com.fasterxml.jackson.databind.ObjectMapper;
20-
21-
import io.reshapr.proxy.mcp.converters.*;
18+
import io.reshapr.proxy.mcp.converters.GraphQLMcpToolConverter;
19+
import io.reshapr.proxy.mcp.converters.GrpcMcpToolConverter;
20+
import io.reshapr.proxy.mcp.converters.McpToolConverter;
21+
import io.reshapr.proxy.mcp.converters.OpenAPIMcpToolConverter;
2222
import io.reshapr.proxy.mcp.converters.ReshaprCustomToolsMcpToolConverter;
2323
import io.reshapr.proxy.mcp.state.ElicitationStore;
2424
import io.reshapr.proxy.context.SessionInfo;
2525
import io.reshapr.proxy.mcp.state.SessionStore;
2626
import io.reshapr.proxy.proxy.GrpcProxyService;
2727
import io.reshapr.proxy.proxy.ProxyService;
28-
import io.reshapr.proxy.registry.*;
2928
import io.reshapr.proxy.context.MethodHandlingInfo;
3029
import io.reshapr.proxy.context.MethodHandlingContext;
30+
import io.reshapr.proxy.registry.ArtifactEntryType;
31+
import io.reshapr.proxy.registry.ConfigurationEntry;
32+
import io.reshapr.proxy.registry.GatewayRegistry;
33+
import io.reshapr.proxy.registry.OperationEntry;
34+
import io.reshapr.proxy.registry.SecretEntry;
35+
import io.reshapr.proxy.registry.ServiceEntry;
3136
import io.reshapr.proxy.security.SecureEndpoint;
3237
import io.reshapr.proxy.util.WebUtils;
3338

39+
import com.fasterxml.jackson.core.type.TypeReference;
40+
import com.fasterxml.jackson.databind.ObjectMapper;
3441
import io.smallrye.common.annotation.RunOnVirtualThread;
3542
import io.vertx.core.http.HttpServerRequest;
3643
import jakarta.annotation.Nullable;

proxy/src/main/java/io/reshapr/proxy/mcp/McpSchema.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,12 @@ public sealed interface ResourceContents permits TextResourceContents, BlobResou
568568
public record TextResourceContents(
569569
@JsonProperty("uri") String uri,
570570
@JsonProperty("mimeType") String mimeType,
571-
@JsonProperty("text") String text) implements ResourceContents {
571+
@JsonProperty("text") String text,
572+
@JsonProperty("_meta") Map<String, Object> meta) implements ResourceContents, Meta {
573+
574+
public TextResourceContents(String uri, String mimeType, String text) {
575+
this(uri, mimeType, text, null);
576+
}
572577
}
573578

574579
@JsonInclude(JsonInclude.Include.NON_ABSENT)

proxy/src/main/java/io/reshapr/proxy/mcp/ReshaprResourcesMcpResourceBuilder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,10 @@ public List<McpSchema.ResourceContents> readResource(McpSchema.ReadResourceReque
221221
BackendResponse fetchResponse = proxyService.callBackend(configuration, URI.create(remoteResourceUrl),
222222
"GET", Collections.emptyMap(), null);
223223

224+
Map<String, Object> meta = resourceNode.has("_meta") ?
225+
YAML_MAPPER.convertValue(resourceNode.get("_meta"), new TypeReference<Map<String, Object>>() {}) : null;
224226
results.add(new McpSchema.TextResourceContents(request.uri(), "text/html;profile=mcp-app",
225-
new String(fetchResponse.content(), StandardCharsets.UTF_8)));
227+
new String(fetchResponse.content(), StandardCharsets.UTF_8), meta));
226228
}
227229
}
228230
}

0 commit comments

Comments
 (0)