From de1e23d1f887ffe1e008cc00ffd05808882db77e Mon Sep 17 00:00:00 2001 From: mforce <3101827+mforce@users.noreply.github.com> Date: Sat, 24 Oct 2026 05:31:55 +0000 Subject: [PATCH] chore(deps): drop the MessagePack pin that Aspire 13.6.3 makes redundant Aspire.Hosting 13.6.3 and its JavaScript, PostgreSQL, Redis, AppHost and Testing packages each require MessagePack 2.5.307 or later, so both AppHost locks still resolve 2.5.307 without the pin. Remove the central version, the AppHost reference and their comments, and regenerate the two AppHost locks. Update the MCP comments to the versions the API now resolves (SDK 2.3.0, Microsoft.Extensions.AI 10.11.0). The behaviour each comment cites is unchanged at those versions. Describe the verify probe, still on 2.2.0, as an older-client check. --- Directory.Packages.props | 4 ---- src/Cluckwork.Api/Hosting/McpToolErrors.cs | 4 ++-- src/Cluckwork.Api/Program.cs | 2 +- .../Cluckwork.AppHost.csproj | 2 -- src/Cluckwork.AppHost/packages.lock.json | 19 ++++++++-------- .../packages.lock.json | 22 +++++++++---------- tools/verify/mcp/README.md | 2 +- 7 files changed, 23 insertions(+), 32 deletions(-) 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