v1.0.0-rc.1
Pre-releaseThis release candidate completes a full API surface area audit ahead of the 1.0.0 stable release, with more changes to public APIs to ensure consistency and long-term maintainability. Protocol DTO types are updated to match the MCP specification, deprecated filter APIs are removed, and bug fixes improve transport reliability and JSON handling.
Breaking Changes
Refer to the C# SDK Versioning documentation for details on versioning and breaking change policies.
-
Address asymmetry in McpServerHandlers/McpClientHandlers and make all filter properties settable #1337
- Seals
McpClientHandlersto match the already-sealedMcpServerHandlers - Makes
McpServerOptions.Handlers,McpServerOptions.Filters, and allIList<T>filter properties settable with null validation
- Seals
-
Remove server back-references from protocol DTO types #1345
- Removes
Tool.McpServerTool,Prompt.McpServerPrompt,Resource.McpServerResource, andResourceTemplate.McpServerResourceproperties - Use
McpServerPrimitiveCollection.TryGetPrimitive()for name-based lookups instead
- Removes
-
Make Tool.Name required to match other protocol types #1351
- Adds
requiredmodifier toTool.Name, matchingPrompt.Name,Resource.Name, and otherIBaseMetadataimplementations - Callers must now specify
Namein object initializers
- Adds
-
Make LoggingMessageNotificationParams.Data required per MCP spec #1353
- Changes
LoggingMessageNotificationParams.DatafromJsonElement?torequired JsonElementper the MCP specification
- Changes
-
Fix CreateMessageRequestParams.Metadata type to JsonObject #1354
- Changes
CreateMessageRequestParams.MetadatafromJsonElement?toJsonObject?to match all other_meta/Metaproperties in the SDK
- Changes
-
Normalize CallToolResult.StructuredContent to JsonElement? #1357
- Changes
CallToolResult.StructuredContentfromJsonNode?toJsonElement?for consistency with the rest of the SDK - Use
JsonSerializer.SerializeToElement()to produce aJsonElement
- Changes
-
Unify service configuration for
ISseEventStreamStore,IMcpTaskStore, andISessionMigrationHandler#1362- Consistent options + DI pattern: explicit options property > DI resolution
-
Add explicit [Experimental] protected constructors to McpClient and McpServer #1363
- Protected constructors on
McpClientandMcpServernow require suppressingMCPEXP002to subclass
- Protected constructors on
-
Remove MCP9002 obsolete APIs and document obsolete diagnostics #1366
- Removes the 13
AddXxxFilterextension methods onIMcpServerBuilder(e.g.AddCallToolFilter,AddListToolsFilter) that were deprecated under diagnosticMCP9002 - Use
WithRequestFilters()andWithMessageFilters()instead
- Removes the 13
-
Fix McpClientPrompt/Resource types to use RequestOptions like McpClientTool does #1370
- Replaces
JsonSerializerOptionswithRequestOptionsparameter for consistency acrossMcpClientPrompt,McpClientResource, andMcpClientTool
- Replaces
What's Changed
- Make Tool.Name required to match other protocol types #1351 by @stephentoub (co-authored by @Copilot)
- Make LoggingMessageNotificationParams.Data required per MCP spec #1353 by @stephentoub (co-authored by @Copilot)
- Fix off-by-one error in reconnection attempts #1356 by @stephentoub (co-authored by @Copilot)
- Remove server back-references from protocol DTO types #1345 by @stephentoub (co-authored by @Copilot)
- Fix base64 deserialization when JSON encoder escapes forward slashes #1342 by @stephentoub (co-authored by @Copilot)
- Increase MaxReconnectionAttempts default from 2 to 5 #1355 by @stephentoub (co-authored by @Copilot)
- Prevent cancellation of initialize request per MCP spec #1350 by @stephentoub (co-authored by @Copilot)
- Address asymmetry in McpServerHandlers/McpClientHandlers and make all filter properties settable #1337 by @stephentoub (co-authored by @Copilot)
- Normalize CallToolResult.StructuredContent to JsonElement? #1357 by @stephentoub (co-authored by @Copilot)
- Fix CreateMessageRequestParams.Metadata type to JsonObject #1354 by @stephentoub (co-authored by @Copilot)
- Remove MCP9002 obsolete APIs and document obsolete diagnostics #1366 by @jeffhandley (co-authored by @Copilot)
- Add explicit [Experimental] protected constructors to McpClient and McpServer #1363 by @stephentoub (co-authored by @Copilot @jeffhandley)
- Fix McpClientPrompt/Resource types to use RequestOptions like McpClientTool does #1370 by @stephentoub (co-authored by @Copilot)
- Unify service configuration for
ISseEventStreamStore,IMcpTaskStore, andISessionMigrationHandler#1362 by @MackinnonBuck
Documentation Updates
- Fix malformed XML doc on
McpServerPrimitiveCollection.Contains#1348 by @stephentoub (co-authored by @Copilot) - Clarify null semantics in ToolAnnotations hint property docs #1346 by @stephentoub (co-authored by @Copilot)
- Fix compilation errors in README code samples #1369 by @jeffhandley
- Fix XML documentation spelling, grammar, and correctness issues across SDK #1372 by @stephentoub (co-authored by @Copilot)
- Add Roadmap document and navigation link #1373 by @jeffhandley
Test Improvements
- Add CloneResourceMetadataClonesAllProperties test using public reflection #1343 by @stephentoub (co-authored by @Copilot)
Repository Infrastructure Updates
- Bump version to 1.0.0-rc.1 #1376 by @jeffhandley
- Add README code sample validation step to release-notes skill #1371 by @jeffhandley
- Bump the other-testing group with 1 update #1358
- Bump Anthropic from 12.5.0 to 12.8.0 #1359
Acknowledgements
- @monikbhatt submitted issue #1340 (resolved by #1342)
- @gabaoalb submitted issue #1331 (resolved by #1337)
- @halter73 @MackinnonBuck @ericstj reviewed pull requests
Full Changelog: v0.9.0-preview.2...v1.0.0-rc.1