Skip to content

Add an optional stateless Streamable HTTP MCP lab #630

Description

@jongalloway

Summary

Add an optional workshop exercise that contrasts the existing stdio MCP server with the MCP C# SDK 2.x stateless Streamable HTTP transport from the 2026-07-28 specification.

Follow-up to #616. The migration epic deliberately kept Parts 5 and 6 on stdio; this issue preserves the strongest next step from that decision.

Learning goals

  • Explain why the 2026-07-28 protocol is stateless by default over HTTP.
  • Host an MCP server with ModelContextProtocol.AspNetCore 2.2.x and ordinary ASP.NET Core routing.
  • Show that protocol version and capabilities travel with each request and no Mcp-Session-Id is required.
  • Demonstrate standardized Mcp-Method and Mcp-Name headers.
  • Promote one meaningful tool argument with [McpHeader] and explain an intermediary routing scenario.
  • Preserve Part 5 stdio as the required fundamentals path.

Proposed workshop fit

Use the optional Part 6 business server. A regional order lookup is a natural scenario for promoting region into Mcp-Param-Region so a gateway or load balancer can route without inspecting the JSON-RPC body.

Acceptance criteria

  • The HTTP server uses ModelContextProtocol.AspNetCore and remains stateless by default.
  • A runnable client or protocol harness calls the server locally without deployment or authentication prerequisites.
  • Tests verify there is no session requirement and inspect standardized method/name headers.
  • Tests verify body/header agreement and the HeaderMismatch behavior.
  • The exercise explains when stdio remains preferable.
  • The optional exercise fits the Part 6 time budget or is clearly marked as follow-on material.
  • Release builds are warning-free and documentation lint/link checks pass.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Polish, minor documentation, screenshots, or future improvementenhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions