Skip to main content
Glama
Varritech

MCP Stateless Server Template

by Varritech
README.md
# MCP Stateless Server Template

**Production-ready stateless MCP server implementing the 2026-07-28 specification.**

Built by [Varritech](https://varritech.com) | christian@varritech.com

## Why This Exists

MCP just grew up. The [2026-07-28 specification](https://blog.modelcontextprotocol.io/posts/2026-07-28/) retired sessions and handshakes, transforming MCP from a bidirectional stateful protocol into a request/response stateless protocol.

This template gives you a working stateless server in TypeScript that you can:
- Deploy behind a round-robin load balancer immediately
- Scale horizontally without shared storage
- Use as a reference for migrating your existing MCP servers

## Quick Start

```bash
npm install
npm run dev
```

Your server will be available at `http://localhost:3000/mcp`

## What Changed in 2026-07-28

| Before (2025-11-25) | After (2026-07-28) |
|---------------------|-------------------|
| `initialize/initialized` handshake | No handshake required |
| `Mcp-Session-Id` header | Removed entirely |
| Bidirectional streams | Request/response only |
| Server-initiated sampling/elicitation | Multi Round-Trip Requests (MRTR) |
| Dynamic Client Registration (DCR) | Client ID Metadata Documents (CIMD) |

## Key Features

✅ **Stateless by default** - Every request is self-describing  
✅ **Load balancer ready** - Any request lands on any instance  
✅ **Cacheable responses** - `ttlMs` and `cacheScope` hints included  
✅ **MRTR support** - Handle user input requirements mid-call  
✅ **Authorization hardened** - RFC 9207 issuer validation  

## Architecture

```
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Client    │────▶│  Load       │────▶│   Server    │
│             │     │  Balancer   │     │  Instance   │
└─────────────┘     └─────────────┘     └─────────────┘
                                            │
                                      ┌─────────────┐
                                      │   Server    │
                                      │  Instance   │
                                      └─────────────┘
```

No session affinity required. No shared storage needed.

## Migration Guide

If you have an existing MCP server:

1. Remove `initialize`/`initialized` handlers
2. Drop `Mcp-Session-Id` tracking
3. Add `_meta.clientInfo` parsing to each request
4. Implement `server/discover` RPC (optional but recommended)
5. Update response format to include `ttlMs` and `cacheScope`

See `GUIDE.md` for the full migration walkthrough.

## License

MIT - Varritech 2026

Maintenance

ActivitySlowing
ResponsivenessNo issues