Add static resources to EverythingServer sample (#361)
* Add static resources * Apply suggestions from PR review --------- Co-authored-by: Stephen Halter <halter73@gmail.com>
This commit is contained in:
parent
86dd11a199
commit
2eeb61f4fa
2 changed files with 27 additions and 4 deletions
|
|
@ -38,13 +38,23 @@ builder.Services
|
|||
.WithTools<TinyImageTool>()
|
||||
.WithPrompts<ComplexPromptType>()
|
||||
.WithPrompts<SimplePromptType>()
|
||||
.WithListResourcesHandler(async (ctx, ct) =>
|
||||
{
|
||||
return new ListResourcesResult
|
||||
{
|
||||
Resources =
|
||||
[
|
||||
new ModelContextProtocol.Protocol.Types.Resource { Name = "Direct Text Resource", Description = "A direct text resource", MimeType = "text/plain", Uri = "test://direct/text/resource" },
|
||||
]
|
||||
};
|
||||
})
|
||||
.WithListResourceTemplatesHandler(async (ctx, ct) =>
|
||||
{
|
||||
return new ListResourceTemplatesResult
|
||||
{
|
||||
ResourceTemplates =
|
||||
[
|
||||
new ResourceTemplate { Name = "Static Resource", Description = "A static resource with a numeric ID", UriTemplate = "test://static/resource/{id}" }
|
||||
new ResourceTemplate { Name = "Template Resource", Description = "A template resource with a numeric ID", UriTemplate = "test://template/resource/{id}" }
|
||||
]
|
||||
};
|
||||
})
|
||||
|
|
@ -52,12 +62,25 @@ builder.Services
|
|||
{
|
||||
var uri = ctx.Params?.Uri;
|
||||
|
||||
if (uri is null || !uri.StartsWith("test://static/resource/"))
|
||||
if (uri == "test://direct/text/resource")
|
||||
{
|
||||
return new ReadResourceResult
|
||||
{
|
||||
Contents = [new TextResourceContents
|
||||
{
|
||||
Text = "This is a direct resource",
|
||||
MimeType = "text/plain",
|
||||
Uri = uri,
|
||||
}]
|
||||
};
|
||||
}
|
||||
|
||||
if (uri is null || !uri.StartsWith("test://template/resource/"))
|
||||
{
|
||||
throw new NotSupportedException($"Unknown resource: {uri}");
|
||||
}
|
||||
|
||||
int index = int.Parse(uri["test://static/resource/".Length..]) - 1;
|
||||
int index = int.Parse(uri["test://template/resource/".Length..]) - 1;
|
||||
|
||||
if (index < 0 || index >= ResourceGenerator.Resources.Count)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ static class ResourceGenerator
|
|||
{
|
||||
private static readonly List<Resource> _resources = Enumerable.Range(1, 100).Select(i =>
|
||||
{
|
||||
var uri = $"test://static/resource/{i}";
|
||||
var uri = $"test://template/resource/{i}";
|
||||
if (i % 2 != 0)
|
||||
{
|
||||
return new Resource
|
||||
|
|
|
|||
Loading…
Reference in a new issue