Pass session id's to MCP endpoints. (#466)
* Pass session id's to MCP endpoints. * Update src/ModelContextProtocol/Client/McpClient.cs Co-authored-by: Stephen Halter <halter73@gmail.com> * Update src/ModelContextProtocol.AspNetCore/StreamableHttpHandler.cs Co-authored-by: Stephen Halter <halter73@gmail.com> * Make init callback asynchronous. * Address feedback. --------- Co-authored-by: Stephen Halter <halter73@gmail.com>
This commit is contained in:
parent
fa017c04c3
commit
d7d9eab3f8
1 changed files with 166 additions and 21 deletions
|
|
@ -52,6 +52,15 @@ public abstract class HttpServerIntegrationTests : LoggedTest, IClassFixture<Sse
|
|||
// Assert
|
||||
Assert.NotNull(client.ServerCapabilities);
|
||||
Assert.NotNull(client.ServerInfo);
|
||||
|
||||
if (ClientTransportOptions.Endpoint.AbsolutePath.EndsWith("/sse"))
|
||||
{
|
||||
Assert.Null(client.SessionId);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.NotNull(client.SessionId);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -90,6 +99,35 @@ public abstract class HttpServerIntegrationTests : LoggedTest, IClassFixture<Sse
|
|||
Assert.Equal("Echo: Hello MCP!", textContent.Text);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CallTool_EchoSessionId_ReturnsTheSameSessionId()
|
||||
{
|
||||
// arrange
|
||||
|
||||
// act
|
||||
await using var client = await GetClientAsync();
|
||||
var result1 = await client.CallToolAsync("echoSessionId", cancellationToken: TestContext.Current.CancellationToken);
|
||||
var result2 = await client.CallToolAsync("echoSessionId", cancellationToken: TestContext.Current.CancellationToken);
|
||||
var result3 = await client.CallToolAsync("echoSessionId", cancellationToken: TestContext.Current.CancellationToken);
|
||||
|
||||
// assert
|
||||
Assert.NotNull(result1);
|
||||
Assert.NotNull(result2);
|
||||
Assert.NotNull(result3);
|
||||
|
||||
Assert.False(result1.IsError);
|
||||
Assert.False(result2.IsError);
|
||||
Assert.False(result3.IsError);
|
||||
|
||||
var textContent1 = Assert.Single(result1.Content);
|
||||
var textContent2 = Assert.Single(result2.Content);
|
||||
var textContent3 = Assert.Single(result3.Content);
|
||||
|
||||
Assert.NotNull(textContent1.Text);
|
||||
Assert.Equal(textContent1.Text, textContent2.Text);
|
||||
Assert.Equal(textContent1.Text, textContent3.Text);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ListResources_Sse_TestServer()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue