Refine 2.0.0 concept documentation - #1742
#1742Merged
jeffhandley merged 10 commits intoJul 28, 2026
mainmodelcontextprotocol/csharp-sdk:mainfrom
jeffhandley/refine-2-0-docsmodelcontextprotocol/csharp-sdk:jeffhandley/refine-2-0-docsCopy head branch name to clipboard
Merged
Refine 2.0.0 concept documentation#1742jeffhandley merged 10 commits intomainmodelcontextprotocol/csharp-sdk:mainfrom jeffhandley/refine-2-0-docsmodelcontextprotocol/csharp-sdk:jeffhandley/refine-2-0-docsCopy head branch name to clipboard
jeffhandley merged 10 commits into
mainmodelcontextprotocol/csharp-sdk:mainfrom
jeffhandley/refine-2-0-docsmodelcontextprotocol/csharp-sdk:jeffhandley/refine-2-0-docsCopy head branch name to clipboard
Conversation
- tasks.md: restore the intended information architecture by moving the "Compatibility with v1 experimental Tasks" section under "Architecture notes". - capabilities.md: correct the client variable reference (mcpClient -> client). - index.md: list "Stateless and Stateful" under Base protocol to match toc.yml. - getting-started.md, transports.md: standardize link text on "Stateless and Stateful" (the concept page's name) rather than "Sessions". - sampling.md, roots.md, logging.md: add deprecation notices for the Roots/Sampling/Logging utilities (SEP-2577); for sampling and roots, point to the stateless-compatible Multi round-trip requests (MRTR) alternative. - list-of-diagnostics.md: link SEP-2577 from the MCP9005 row. - logging.md: correct the Trace-level note. Trace maps to the MCP `debug` level when sent to the client; it is not silently dropped (McpServerImpl.ToLoggingLevel: LogLevel.Trace => LoggingLevel.Debug). - Normalize stray trailing spaces in two docs-sample snippet markers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 782b5bad-4046-49ec-93a6-72768b5b7521
…verTransport The sample registered the in-memory pipe transport by adding an ITransport singleton directly, which does not register the McpServer factory in DI. As a result, serviceProvider.GetRequiredService<McpServer>() threw "No service for type 'ModelContextProtocol.Server.McpServer' has been registered." at startup (regression from the Tasks extraction, #1693). Register the transport through .WithStreamServerTransport(...) on the builder, which calls AddSingleSessionServerDependencies and registers the McpServer factory. The sample now runs the task poll loop to completion. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b938335-418c-4ee7-8287-6c70d9148b89
The README described a pre-#1693 two-path client (CallToolAsync auto-poll + CallToolRawAsync manual poll) that no longer exists. Program.cs demonstrates a single CallToolAsTaskAsync manual-poll path. Update the prose and the expected output block to match the current sample. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b938335-418c-4ee7-8287-6c70d9148b89
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
tarekgh
reviewed
Jul 27, 2026
Address PR review feedback: the MCP9004 row linked [Stateless — Legacy SSE transport], but this PR standardizes the link text on "Stateless and Stateful" (the concept page's name) elsewhere. Rename to match. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 782b5bad-4046-49ec-93a6-72768b5b7521
PranavSenthilnathan
previously approved these changes
Jul 27, 2026
halter73
previously approved these changes
Jul 28, 2026
Replace the DeleteFile down-level confirmation example with a CloseSupportTicket example that matches the sample used in the accompanying blog post. The API surface is unchanged (InputRequiredException + InputRequest.ForElicitation, branching on the elicitation action via ElicitResult.IsAccepted); only the illustrative domain changes to a non-destructive action. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 782b5bad-4046-49ec-93a6-72768b5b7521
Address PR review feedback: the note singled out MCPEXP001, but the sample's Program.cs now suppresses MCPEXP001, MCPEXP002, and MCPEXP004, and the suppression mechanism is already self-documented by the project's <NoWarn> and the pragma. Drop the redundant note; keep the durable IMcpTaskStore guidance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 782b5bad-4046-49ec-93a6-72768b5b7521
Evolve the down-level fallback sample from a boolean confirmation to a
required closeReason string. The server proposes a default reason
("completed") in the elicitation schema and branches on the elicitation
action via ElicitResult.IsAccepted, so a decline or cancel leaves the
ticket open. Behavior validated across the full matrix: native MRTR over
stateless HTTP, the legacy elicitation bridge over stateful HTTP, and the
stateless down-level guidance path.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 782b5bad-4046-49ec-93a6-72768b5b7521
jeffhandley
dismissed stale reviews from halter73 and PranavSenthilnathan
via
July 28, 2026 02:28
52ab6aa
Add API Reference and Experimental APIs to the conceptual left-nav (after Extensions), remove Experimental APIs from the top-nav, and add a See also section to the Versioning page linking Experimental APIs and List of diagnostics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 782b5bad-4046-49ec-93a6-72768b5b7521
tarekgh
approved these changes
Jul 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Documentation refinements for the 2.0.0 release: concept-doc corrections, a new Supporting down-level clients section for MRTR, navigation adjustments, and two corrections to the
TasksExtensionsample. Also incorporates review feedback from the PR discussion.This is the first of two planned docs changes. A follow-up will introduce a compile-gated snippets project that transcludes all documentation code samples; it is parked separately so it can land cleanly on top of this once merged.
Concept documentation
#### Compatibility with v1 experimental Tasks, after Capability bypass inside a task scope and before Known limitations).mcpClient→client).toc.yml.LogLevel.Tracemaps to the MCPdebuglevel when sent to the client (McpServerImpl.ToLoggingLevel); it is not silently dropped.MRTR — Supporting down-level clients
CloseSupportTicketsample. The sample elicits a requiredcloseReasonand demonstrates four client scenarios in a single tool: explicit up-front input, an MRTR round-trip response, an MRTR initial request (with the SDK's automatic down-level elicitation bridge on a stateful session), and a session-less down-level natural-language fallback. This mirrors the sample used in the v2.0 announcement blog post.Navigation
TasksExtension sample
.WithStreamServerTransport(...), which registers theMcpServerDI factory (regression from the Tasks extraction, Extract Tasks into the ModelContextProtocol.Extensions.Tasks extension package #1693). The sample now runs its task poll loop to completion.CallToolAsTaskAsyncmanual-poll sample (the prior README described a pre-Extract Tasks into the ModelContextProtocol.Extensions.Tasks extension package #1693 two-path client that no longer exists), and remove a staleMCPEXP001note.Validation
--warningsAsErrors: 0 warnings / 0 errors.samples/TasksExtensionbuilds clean and runs the poll loop to completion.CloseSupportTicketMRTR sample was validated over an HTTP harness across the full client/transport matrix (MRTR-capable and down-level clients; stateful and stateless transports), including the session-less down-level fallback path.