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
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues