Co-authored-by: Akbar Dızajı <akbar@skedda.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
In-Memory Transport Sample
Demonstrates connecting an MCP client and server in the same process using stream-based
transports over in-memory pipes (System.IO.Pipelines) — no child process, no network.
The server is created directly with McpServer.Create, without a host or dependency
injection container, and exposes a single Echo tool defined from a delegate with
McpServerTool.Create. The client connects over the same pipe pair with
StreamClientTransport, lists the server's tools, and invokes the tool.
This pattern is useful for testing MCP servers, embedding a server inside a larger application, or running a client and server in the same process without transport overhead. See Transports: In-memory transport for more background.
Run
dotnet run --project samples/InMemoryTransport/InMemoryTransport.csproj
Expected output:
Tool Name: Echo
Echo: Hello World
Key files
Program.cs— the entire sample: pipe setup, server creation, client connection, tool listing, and tool invocation.
Notes
StreamServerTransportandStreamClientTransportwork with anyStream. This sample wires them to a pair ofPipeinstances, one per direction; the client's output stream is the server's input stream and vice versa.- The server is started with a fire-and-forget
server.RunAsync()because both endpoints live in the same process.await usingon the server and client ensures both are disposed when the program exits.