diff --git a/Directory.Packages.props b/Directory.Packages.props index 238ecfb13..bad6e5702 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -20,10 +20,6 @@ - - diff --git a/src/Cluckwork.Api/Hosting/McpToolErrors.cs b/src/Cluckwork.Api/Hosting/McpToolErrors.cs index 84783051f..c9a5603eb 100644 --- a/src/Cluckwork.Api/Hosting/McpToolErrors.cs +++ b/src/Cluckwork.Api/Hosting/McpToolErrors.cs @@ -9,7 +9,7 @@ namespace Cluckwork.Api.Hosting; -// #1227 — the SDK (2.2.0, McpServerImpl) logs every exception a tool call throws at Error +// #1227 — the SDK (2.3.0, McpServerImpl) logs every exception a tool call throws at Error // with its stack trace, and passes the model only an McpException's message. Two failures // are normal, and this filter answers both with the error result the SDK would write, so // neither reaches the Error log. An argument that does not bind is found before the tool @@ -51,7 +51,7 @@ private static CallToolResult Refuse(RequestContext conte private sealed record Refusal(string Message, string Argument); - // AIFunctionFactory's binding (Microsoft.Extensions.AI 10.8.3): a parameter the input + // AIFunctionFactory's binding (Microsoft.Extensions.AI 10.11.0): a parameter the input // schema lists is read from the argument of that name with the tool's serializer, and // a missing one takes its default or fails. The SDK puts the method first in Metadata. private static Refusal? BadArgument(McpServerTool tool, IDictionary? arguments) diff --git a/src/Cluckwork.Api/Program.cs b/src/Cluckwork.Api/Program.cs index abfb453ae..427ee1e44 100644 --- a/src/Cluckwork.Api/Program.cs +++ b/src/Cluckwork.Api/Program.cs @@ -252,7 +252,7 @@ : exception is OperationCanceledException canceled && httpContext.RequestAborted.IsCancellationRequested && (canceled.CancellationToken == httpContext.RequestAborted - // MCP SDK 2.2.0 links RequestAborted with its transport-disposed + // MCP SDK 2.3.0 links RequestAborted with its transport-disposed // token (StreamableHttpServerTransport.cs:243), and a linked // token cannot be traced back to its source. || CluckworkMcp.IsPath(httpContext.Request.Path)) diff --git a/src/Cluckwork.AppHost/Cluckwork.AppHost.csproj b/src/Cluckwork.AppHost/Cluckwork.AppHost.csproj index 417c093b1..83ce411fc 100644 --- a/src/Cluckwork.AppHost/Cluckwork.AppHost.csproj +++ b/src/Cluckwork.AppHost/Cluckwork.AppHost.csproj @@ -14,8 +14,6 @@ - - diff --git a/src/Cluckwork.AppHost/packages.lock.json b/src/Cluckwork.AppHost/packages.lock.json index bd6826801..b26b06041 100644 --- a/src/Cluckwork.AppHost/packages.lock.json +++ b/src/Cluckwork.AppHost/packages.lock.json @@ -173,16 +173,6 @@ "YamlDotNet": "18.1.0" } }, - "MessagePack": { - "type": "Direct", - "requested": "[2.5.307, )", - "resolved": "2.5.307", - "contentHash": "P9LNJ2bz/wx8J5W0EQW4Bh7G5BiEikXiiDqGvw/WOMRyRI0QcxVvRM4XkqhidGJG6uzMT7iF89o0uYGLwmGifQ==", - "dependencies": { - "MessagePack.Annotations": "2.5.307", - "Microsoft.NET.StringTools": "17.6.3" - } - }, "Aspire.Hosting": { "type": "Transitive", "resolved": "13.6.3", @@ -360,6 +350,15 @@ "YamlDotNet": "16.3.0" } }, + "MessagePack": { + "type": "Transitive", + "resolved": "2.5.307", + "contentHash": "P9LNJ2bz/wx8J5W0EQW4Bh7G5BiEikXiiDqGvw/WOMRyRI0QcxVvRM4XkqhidGJG6uzMT7iF89o0uYGLwmGifQ==", + "dependencies": { + "MessagePack.Annotations": "2.5.307", + "Microsoft.NET.StringTools": "17.6.3" + } + }, "MessagePack.Annotations": { "type": "Transitive", "resolved": "2.5.307", diff --git a/tests/Cluckwork.AppHost.Tests/packages.lock.json b/tests/Cluckwork.AppHost.Tests/packages.lock.json index 899299cd6..c20166edd 100644 --- a/tests/Cluckwork.AppHost.Tests/packages.lock.json +++ b/tests/Cluckwork.AppHost.Tests/packages.lock.json @@ -276,6 +276,15 @@ "YamlDotNet": "16.3.0" } }, + "MessagePack": { + "type": "Transitive", + "resolved": "2.5.307", + "contentHash": "P9LNJ2bz/wx8J5W0EQW4Bh7G5BiEikXiiDqGvw/WOMRyRI0QcxVvRM4XkqhidGJG6uzMT7iF89o0uYGLwmGifQ==", + "dependencies": { + "MessagePack.Annotations": "2.5.307", + "Microsoft.NET.StringTools": "17.6.3" + } + }, "MessagePack.Annotations": { "type": "Transitive", "resolved": "2.5.307", @@ -945,8 +954,7 @@ "Aspire.Hosting.JavaScript": "[13.6.3, )", "Aspire.Hosting.Orchestration.linux-x64": "[13.5.0, )", "Aspire.Hosting.PostgreSQL": "[13.6.3, )", - "Aspire.Hosting.Redis": "[13.6.3, )", - "MessagePack": "[2.5.307, )" + "Aspire.Hosting.Redis": "[13.6.3, )" } }, "Aspire.Hosting.JavaScript": { @@ -1075,16 +1083,6 @@ "resolved": "3.36.1", "contentHash": "77AqPEoaY1ODE+syYBHti0jXiwQq0J/fUr/fRyYhNlc9oKtH5dZZEr/OLKtdKNVG83PRnCYB2r8B80ZrObzOGQ==" }, - "MessagePack": { - "type": "CentralTransitive", - "requested": "[2.5.307, )", - "resolved": "2.5.307", - "contentHash": "P9LNJ2bz/wx8J5W0EQW4Bh7G5BiEikXiiDqGvw/WOMRyRI0QcxVvRM4XkqhidGJG6uzMT7iF89o0uYGLwmGifQ==", - "dependencies": { - "MessagePack.Annotations": "2.5.307", - "Microsoft.NET.StringTools": "17.6.3" - } - }, "Microsoft.Extensions.Logging.Abstractions": { "type": "CentralTransitive", "requested": "[10.*, )", diff --git a/tools/verify/mcp/README.md b/tools/verify/mcp/README.md index 12af8b975..f3b7cd7f1 100644 --- a/tools/verify/mcp/README.md +++ b/tools/verify/mcp/README.md @@ -7,7 +7,7 @@ what each proves are in [`../features/mcp.md`](../features/mcp.md). | --- | --- | | `tls-proxy.mjs` | Terminates TLS for the http sim stack, keeps `Host`, sets `X-Forwarded-Proto`. | | `client.ts` | The official TypeScript MCP SDK client. `connect` runs discovery, dynamic registration, PKCE and `resource`, and drives the consent screen with Playwright; `tools`, `call` and `disconnect` use a saved token. Speaks MCP 2025-11-25. | -| `probe.cs` | The C# `ModelContextProtocol` 2.2.0 client (the server's SDK), as a file-based app, for MCP 2026-07-28. | +| `probe.cs` | The C# `ModelContextProtocol` 2.2.0 client, as a file-based app, for MCP 2026-07-28. It is older than the server's SDK, so it checks that an older client still works. | ```sh npm ci # Node 22.18+ runs client.ts directly