Skip to content

Rename MCPEXP002 Subclassing_* constants to Extensibility_*#1739

Merged
jeffhandley merged 2 commits into
modelcontextprotocol:mainfrom
arimu1:rename-mcpexp002-extensibility-constants
Jul 26, 2026
Merged

Rename MCPEXP002 Subclassing_* constants to Extensibility_*#1739
jeffhandley merged 2 commits into
modelcontextprotocol:mainfrom
arimu1:rename-mcpexp002-extensibility-constants

Conversation

@arimu1

@arimu1 arimu1 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Rename Experimentals.Subclassing_DiagnosticId, Subclassing_Message, and Subclassing_Url to Extensibility_* so internal naming matches MCPEXP002's actual scope (C# SDK extensibility APIs, not only subclassing).
  • Update XML documentation and docs/list-of-diagnostics.md to describe MCPEXP002 consistently as experimental extensibility points in the C# implementation.
  • Update all [Experimental(...)] call sites that referenced the old constants.

Fixes #1736

Notes

  • Diagnostic ID unchanged: consumers continue suppressing MCPEXP002 as before.
  • Message updated: the shared extensibility message now reads "This C# SDK extensibility API is experimental and subject to change." (RunSessionHandler keeps its dedicated message/URL constants).

Test plan

  • dotnet build src/ModelContextProtocol.Core/ModelContextProtocol.Core.csproj — succeeded (0 warnings, 0 errors)
  • dotnet build tests/ModelContextProtocol.ExperimentalApiRegressionTest/ModelContextProtocol.ExperimentalApiRegressionTest.csproj — succeeded
  • Full solution dotnet build / dotnet test (not run here — disk space limited on build machine; mechanical rename only)

@arimu1
arimu1 force-pushed the rename-mcpexp002-extensibility-constants branch from 1311fbc to b7f1896 Compare July 25, 2026 02:25

@PranavSenthilnathan PranavSenthilnathan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I validated that the list of diagnostics is up to date with all experimental and obsolete diagnostic IDs currently defined by the SDK. Modulo the minor inline suggestions to clarify the purpose and expected lifetime of the MCPEXP002 extensibility APIs, this looks good.

Requesting changes so those documentation clarifications can be incorporated before merge.

Note

This review comment was generated with AI assistance.

Comment thread src/Common/Experimentals.cs Outdated
Comment thread src/Common/Experimentals.cs Outdated
Comment thread docs/list-of-diagnostics.md Outdated
@arimu1

arimu1 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

Applied all three suggestions verbatim in af6028d — thanks for the framing, "lets features ship in standalone packages without Core awareness" is a much better description of what MCPEXP002 is actually for than the old list-of-things wording.

Two things the new text drops that were in the old row, flagging in case either was intentional to keep:

  • the #1363 link next to McpClient/McpServer subclassing
  • the "consider using ConfigureSessionOptions instead" hint on RunSessionHandler

Happy to fold either back in if you want them retained. dotnet build on ModelContextProtocol.Core is clean (0 warnings).

jeffhandley
jeffhandley previously approved these changes Jul 26, 2026

@jeffhandley jeffhandley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for tackling this, @arimu1!

arimu1 added 2 commits July 26, 2026 12:39
Align internal constant names and documentation with MCPEXP002's actual
scope: experimental C# SDK extensibility APIs beyond subclassing alone.
Diagnostic ID and suppression behavior are unchanged.

Fixes modelcontextprotocol#1736
Apply review suggestions: describe MCPEXP002 as the extensibility surface
that lets features ship in standalone packages without Core awareness
(Tasks being the current consumer), and state that the APIs stay
experimental until more extensibility scenarios validate the design.
@arimu1
arimu1 force-pushed the rename-mcpexp002-extensibility-constants branch from af6028d to f41f2b7 Compare July 26, 2026 05:39
@arimu1

arimu1 commented Jul 26, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto main (f41f2b7). Two Subclassing_* usages landed on main after this branch was cut and broke the build on the merge commit:

  • McpServerRequestHandler.RoutingNameParameter (line 35)
  • JsonRpcMessageContext.RoutingName (line 86)

Both are extensibility points in the same group as the enclosing McpServerRequestHandler attribute, so they now use Experimentals.Extensibility_DiagnosticId / Extensibility_Url like the rest. git grep Subclassing_ is empty across the tree, and dotnet build on the full solution is clean (0 warnings, 0 errors).

@jeffhandley
jeffhandley merged commit f2ce62c into modelcontextprotocol:main Jul 26, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rename MCPEXP002 subclassing constants to reflect C# extensibility APIs

3 participants