You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(readme): release-ready rewrite — 2026-07-28 as current spec
Drop the WIP/release-candidate banner and branch-scoped language; present
MCP 2026-07-28 as the current specification (2025-11-25 stays the
documented opt-in). Rewrite the opening for first-time readers and
reorder: intro -> highlights -> Quick Start (code first) -> spec
deep-dive; move the turul-rpc layering note down beside Architecture.
Fix stale error-code list (-32001/-32003/-32004 -> -32020/-32021/-32022,
matching the implemented 2026-07-02 re-pin).
> - Servers are single-spec per build; the client (`turul-mcp-client`) is bilingual.
13
-
> - Expect churn: examples, docs, and E2E tests are still being migrated to 2026 semantics.
14
-
15
1
# Turul MCP Framework
16
2
17
-
A comprehensive Rust framework for building Model Context Protocol (MCP) servers and clients with modern patterns, extensive tooling, and enterprise-grade features. On this branch the default build targets the **MCP 2026-07-28 specification** (stateless core: `server/discover`, per-request `_meta`, no `Mcp-Session-Id`); **MCP 2025-11-25 remains available** as an opt-in (`--no-default-features --features protocol-2025-11-25`).
3
+
Build [Model Context Protocol (MCP)](https://modelcontextprotocol.io) servers and clients in Rust — from a five-line tool server to serverless AWS Lambda deployments.
4
+
5
+
Turul gives you the full MCP surface (tools, resources, prompts, completion, notifications, extensions) behind a zero-configuration builder API: annotate a function or derive on a struct, add it to the builder, run. The framework generates the schemas, wires the transport, and keeps you spec-compliant.
18
6
19
-
**Pre-1.0 (0.4.x).** The framework is production-shaped — comprehensive test coverage, zero-warning gates — but public APIs may still change before 1.0.0. The default build is MCP 2026-07-28 (stateless); 2025-11-25 is opt-in.
7
+
The default build targets **MCP 2026-07-28**, the current specification. The previous spec, **2025-11-25**, stays fully supported as an opt-in build (`--no-default-features --features protocol-2025-11-25`). Servers are single-spec per build; the client speaks both and negotiates per connection.
20
8
21
-
## 🧪 Comprehensive Test Coverage
22
-
**Broad test coverage across the workspace** • **Complete async SessionContext integration** • **Framework-native testing patterns**
9
+
> **Pre-1.0 (0.4.x):** production-shaped — comprehensive test coverage, zero-warning gates — but public APIs may still change before 1.0.0.
23
10
24
11
## ✨ Key Highlights
25
12
@@ -31,75 +18,6 @@ A comprehensive Rust framework for building Model Context Protocol (MCP) servers
31
18
-**☁️ Serverless Support**: AWS Lambda integration with streaming responses and SQS event processing
32
19
-**🔧 Development Features**: Session management, real-time notifications, performance monitoring, and UUID v7 support
33
20
34
-
## 🆕 MCP 2026-07-28
35
-
36
-
The default build targets the 2026-07-28 release candidate. This is a **stateless
37
-
rewrite** of the protocol with several core methods removed — if you're coming from
This project ships two layered surfaces. Most users only need the MCP layer.
97
-
98
-
-**`turul-mcp`** (this framework) — the Model Context Protocol implementation. Tools, resources, prompts, sampling, elicitation, tasks, sessions, Streamable HTTP/SSE transport, the macro suite, storage backends.
99
-
-**[`turul-rpc`](https://github.com/aussierobots/turul-rpc)** — generic, transport-agnostic typed JSON-RPC 2.0 framework: dispatch, domain/protocol error separation, optional session context, async handler trait, batch processing, notifications. No MCP knowledge. Useful as a foundation for any non-MCP request/response service that wants the same handler-returns-domain-error contract Turul uses internally.
100
-
101
-
Turul MCP is built on top of Turul RPC. The `turul-mcp-json-rpc-server` crate, which historically carried the JSON-RPC implementation, is a thin re-export shim over `turul-rpc` since v0.3.39. **Existing 0.3.x users do not need to change anything** — `turul_mcp_json_rpc_server::*` imports continue to compile and behave identically. New code (and new tools/agents reading this README) should depend on `turul-rpc` directly. See [ADR-025](docs/adr/025-extract-turul-rpc.md).
102
-
103
21
## 🚀 Quick Start
104
22
105
23
### 1. Function Macros (Simplest - Recommended)
@@ -249,6 +167,66 @@ The framework automatically:
249
167
- Maps them to function parameters
250
168
- Registers appropriate resource handlers
251
169
170
+
## The MCP 2026-07-28 specification
171
+
172
+
The default build targets MCP 2026-07-28, the current specification — a **stateless
173
+
rewrite** of the protocol with several core methods removed. New to MCP? You can skim
174
+
this section and come back later. Migrating from 2025-11-25? Read it first.
@@ -400,6 +378,15 @@ cargo run -p minimal-server &
400
378
./quick_check.sh 8641
401
379
```
402
380
381
+
## Turul MCP vs Turul RPC
382
+
383
+
This project ships two layered surfaces. Most users only need the MCP layer.
384
+
385
+
-**`turul-mcp`** (this framework) — the Model Context Protocol implementation. Tools, resources, prompts, sampling, elicitation, tasks, sessions, Streamable HTTP/SSE transport, the macro suite, storage backends.
386
+
-**[`turul-rpc`](https://github.com/aussierobots/turul-rpc)** — generic, transport-agnostic typed JSON-RPC 2.0 framework: dispatch, domain/protocol error separation, optional session context, async handler trait, batch processing, notifications. No MCP knowledge. Useful as a foundation for any non-MCP request/response service that wants the same handler-returns-domain-error contract Turul uses internally.
387
+
388
+
Turul MCP is built on top of Turul RPC. The `turul-mcp-json-rpc-server` crate, which historically carried the JSON-RPC implementation, is a thin re-export shim over `turul-rpc` since v0.3.39. **Existing 0.3.x users do not need to change anything** — `turul_mcp_json_rpc_server::*` imports continue to compile and behave identically. New code (and new tools/agents reading this README) should depend on `turul-rpc` directly. See [ADR-025](docs/adr/025-extract-turul-rpc.md).
389
+
403
390
## 🏛️ Architecture Overview
404
391
405
392
### Middleware System
@@ -1180,7 +1167,7 @@ This project is licensed under the MIT OR Apache-2.0 License - see the LICENSE f
1180
1167
## 📋 Development Status & Current Limitations
1181
1168
1182
1169
### 🎯 Current Framework State
1183
-
-**MCP 2026-07-28 adoption (this branch)**: default build targets the 2026-07-28 stateless core; 2025-11-25 remains fully supported as the opt-in stateful line
1170
+
-**MCP 2026-07-28**: default build targets the current stateless spec; 2025-11-25 remains fully supported as the opt-in stateful line
1184
1171
-**Examples Validated**: 54 active examples compile under their lane's CI gates (2026-07-28 default lane plus the pinned 2025-11-25 regression set — see EXAMPLES.md)
1185
1172
-**SSE Streaming Verified**: Real-time notifications and session-aware logging working correctly
1186
1173
-**Pre-1.0 (0.4.x)**: production-shaped with comprehensive test coverage; public APIs may still change before 1.0.0
0 commit comments