Wrap each request in a service scope (#276)

* Wrap each request in a service scope

* Change request/notification delegates to return ValueTask

* Address feedback
This commit is contained in:
Stephen Toub 2025-04-11 19:19:12 -04:00 • committed by GitHub
commit f4c87f5e2f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -13,19 +13,19 @@ public class McpServerResourceTests
services.AddMcpServer()
.WithStdioServerTransport()
.WithListResourceTemplatesHandler((ctx, ct) =>
.WithListResourceTemplatesHandler(async (ctx, ct) =>
{
return Task.FromResult(new ListResourceTemplatesResult
return new ListResourceTemplatesResult
{
ResourceTemplates =
[
new ResourceTemplate { Name = "Static Resource", Description = "A static resource with a numeric ID", UriTemplate = "test://static/resource/{id}" }
]
});
};
})
.WithReadResourceHandler((ctx, ct) =>
.WithReadResourceHandler(async (ctx, ct) =>
{
return Task.FromResult(new ReadResourceResult
return new ReadResourceResult
{
Contents = [new TextResourceContents
{
@ -33,7 +33,7 @@ public class McpServerResourceTests
Text = "Static Resource",
MimeType = "text/plain",
}]
});
};
});
var provider = services.BuildServiceProvider();
@ -48,19 +48,19 @@ public class McpServerResourceTests
services.AddMcpServer()
.WithStdioServerTransport()
.WithListResourcesHandler((ctx, ct) =>
.WithListResourcesHandler(async (ctx, ct) =>
{
return Task.FromResult(new ListResourcesResult
return new ListResourcesResult
{
Resources =
[
new Resource { Name = "Static Resource", Description = "A static resource with a numeric ID", Uri = "test://static/resource/foo.txt" }
]
});
};
})
.WithReadResourceHandler((ctx, ct) =>
.WithReadResourceHandler(async (ctx, ct) =>
{
return Task.FromResult(new ReadResourceResult
return new ReadResourceResult
{
Contents = [new TextResourceContents
{
@ -68,7 +68,7 @@ public class McpServerResourceTests
Text = "Static Resource",
MimeType = "text/plain",
}]
});
};
});
var provider = services.BuildServiceProvider();
@ -82,9 +82,9 @@ public class McpServerResourceTests
var services = new ServiceCollection();
services.AddMcpServer()
.WithStdioServerTransport()
.WithReadResourceHandler((ctx, ct) =>
.WithReadResourceHandler(async (ctx, ct) =>
{
return Task.FromResult(new ReadResourceResult
return new ReadResourceResult
{
Contents = [new TextResourceContents
{
@ -92,7 +92,7 @@ public class McpServerResourceTests
Text = "Static Resource",
MimeType = "text/plain",
}]
});
};
});
var sp = services.BuildServiceProvider();
Assert.Throws<McpException>(() => sp.GetRequiredService<IMcpServer>());