rmcp 2.2.0

Rust SDK for Model Context Protocol
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [2.2.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v2.1.0...rmcp-v2.2.0 - 2026-07-08

### Added

- reject auth servers lacking S256 PKCE support ([#955]https://github.com/modelcontextprotocol/rust-sdk/pull/955)

### Fixed

- pass client conformance suite ([#960]https://github.com/modelcontextprotocol/rust-sdk/pull/960)
- don't respond to cancelled requests ([#957]https://github.com/modelcontextprotocol/rust-sdk/pull/957)
- fail orphaned streamable HTTP responses on reinit ([#914]https://github.com/modelcontextprotocol/rust-sdk/pull/914)
- address 2025-11-25 conformance audit findings ([#951]https://github.com/modelcontextprotocol/rust-sdk/pull/951)

## [2.1.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v2.0.0...rmcp-v2.1.0 - 2026-07-02

### Added

- add SEP-414 trace context meta accessors ([#910]https://github.com/modelcontextprotocol/rust-sdk/pull/910)
- add SEP-2575 meta helpers ([#942]https://github.com/modelcontextprotocol/rust-sdk/pull/942)

### Fixed

- *(transport)* make AsyncRwTransport::receive cancel-safe ([#941]https://github.com/modelcontextprotocol/rust-sdk/pull/941) ([#947]https://github.com/modelcontextprotocol/rust-sdk/pull/947)
- *(auth)* preserve refresh_token when refresh response omits it ([#949]https://github.com/modelcontextprotocol/rust-sdk/pull/949)
- block redirect header leaks ([#936]https://github.com/modelcontextprotocol/rust-sdk/pull/936)
- don't respond to unparsable messages ([#940]https://github.com/modelcontextprotocol/rust-sdk/pull/940)
- negotiate protocol version in handler ([#930]https://github.com/modelcontextprotocol/rust-sdk/pull/930)

## [2.0.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.8.0...rmcp-v2.0.0 - 2026-06-27

### Added

- [**breaking**] relax tool result structuredContent type ([#919]https://github.com/modelcontextprotocol/rust-sdk/pull/919)
- deprecate roots/sampling/logging types ([#923]https://github.com/modelcontextprotocol/rust-sdk/pull/923)
- [**breaking**] align model types with MCP 2025-11-25 spec ([#927]https://github.com/modelcontextprotocol/rust-sdk/pull/927)

### Fixed

- prevent OAuth resource spoofing ([#937]https://github.com/modelcontextprotocol/rust-sdk/pull/937)
- block oauth metadata ssrf ([#935]https://github.com/modelcontextprotocol/rust-sdk/pull/935)
- prevent streamable HTTP session leak ([#934]https://github.com/modelcontextprotocol/rust-sdk/pull/934)
- fill missing fully qualified syntax in prompt_handler macros ([#866]https://github.com/modelcontextprotocol/rust-sdk/pull/866)
- *(rmcp)* add Audio variant to PromptMessageContent ([#865]https://github.com/modelcontextprotocol/rust-sdk/pull/865)

### Other

- consolidate repeated rmcp tests ([#931]https://github.com/modelcontextprotocol/rust-sdk/pull/931)
- Revert "feat!: relax tool result structuredContent type ([#919]https://github.com/modelcontextprotocol/rust-sdk/pull/919)" ([#932]https://github.com/modelcontextprotocol/rust-sdk/pull/932)
- align README examples with v2 model API ([#928]https://github.com/modelcontextprotocol/rust-sdk/pull/928)

## [1.8.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.7.0...rmcp-v1.8.0 - 2026-06-22

### Added

- standardize resource-not-found error code (SEP-2164) ([#899]https://github.com/modelcontextprotocol/rust-sdk/pull/899)
- validate OAuth authorization response issuer ([#896]https://github.com/modelcontextprotocol/rust-sdk/pull/896)
- specify OIDC application_type during dynamic client registration (SEP-837) ([#883]https://github.com/modelcontextprotocol/rust-sdk/pull/883)
- deprecate roots, sampling, and logging (SEP-2577) ([#884]https://github.com/modelcontextprotocol/rust-sdk/pull/884)

### Fixed

- *(auth)* preserve configured reqwest client ([#917]https://github.com/modelcontextprotocol/rust-sdk/pull/917)
- *(auth)* align OAuth metadata discovery ordering ([#887]https://github.com/modelcontextprotocol/rust-sdk/pull/887)
- align progress timeout token ([#909]https://github.com/modelcontextprotocol/rust-sdk/pull/909)
- *(elicitation)* preserve enumNames through ElicitationSchema serde round-trip ([#905]https://github.com/modelcontextprotocol/rust-sdk/pull/905)
- return tool errors for invalid arguments ([#894]https://github.com/modelcontextprotocol/rust-sdk/pull/894)
- *(auth)* apply offline_access to reauth paths ([#897]https://github.com/modelcontextprotocol/rust-sdk/pull/897)
- update peer info on duplicate initialize ([#862]https://github.com/modelcontextprotocol/rust-sdk/pull/862)
- strip and validate tool outputSchema and inputSchema ([#860]https://github.com/modelcontextprotocol/rust-sdk/pull/860)
- remove unnecessary fields from tools' inputSchema ([#856]https://github.com/modelcontextprotocol/rust-sdk/pull/856)
- reject init header/body version mismatch ([#853]https://github.com/modelcontextprotocol/rust-sdk/pull/853)
- align protocol version negotiation ([#855]https://github.com/modelcontextprotocol/rust-sdk/pull/855)
- accept 200 with empty body in response to notifications in addition to 202 ([#849]https://github.com/modelcontextprotocol/rust-sdk/pull/849)

### Other

- Allow custom HTTP clients for OAuth ([#908]https://github.com/modelcontextprotocol/rust-sdk/pull/908)
- Add progress-aware request timeout reset ([#858]https://github.com/modelcontextprotocol/rust-sdk/pull/858)
- *(server)* document Err vs Ok(CallToolResult::error) visibility contract on ServerHandler::call_tool ([#854]https://github.com/modelcontextprotocol/rust-sdk/pull/854)
- refine mcpmate listing copy ([#885]https://github.com/modelcontextprotocol/rust-sdk/pull/885)
- added jilebi-mcp to the list of built with rmcp ([#861]https://github.com/modelcontextprotocol/rust-sdk/pull/861)

## [1.7.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.6.0...rmcp-v1.7.0 - 2026-05-13

### Added

- add task-based stdio examples ([#839]https://github.com/modelcontextprotocol/rust-sdk/pull/839)

### Fixed

- *(rmcp)* flatten Resource variant of PromptMessageContent ([#843]https://github.com/modelcontextprotocol/rust-sdk/pull/843)
- reply -32700 on stdio parse errors instead of closing ([#833]https://github.com/modelcontextprotocol/rust-sdk/pull/833)

### Other

- *(rmcp)* remove dependency on chrono default features ([#829]https://github.com/modelcontextprotocol/rust-sdk/pull/829)
- Fix/issue 817 idle timeout log level ([#824]https://github.com/modelcontextprotocol/rust-sdk/pull/824)

## [1.6.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.5.0...rmcp-v1.6.0 - 2026-05-01

### Added

- *(http)* log Host/Origin rejections ([#826]https://github.com/modelcontextprotocol/rust-sdk/pull/826)
- *(http)* add Origin header validation ([#823]https://github.com/modelcontextprotocol/rust-sdk/pull/823)
- *(router)* support runtime disabling of tools ([#809]https://github.com/modelcontextprotocol/rust-sdk/pull/809)
- optional session store (resumabillity support) ([#775]https://github.com/modelcontextprotocol/rust-sdk/pull/775)

### Fixed

- add init_timeout for streamable-http sessions ([#811]https://github.com/modelcontextprotocol/rust-sdk/pull/811)
- *(http)* fall back to :authority for HTTP/2 ([#827]https://github.com/modelcontextprotocol/rust-sdk/pull/827)
- *(docs)* use correct Parameters<T> syntax in tool examples ([#814]https://github.com/modelcontextprotocol/rust-sdk/pull/814)

### Other

- add systemprompt-template to Built with rmcp ([#820]https://github.com/modelcontextprotocol/rust-sdk/pull/820)

## [1.5.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.4.0...rmcp-v1.5.0 - 2026-04-16

### Added

- *(transport)* add constructors for non_exhaustive error types ([#806]https://github.com/modelcontextprotocol/rust-sdk/pull/806)
- add 2025-11-25 protocol version support ([#802]https://github.com/modelcontextprotocol/rust-sdk/pull/802)

### Fixed

- treat resource metadata JSON parse failure as soft error ([#810]https://github.com/modelcontextprotocol/rust-sdk/pull/810)
- include http_request_id in request-wise priming event IDs ([#799]https://github.com/modelcontextprotocol/rust-sdk/pull/799)
- *(http)* drain SSE stream for connection reuse ([#790]https://github.com/modelcontextprotocol/rust-sdk/pull/790)

### Other

- *(deps)* update which requirement from 7 to 8 ([#807]https://github.com/modelcontextprotocol/rust-sdk/pull/807)

## [1.4.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.3.0...rmcp-v1.4.0 - 2026-04-09

### Added

- add Default and constructors to ServerSseMessage ([#794]https://github.com/modelcontextprotocol/rust-sdk/pull/794)
- add meta to elicitation results ([#792]https://github.com/modelcontextprotocol/rust-sdk/pull/792)
- *(macros)* auto-generate get_info and default router ([#785]https://github.com/modelcontextprotocol/rust-sdk/pull/785)
- *(transport)* add which_command for cross-platform executable resolution ([#774]https://github.com/modelcontextprotocol/rust-sdk/pull/774)
- *(auth)* add StoredCredentials::new() constructor ([#778]https://github.com/modelcontextprotocol/rust-sdk/pull/778)

### Fixed

- *(server)* remove initialized notification gate to support Streamable HTTP ([#788]https://github.com/modelcontextprotocol/rust-sdk/pull/788)
- default session keep_alive to 5 minutes ([#780]https://github.com/modelcontextprotocol/rust-sdk/pull/780)
- *(http)* add host check ([#764]https://github.com/modelcontextprotocol/rust-sdk/pull/764)
- exclude local feature from docs.rs build ([#782]https://github.com/modelcontextprotocol/rust-sdk/pull/782)

### Other

- update Rust toolchain to 1.92 ([#797]https://github.com/modelcontextprotocol/rust-sdk/pull/797)
- unify IntoCallToolResult Result impls ([#787]https://github.com/modelcontextprotocol/rust-sdk/pull/787)

## [1.3.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.2.0...rmcp-v1.3.0 - 2026-03-24

### Added

- *(transport)* add Unix domain socket client for streamable HTTP ([#749]https://github.com/modelcontextprotocol/rust-sdk/pull/749)
- *(auth)* implement SEP-2207 OIDC-flavored refresh token guidance ([#676]https://github.com/modelcontextprotocol/rust-sdk/pull/676)
- add configuration for transparent session re-init ([#760]https://github.com/modelcontextprotocol/rust-sdk/pull/760)
- add local feature for !Send tool handler support ([#740]https://github.com/modelcontextprotocol/rust-sdk/pull/740)

### Fixed

- prevent CallToolResult and GetTaskPayloadResult from shadowing CustomResult in untagged enums ([#771]https://github.com/modelcontextprotocol/rust-sdk/pull/771)
- drain in-flight responses on stdin EOF ([#759]https://github.com/modelcontextprotocol/rust-sdk/pull/759)
- remove default type param from StreamableHttpService ([#758]https://github.com/modelcontextprotocol/rust-sdk/pull/758)
- use cfg-gated Send+Sync supertraits to avoid semver break ([#757]https://github.com/modelcontextprotocol/rust-sdk/pull/757)
- *(rmcp)* surface JSON-RPC error bodies on HTTP 4xx responses ([#748]https://github.com/modelcontextprotocol/rust-sdk/pull/748)
- default CallToolResult content to empty vec on missing field ([#752]https://github.com/modelcontextprotocol/rust-sdk/pull/752)
- *(auth)* redact secrets in Debug output for StoredCredentials and StoredAuthorizationState ([#744]https://github.com/modelcontextprotocol/rust-sdk/pull/744)

### Other

- fix all clippy warnings across workspace ([#746]https://github.com/modelcontextprotocol/rust-sdk/pull/746)

## [1.2.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.1.1...rmcp-v1.2.0 - 2026-03-11

### Added

- add missing constructors for non-exhaustive model types ([#739]https://github.com/modelcontextprotocol/rust-sdk/pull/739)
- include granted scopes in OAuth refresh token request ([#731]https://github.com/modelcontextprotocol/rust-sdk/pull/731)

### Fixed

- handle ping requests sent before initialize handshake ([#745]https://github.com/modelcontextprotocol/rust-sdk/pull/745)
- allow deserializing notifications without params field ([#729]https://github.com/modelcontextprotocol/rust-sdk/pull/729)

### Other

- *(deps)* update jsonwebtoken requirement from 9 to 10 ([#737]https://github.com/modelcontextprotocol/rust-sdk/pull/737)

## [1.1.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.1.0...rmcp-v1.1.1 - 2026-03-09

### Fixed

- accept logging/setLevel and ping before initialized notification ([#730]https://github.com/modelcontextprotocol/rust-sdk/pull/730)

## [1.1.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.0.0...rmcp-v1.1.0 - 2026-03-04

### Added

- implement OAuth 2.0 Client Credentials flow ([#707]https://github.com/modelcontextprotocol/rust-sdk/pull/707)

### Other

- add McpMux to Built with rmcp section ([#717]https://github.com/modelcontextprotocol/rust-sdk/pull/717)

## [1.0.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v1.0.0-alpha...rmcp-v1.0.0 - 2026-03-03

### Fixed

- *(auth)* pass WWW-Authenticate scopes to DCR registration request ([#705]https://github.com/modelcontextprotocol/rust-sdk/pull/705)
- api ergonomics follow-up ([#720]https://github.com/modelcontextprotocol/rust-sdk/pull/720)
- *(streamable-http)* map stale session 401 to status-aware error ([#709]https://github.com/modelcontextprotocol/rust-sdk/pull/709)

## [1.0.0-alpha]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.17.0...rmcp-v1.0.0-alpha - 2026-03-03

### Added

- docs update ([#718]https://github.com/modelcontextprotocol/rust-sdk/pull/718)
- *(auth)* [**breaking**] support returning extra fields from token exchange ([#700]https://github.com/modelcontextprotocol/rust-sdk/pull/700)

### Fixed

- downgrade logging of message to `TRACE` to avoid spamming logs ([#699]https://github.com/modelcontextprotocol/rust-sdk/pull/699)

### Other

- add #[non_exhaustive] and mutation methods to improve compatibility ([#715]https://github.com/modelcontextprotocol/rust-sdk/pull/715)

## [0.17.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.16.0...rmcp-v0.17.0 - 2026-02-27

### Added

- *(streamable-http)* add json_response option for stateless server mode ([#683]https://github.com/modelcontextprotocol/rust-sdk/pull/683)
- mcp sdk conformance ([#687]https://github.com/modelcontextprotocol/rust-sdk/pull/687)
- add default value support to string, number, and integer schemas ([#686]https://github.com/modelcontextprotocol/rust-sdk/pull/686)
- add trait-based tool declaration ([#677]https://github.com/modelcontextprotocol/rust-sdk/pull/677)
- send and validate MCP-Protocol-Version header ([#675]https://github.com/modelcontextprotocol/rust-sdk/pull/675)

### Fixed

- improve error logging and remove token secret from logs ([#685]https://github.com/modelcontextprotocol/rust-sdk/pull/685)
- refresh token expiry ([#680]https://github.com/modelcontextprotocol/rust-sdk/pull/680)
- gate optional dependencies behind feature flags ([#672]https://github.com/modelcontextprotocol/rust-sdk/pull/672)
- allow empty content in CallToolResult ([#681]https://github.com/modelcontextprotocol/rust-sdk/pull/681)
- *(schema)* remove AddNullable from draft2020_12 settings ([#664]https://github.com/modelcontextprotocol/rust-sdk/pull/664)

### Other

- add prose documentation for core features to meet conformance ([#702]https://github.com/modelcontextprotocol/rust-sdk/pull/702)
- Fix/sse channel replacement conflict ([#682]https://github.com/modelcontextprotocol/rust-sdk/pull/682)
- document session management for streamable HTTP transport ([#674]https://github.com/modelcontextprotocol/rust-sdk/pull/674)

## [0.16.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.15.0...rmcp-v0.16.0 - 2026-02-17

### Added

- add support for custom HTTP headers in StreamableHttpClient ([#655]https://github.com/modelcontextprotocol/rust-sdk/pull/655)
- *(auth)* add token_endpoint_auth_method to OAuthClientConfig ([#648]https://github.com/modelcontextprotocol/rust-sdk/pull/648)

### Fixed

- remove unnecessary doc-cfg ([#661]https://github.com/modelcontextprotocol/rust-sdk/pull/661)
- duplicate meta serialization ([#662]https://github.com/modelcontextprotocol/rust-sdk/pull/662)
- sort list_all() output in ToolRouter and PromptRouter for deterministic ordering ([#665]https://github.com/modelcontextprotocol/rust-sdk/pull/665)
- align task response types with MCP spec ([#658]https://github.com/modelcontextprotocol/rust-sdk/pull/658)

### Other

- upgrade reqwest to 0.13.2 ([#669]https://github.com/modelcontextprotocol/rust-sdk/pull/669)
- include LICENSE in final crate tarball ([#657]https://github.com/modelcontextprotocol/rust-sdk/pull/657)
- *(deps)* update rand requirement from 0.9 to 0.10 ([#650]https://github.com/modelcontextprotocol/rust-sdk/pull/650)
- remove unused axum dependency from server-side-http feature ([#642]https://github.com/modelcontextprotocol/rust-sdk/pull/642)
- 11-25-2025 compliant Auth ([#651]https://github.com/modelcontextprotocol/rust-sdk/pull/651)
- add rudof-mcp to MCP servers list ([#645]https://github.com/modelcontextprotocol/rust-sdk/pull/645)

## [0.15.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.14.0...rmcp-v0.15.0 - 2026-02-10

### Added

- *(elicitation)* add support URL elicitation. SEP-1036 ([#605]https://github.com/modelcontextprotocol/rust-sdk/pull/605)
- enforce SEP-1577 MUST requirements for sampling with tools ([#646]https://github.com/modelcontextprotocol/rust-sdk/pull/646)
- add native-tls as an optional TLS backend ([#631]https://github.com/modelcontextprotocol/rust-sdk/pull/631)
- *(capabilities)* add extensions field for SEP-1724 ([#643]https://github.com/modelcontextprotocol/rust-sdk/pull/643)

### Fixed

- *(tasks)* avoid dropping completed task results during collection ([#639]https://github.com/modelcontextprotocol/rust-sdk/pull/639)
- *(auth)* oauth metadata discovery ([#641]https://github.com/modelcontextprotocol/rust-sdk/pull/641)
- compilation with --no-default-features ([#593]https://github.com/modelcontextprotocol/rust-sdk/pull/593)
- *(tasks)* expose `execution.taskSupport` on tools ([#635]https://github.com/modelcontextprotocol/rust-sdk/pull/635)
- *(tasks)* correct enum variant ordering for deserialization ([#634]https://github.com/modelcontextprotocol/rust-sdk/pull/634)

### Other

- Add optional description field to Implementation struct ([#649]https://github.com/modelcontextprotocol/rust-sdk/pull/649)
- Implement SEP-1577: Sampling With Tools ([#628]https://github.com/modelcontextprotocol/rust-sdk/pull/628)

## [0.14.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.13.0...rmcp-v0.14.0 - 2026-01-23

### Fixed

- *(tasks)* #626 model task capabilities correctly ([#627]https://github.com/modelcontextprotocol/rust-sdk/pull/627)
- don't treat non-success HTTP codes as transport errors ([#618]https://github.com/modelcontextprotocol/rust-sdk/pull/618)

### Other

- show README content on docs.rs ([#583]https://github.com/modelcontextprotocol/rust-sdk/pull/583)
- added hyper-mcp to the list of built with rmcp ([#621]https://github.com/modelcontextprotocol/rust-sdk/pull/621)
- Implement SEP-1319: Decouple Request Payload from RPC Methods ([#617]https://github.com/modelcontextprotocol/rust-sdk/pull/617)

## [0.13.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.12.0...rmcp-v0.13.0 - 2026-01-15

### Added

- provide blanket implementations for ClientHandler and ServerHandler traits ([#609]https://github.com/modelcontextprotocol/rust-sdk/pull/609)
- *(service)* add close() method for graceful connection shutdown ([#588]https://github.com/modelcontextprotocol/rust-sdk/pull/588)
- *(auth)* add StateStore trait for pluggable OAuth state storage ([#614]https://github.com/modelcontextprotocol/rust-sdk/pull/614)
- *(elicitation)* implement SEP-1330 Elicitation Enum Schema Improvements ([#539]https://github.com/modelcontextprotocol/rust-sdk/pull/539)
- *(task)* add task support (SEP-1686) ([#536]https://github.com/modelcontextprotocol/rust-sdk/pull/536)

### Fixed

- use the json rpc error from the initialize response and bubble it up to the client ([#569]https://github.com/modelcontextprotocol/rust-sdk/pull/569)
- *(build)* fix build of the project when no features are selected ([#606]https://github.com/modelcontextprotocol/rust-sdk/pull/606)
- use Semaphore instead of Notify in OneshotTransport to prevent race condition ([#611]https://github.com/modelcontextprotocol/rust-sdk/pull/611)
- add OpenID Connect discovery support per spec-2025-11-25 4.3 ([#598]https://github.com/modelcontextprotocol/rust-sdk/pull/598)
- only try to refresh access tokens if we have a refresh token or an expiry time ([#594]https://github.com/modelcontextprotocol/rust-sdk/pull/594)
- *(docs)* add spreadsheet-mcp to Built with rmcp ([#582]https://github.com/modelcontextprotocol/rust-sdk/pull/582)

### Other

- *(elicitation)* improve enum schema builder, small changes of elicitation builder ([#608]https://github.com/modelcontextprotocol/rust-sdk/pull/608)
- add pre-commit hook for conventional commit verification ([#619]https://github.com/modelcontextprotocol/rust-sdk/pull/619)
- clean up optional dependencies ([#546]https://github.com/modelcontextprotocol/rust-sdk/pull/546)
- re-export ServerSseMessage from session module ([#612]https://github.com/modelcontextprotocol/rust-sdk/pull/612)
- Implement SEP-1699: Support SSE Polling via Server-Side Disconnect ([#604]https://github.com/modelcontextprotocol/rust-sdk/pull/604)
- update README external links ([#603]https://github.com/modelcontextprotocol/rust-sdk/pull/603)
- clarity and formatting ([#602]https://github.com/modelcontextprotocol/rust-sdk/pull/602)
- Add optional icons field to RawResourceTemplate ([#589]https://github.com/modelcontextprotocol/rust-sdk/pull/589)

## [0.12.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.11.0...rmcp-v0.12.0 - 2025-12-18

### Added

- add support for custom requests ([#590]https://github.com/modelcontextprotocol/rust-sdk/pull/590)
- add support for custom server notifications ([#580]https://github.com/modelcontextprotocol/rust-sdk/pull/580)

### Fixed

- update process-wrap to v9.0 ([#586]https://github.com/modelcontextprotocol/rust-sdk/pull/586)
- *(oauth)* rfc8414 should judement the response_types ([#485]https://github.com/modelcontextprotocol/rust-sdk/pull/485)

### Other

- Add SEP-991 (CIMD) support for URL-based client IDs ([#570]https://github.com/modelcontextprotocol/rust-sdk/pull/570)
- merge cached_schema_for_type into schema_for_type ([#581]https://github.com/modelcontextprotocol/rust-sdk/pull/581)
- Add NexusCore MCP to project list ([#573]https://github.com/modelcontextprotocol/rust-sdk/pull/573)

## [0.11.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.10.0...rmcp-v0.11.0 - 2025-12-08

### Added

- *(meta)* add _meta field to prompts, resources and paginated result ([#558]https://github.com/modelcontextprotocol/rust-sdk/pull/558)
- [**breaking**] remove SSE transport support ([#562]https://github.com/modelcontextprotocol/rust-sdk/pull/562)

### Fixed

- *(streamable-http)* gracefully shutdown while client connected ([#494]https://github.com/modelcontextprotocol/rust-sdk/pull/494)

### Other

- Implements outputSchema validation ([#566]https://github.com/modelcontextprotocol/rust-sdk/pull/566)
- add video-transcriber-mcp-rs to projects built with rmcp ([#565]https://github.com/modelcontextprotocol/rust-sdk/pull/565)

## [0.10.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.9.1...rmcp-v0.10.0 - 2025-12-01

### Added

- add support for custom client notifications ([#556]https://github.com/modelcontextprotocol/rust-sdk/pull/556)

### Other

- replace paste with pastey for macros feature ([#564]https://github.com/modelcontextprotocol/rust-sdk/pull/564)

## [0.9.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.9.0...rmcp-v0.9.1 - 2025-11-24

### Added

- *(streamable-http)* support both SSE and JSON response formats ([#540]https://github.com/modelcontextprotocol/rust-sdk/pull/540)

### Fixed

- don't block on creating the SSE stream ([#553]https://github.com/modelcontextprotocol/rust-sdk/pull/553)
- *(shemars)* use JSON Schema 2020-12 as Default Dialect ([#549]https://github.com/modelcontextprotocol/rust-sdk/pull/549)
- *(oauth)* let OAuth discovery skip to next well-known URL candidate on JSON parse error. ([#545]https://github.com/modelcontextprotocol/rust-sdk/pull/545)

### Other

- Implementation of SEP-986: Specify Format for Tool Names ([#551]https://github.com/modelcontextprotocol/rust-sdk/pull/551)

## [0.9.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.8.5...rmcp-v0.9.0 - 2025-11-17

### Added

- *(auth)* implement CredentialStore trait ([#542]https://github.com/modelcontextprotocol/rust-sdk/pull/542)
- *(tool)* add _meta to tool definitions ([#534]https://github.com/modelcontextprotocol/rust-sdk/pull/534)

## [0.8.5]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.8.4...rmcp-v0.8.5 - 2025-11-05

### Fixed

- *(oauth)* respect oauth-protected-resource discovery ([#511]https://github.com/modelcontextprotocol/rust-sdk/pull/511)

## [0.8.4]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.8.3...rmcp-v0.8.4 - 2025-11-04

### Fixed

- *(oauth)* fix oauth credential refresh ([#509]https://github.com/modelcontextprotocol/rust-sdk/pull/509)
- do not manually construct fallback authorization metadata ([#507]https://github.com/modelcontextprotocol/rust-sdk/pull/507)
- *(doc)* add stakpak-agent to Built with rmcp section ([#500]https://github.com/modelcontextprotocol/rust-sdk/pull/500)

## [0.8.3]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.8.2...rmcp-v0.8.3 - 2025-10-22

### Fixed

- accept 204 in addition to 202 on initialize ([#497]https://github.com/modelcontextprotocol/rust-sdk/pull/497)

## [0.8.2]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.8.1...rmcp-v0.8.2 - 2025-10-21

### Added

- add type-safe elicitation schema support ([#465]https://github.com/modelcontextprotocol/rust-sdk/pull/465) ([#466]https://github.com/modelcontextprotocol/rust-sdk/pull/466)
- *(SEP-973)* following change Icon.sizes from string to string array ([#479]https://github.com/modelcontextprotocol/rust-sdk/pull/479)

### Fixed

- *(oauth)* three oauth discovery and registration issues ([#489]https://github.com/modelcontextprotocol/rust-sdk/pull/489)
- *(oauth)* dynamic client registration should be optional ([#463]https://github.com/modelcontextprotocol/rust-sdk/pull/463)
- *(sse-client)* consume control frames; refresh message endpoint ([#448]https://github.com/modelcontextprotocol/rust-sdk/pull/448)

### Other

- Streamable HTTP: drain SSE frames until the initialize response, ignoring early notifications to prevent handshake timeouts ([#467]https://github.com/modelcontextprotocol/rust-sdk/pull/467)
- bump crate version in README.md ([#471]https://github.com/modelcontextprotocol/rust-sdk/pull/471)

## [0.8.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.8.0...rmcp-v0.8.1 - 2025-10-07

### Fixed

- *(oauth)* pass bearer token to all streamable http requests ([#476]https://github.com/modelcontextprotocol/rust-sdk/pull/476)
- fix spellcheck on intentional typo in CHANGELOG ([#470]https://github.com/modelcontextprotocol/rust-sdk/pull/470)

## [0.8.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.7.0...rmcp-v0.8.0 - 2025-10-04

### Added

- allow clients to override client_name ([#469]https://github.com/modelcontextprotocol/rust-sdk/pull/469)

### Fixed

- *(oauth)* support suffixed and prefixed well-known paths ([#459]https://github.com/modelcontextprotocol/rust-sdk/pull/459)
- generate default schema for tools with no params ([#446]https://github.com/modelcontextprotocol/rust-sdk/pull/446)

### Other

- bump to rust 1.90.0 ([#453]https://github.com/modelcontextprotocol/rust-sdk/pull/453)

## [0.7.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.6.4...rmcp-v0.7.0 - 2025-09-24

### Fixed

- return auth errors ([#451]https://github.com/modelcontextprotocol/rust-sdk/pull/451)
- *(oauth)* do not treat empty secret as valid for public clients ([#443]https://github.com/modelcontextprotocol/rust-sdk/pull/443)
- *(clippy)* add doc comment for generated tool attr fn ([#439]https://github.com/modelcontextprotocol/rust-sdk/pull/439)
- *(oauth)* require CSRF token as part of the OAuth authorization flow. ([#435]https://github.com/modelcontextprotocol/rust-sdk/pull/435)

### Other

- *(root)* Add Terminator to Built with rmcp section ([#437]https://github.com/modelcontextprotocol/rust-sdk/pull/437)
- Non-empty paths in OAuth2 Authorization Server Metadata URLs ([#441]https://github.com/modelcontextprotocol/rust-sdk/pull/441)

## [0.6.4]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.6.3...rmcp-v0.6.4 - 2025-09-11

### Added

- *(SEP-973)* add support for icons and websiteUrl across relevant types ([#432]https://github.com/modelcontextprotocol/rust-sdk/pull/432)
- implement context-aware completion (MCP 2025-06-18) ([#396]https://github.com/modelcontextprotocol/rust-sdk/pull/396)
- add `title` field for data types ([#410]https://github.com/modelcontextprotocol/rust-sdk/pull/410)

### Fixed

- crates/rmcp/src/handler/client/progress.rs XXXXXX -> dispatcher ([#429]https://github.com/modelcontextprotocol/rust-sdk/pull/429)
- build issue due to missing struct field ([#427]https://github.com/modelcontextprotocol/rust-sdk/pull/427)
- generate simple {} schema for tools with no parameters ([#425]https://github.com/modelcontextprotocol/rust-sdk/pull/425)

### Other

- Skip notification in initialization handshake ([#421]https://github.com/modelcontextprotocol/rust-sdk/pull/421)
- add nvim-mcp project built by rmcp ([#422]https://github.com/modelcontextprotocol/rust-sdk/pull/422)

## [0.6.3]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.6.2...rmcp-v0.6.3 - 2025-09-04

### Fixed

- change JSON-RPC request ID type from u32 to i64 ([#416]https://github.com/modelcontextprotocol/rust-sdk/pull/416)

## [0.6.2]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.6.1...rmcp-v0.6.2 - 2025-09-04

### Added

- *(rmcp)* add optional _meta to CallToolResult, EmbeddedResource, and ResourceContents ([#386]https://github.com/modelcontextprotocol/rust-sdk/pull/386)

### Fixed

- resolve compatibility issues with servers sending LSP notifications ([#413]https://github.com/modelcontextprotocol/rust-sdk/pull/413)
- remove batched json rpc  support ([#408]https://github.com/modelcontextprotocol/rust-sdk/pull/408)
- transport-streamable-http-server depends on transport-worker ([#405]https://github.com/modelcontextprotocol/rust-sdk/pull/405)
- *(typo)* correct typo in error message for transport cancellation and field. ([#404]https://github.com/modelcontextprotocol/rust-sdk/pull/404)

### Other

- Spec conformance: meta support and spec updates ([#415]https://github.com/modelcontextprotocol/rust-sdk/pull/415)
- add the rmcp-openapi and rmcp-actix-web related projects ([#406]https://github.com/modelcontextprotocol/rust-sdk/pull/406)

## [0.6.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.6.0...rmcp-v0.6.1 - 2025-08-29

### Added

- *(rmcp)* add authorization header support for the streamable http client ([#390]https://github.com/modelcontextprotocol/rust-sdk/pull/390)
- *(model)* add helpers to build enum from concrete values ([#393]https://github.com/modelcontextprotocol/rust-sdk/pull/393)
- *(model)* expose client method name ([#391]https://github.com/modelcontextprotocol/rust-sdk/pull/391)
- add resource_link support to tools and prompts ([#381]https://github.com/modelcontextprotocol/rust-sdk/pull/381)
- Add prompt support ([#351]https://github.com/modelcontextprotocol/rust-sdk/pull/351)
- include reqwest in transport-streamble-http-client feature ([#376]https://github.com/modelcontextprotocol/rust-sdk/pull/376)

### Fixed

- *(auth)* url parse is not correct ([#402]https://github.com/modelcontextprotocol/rust-sdk/pull/402)
- *(readme)* missing use declarations, more accurate server instructions ([#399]https://github.com/modelcontextprotocol/rust-sdk/pull/399)
- enhance transport graceful shutdown with proper writer closure ([#392]https://github.com/modelcontextprotocol/rust-sdk/pull/392)

### Other

- simplify remove_route method signature ([#401]https://github.com/modelcontextprotocol/rust-sdk/pull/401)

## [0.6.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.5.0...rmcp-v0.6.0 - 2025-08-19

### Added

- Add MCP Elicitation support ([#332]https://github.com/modelcontextprotocol/rust-sdk/pull/332)
- keep internal error in worker's quit reason ([#372]https://github.com/modelcontextprotocol/rust-sdk/pull/372)

### Fixed

- match shape of the calltoolresult schema ([#377]https://github.com/modelcontextprotocol/rust-sdk/pull/377)
- make stdio shutdown more graceful ([#364]https://github.com/modelcontextprotocol/rust-sdk/pull/364)
- *(tool)* remove unnecessary schema validation ([#375]https://github.com/modelcontextprotocol/rust-sdk/pull/375)
- *(rmcp)* return serialized json with structured content ([#368]https://github.com/modelcontextprotocol/rust-sdk/pull/368)

### Other

- add related project rustfs-mcp ([#378]https://github.com/modelcontextprotocol/rust-sdk/pull/378)
- *(streamable)* add document for extracting http info ([#373]https://github.com/modelcontextprotocol/rust-sdk/pull/373)

## [0.5.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.4.1...rmcp-v0.5.0 - 2025-08-07

### Fixed

- correct numeric types in progress notifications ([#361]https://github.com/modelcontextprotocol/rust-sdk/pull/361)

## [0.4.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.4.0...rmcp-v0.4.1 - 2025-08-07

### Fixed

- *(rmcp)* allow both content and structured content ([#359]https://github.com/modelcontextprotocol/rust-sdk/pull/359)

## [0.4.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.3.2...rmcp-v0.4.0 - 2025-08-05

### Added

- [**breaking**] Add support for `Tool.outputSchema` and `CallToolResult.structuredContent` ([#316]https://github.com/modelcontextprotocol/rust-sdk/pull/316)

### Fixed

- don't wrap errors in streamable http auth client ([#353]https://github.com/modelcontextprotocol/rust-sdk/pull/353)
- *(prompt)* remove unused code ([#343]https://github.com/modelcontextprotocol/rust-sdk/pull/343)

## [0.3.2]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.3.1...rmcp-v0.3.2 - 2025-07-30

### Fixed

- *(capabilities)* do not serialize None as null for `list_changed` ([#341]https://github.com/modelcontextprotocol/rust-sdk/pull/341)
- *(Transport)* close oneshot transport on error ([#340]https://github.com/modelcontextprotocol/rust-sdk/pull/340)
- *(oauth)* expose OAuthTokenResponse publicly ([#335]https://github.com/modelcontextprotocol/rust-sdk/pull/335)

## [0.3.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.3.0...rmcp-v0.3.1 - 2025-07-29

### Fixed

- use mimeType instead of mime_type for MCP specification compliance ([#339]https://github.com/modelcontextprotocol/rust-sdk/pull/339)
- return a 405 for GET and DELETE if stateful_mode=false ([#331]https://github.com/modelcontextprotocol/rust-sdk/pull/331)
- propagate tracing spans when spawning new tokio tasks ([#334]https://github.com/modelcontextprotocol/rust-sdk/pull/334)
- Explicitly added client_id as an extra parameter causes bad token requests ([#322]https://github.com/modelcontextprotocol/rust-sdk/pull/322)

### Other

- Fix formatting in crate descriptions in README.md ([#333]https://github.com/modelcontextprotocol/rust-sdk/pull/333)

## [0.3.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.2.1...rmcp-v0.3.0 - 2025-07-15

### Added

- unified error type ([#308]https://github.com/modelcontextprotocol/rust-sdk/pull/308)
- *(transport)* add builder & expose child stderr ([#305]https://github.com/modelcontextprotocol/rust-sdk/pull/305)

### Other

- *(deps)* update schemars requirement from 0.8 to 1.0 ([#258]https://github.com/modelcontextprotocol/rust-sdk/pull/258)
- *(rmcp)* bump rmcp-macros version to match ([#311]https://github.com/modelcontextprotocol/rust-sdk/pull/311)
- fix packages used for server example ([#309]https://github.com/modelcontextprotocol/rust-sdk/pull/309)

## [0.2.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.2.0...rmcp-v0.2.1 - 2025-07-03

### Other

- *(docs)* Minor README updates ([#301]https://github.com/modelcontextprotocol/rust-sdk/pull/301)

## [0.2.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v0.1.5...rmcp-v0.2.0 - 2025-07-02

### Added

- mark boxed http body as sync ([#291]https://github.com/modelcontextprotocol/rust-sdk/pull/291)
- add progress notification handling and related structures ([#282]https://github.com/modelcontextprotocol/rust-sdk/pull/282)
- allow failable service creation in streamable HTTP tower service ([#244]https://github.com/modelcontextprotocol/rust-sdk/pull/244)
- provide more context information ([#236]https://github.com/modelcontextprotocol/rust-sdk/pull/236)
- stateless mode of streamable http client ([#233]https://github.com/modelcontextprotocol/rust-sdk/pull/233)
- add cancellation_token method to `RunningService` ([#218]https://github.com/modelcontextprotocol/rust-sdk/pull/218)
- better http server support ([#199]https://github.com/modelcontextprotocol/rust-sdk/pull/199)
- throw initialize error detail ([#192]https://github.com/modelcontextprotocol/rust-sdk/pull/192)
- sse client optionally skip the endpoint event ([#187]https://github.com/modelcontextprotocol/rust-sdk/pull/187)
- *(server)* add annotation to tool macro ([#184]https://github.com/modelcontextprotocol/rust-sdk/pull/184)
- *(model)* add json schema generation support for all model types ([#176]https://github.com/modelcontextprotocol/rust-sdk/pull/176)
- *(openapi)* add OpenAPI v3 compatibility and test for nullable field schema workaround ([#135]https://github.com/modelcontextprotocol/rust-sdk/pull/135) ([#137]https://github.com/modelcontextprotocol/rust-sdk/pull/137)
- *(extension)* extract http request part into rmcp extension ([#163]https://github.com/modelcontextprotocol/rust-sdk/pull/163)
- *(transport)* support streamable http server ([#152]https://github.com/modelcontextprotocol/rust-sdk/pull/152)
- *(oauth)* fixes + cache client credentials ([#157]https://github.com/modelcontextprotocol/rust-sdk/pull/157)
- allow use of reqwest without ring provider ([#155]https://github.com/modelcontextprotocol/rust-sdk/pull/155)
- extensions to context ([#102]https://github.com/modelcontextprotocol/rust-sdk/pull/102)
- revision-2025-03-26 without streamable http ([#84]https://github.com/modelcontextprotocol/rust-sdk/pull/84)
- *(tool)* allow tool call return a serializable value in json format ([#75]https://github.com/modelcontextprotocol/rust-sdk/pull/75) ([#78]https://github.com/modelcontextprotocol/rust-sdk/pull/78)
- Sse server auto ping ([#74]https://github.com/modelcontextprotocol/rust-sdk/pull/74)
- *(transport)* Sse client transport trait ([#67]https://github.com/modelcontextprotocol/rust-sdk/pull/67)

### Fixed

- let users decide what to wrap in child process command ([#279]https://github.com/modelcontextprotocol/rust-sdk/pull/279)
- cancellable initialization process ([#280]https://github.com/modelcontextprotocol/rust-sdk/pull/280)
- inject part into extension when handing init req ([#275]https://github.com/modelcontextprotocol/rust-sdk/pull/275)
- streamable http server close request channel on response([#266]https://github.com/modelcontextprotocol/rust-sdk/pull/266) ([#270]https://github.com/modelcontextprotocol/rust-sdk/pull/270)
- streamable http client close on response ([#268]https://github.com/modelcontextprotocol/rust-sdk/pull/268)
- expose TokioChildWrapper::id() in TokioChildProcess and TokioChildProcessOut ([#254]https://github.com/modelcontextprotocol/rust-sdk/pull/254)
- add compatibility handling for non-standard notifications in async_rw ([#247]https://github.com/modelcontextprotocol/rust-sdk/pull/247)
- allow SSE server router to be nested ([#240]https://github.com/modelcontextprotocol/rust-sdk/pull/240)
- error for status in post method of streamable http client ([#238]https://github.com/modelcontextprotocol/rust-sdk/pull/238)
- disable wasmbind in chrono for wasm32-unknown-unknown ([#234]https://github.com/modelcontextprotocol/rust-sdk/pull/234)
- *(examples)* add clients in examples's readme ([#225]https://github.com/modelcontextprotocol/rust-sdk/pull/225)
- generic ServerHandler ([#223]https://github.com/modelcontextprotocol/rust-sdk/pull/223)
- comment error ([#215]https://github.com/modelcontextprotocol/rust-sdk/pull/215)
- resolve the server 406 error in API calls ([#203]https://github.com/modelcontextprotocol/rust-sdk/pull/203)
- sse endpoint build follow js's `new URL(url, base)` ([#197]https://github.com/modelcontextprotocol/rust-sdk/pull/197)
- more friendly interface to get service error ([#190]https://github.com/modelcontextprotocol/rust-sdk/pull/190)
- cleanup zombie processes for child process client ([#156]https://github.com/modelcontextprotocol/rust-sdk/pull/156)
- *(schemar)* use self-defined settings ([#180]https://github.com/modelcontextprotocol/rust-sdk/pull/180)
- *(transport-sse-server)* cleanup on connection drop ([#165]https://github.com/modelcontextprotocol/rust-sdk/pull/165)
- *(test)* skip serialize tool's annotation if empty ([#160]https://github.com/modelcontextprotocol/rust-sdk/pull/160)
- fix resource leak ([#136]https://github.com/modelcontextprotocol/rust-sdk/pull/136)
- *(handler)* do call handler methods when initialize server ([#118]https://github.com/modelcontextprotocol/rust-sdk/pull/118)
- *(server)* schemars compilation errors ([#104]https://github.com/modelcontextprotocol/rust-sdk/pull/104)
- *(test)* fix test introduced by #97 ([#101]https://github.com/modelcontextprotocol/rust-sdk/pull/101)
- *(macro)* add generics marco types support ([#98]https://github.com/modelcontextprotocol/rust-sdk/pull/98)
- *(typo)* nit language corrections ([#90]https://github.com/modelcontextprotocol/rust-sdk/pull/90)
- *(typo)* s/marcos/macros/ ([#85]https://github.com/modelcontextprotocol/rust-sdk/pull/85)
- *(client)* add error enum while deal client info ([#76]https://github.com/modelcontextprotocol/rust-sdk/pull/76)
- *(notification)* fix wrongly error report in notification ([#70]https://github.com/modelcontextprotocol/rust-sdk/pull/70)
- *(test)* fix tool deserialization error ([#68]https://github.com/modelcontextprotocol/rust-sdk/pull/68)
- *(server)* add error enum while deal server info ([#51]https://github.com/modelcontextprotocol/rust-sdk/pull/51)

### Other

- add simpling example and test ([#289]https://github.com/modelcontextprotocol/rust-sdk/pull/289)
- add update for test_message_schema ([#286]https://github.com/modelcontextprotocol/rust-sdk/pull/286)
- add notion clear in model.rs ([#284]https://github.com/modelcontextprotocol/rust-sdk/pull/284)
- cov settings, and fix several building warnings ([#281]https://github.com/modelcontextprotocol/rust-sdk/pull/281)
- refactor tool macros and router implementation ([#261]https://github.com/modelcontextprotocol/rust-sdk/pull/261)
- fix regression in URL joining ([#265]https://github.com/modelcontextprotocol/rust-sdk/pull/265)
- remove erroneous definitions_path  ([#264]https://github.com/modelcontextprotocol/rust-sdk/pull/264)
- allow using a TokioCommandWrap for TokioChildProcess::new closes #243 ([#245]https://github.com/modelcontextprotocol/rust-sdk/pull/245)
- Fix typo ([#249]https://github.com/modelcontextprotocol/rust-sdk/pull/249)
- provide http server as tower service ([#228]https://github.com/modelcontextprotocol/rust-sdk/pull/228)
- *(deps)* update sse-stream requirement from 0.1.4 to 0.2.0 ([#230]https://github.com/modelcontextprotocol/rust-sdk/pull/230)
- Server info is only retrieved once during initialization ([#214]https://github.com/modelcontextprotocol/rust-sdk/pull/214)
- *(deps)* update base64 requirement from 0.21 to 0.22 ([#209]https://github.com/modelcontextprotocol/rust-sdk/pull/209)
- revert badge ([#202]https://github.com/modelcontextprotocol/rust-sdk/pull/202)
- use hierarchical readme for publishing ([#198]https://github.com/modelcontextprotocol/rust-sdk/pull/198)
- Ci/coverage badge ([#191]https://github.com/modelcontextprotocol/rust-sdk/pull/191)
- fix error introduced by merge, and reorganize feature ([#185]https://github.com/modelcontextprotocol/rust-sdk/pull/185)
- Transport trait and worker transport, and streamable http client with those new features. ([#167]https://github.com/modelcontextprotocol/rust-sdk/pull/167)
- add oauth2 support ([#130]https://github.com/modelcontextprotocol/rust-sdk/pull/130)
- remove un-used tower.rs ([#125]https://github.com/modelcontextprotocol/rust-sdk/pull/125)
- update calculator example description ([#115]https://github.com/modelcontextprotocol/rust-sdk/pull/115)
- fix the url ([#120]https://github.com/modelcontextprotocol/rust-sdk/pull/120)
- add a simple chat client for example ([#119]https://github.com/modelcontextprotocol/rust-sdk/pull/119)
- add an overview to `rmcp/src/lib.rs` ([#116]https://github.com/modelcontextprotocol/rust-sdk/pull/116)
- *(context)* test context request handling and refactor for reusable client-server tests ([#97]https://github.com/modelcontextprotocol/rust-sdk/pull/97)
- *(logging)* Add tests for logging  ([#96]https://github.com/modelcontextprotocol/rust-sdk/pull/96)
- Adopt Devcontainer for Development Environment ([#81]https://github.com/modelcontextprotocol/rust-sdk/pull/81)
- fix typos ([#79]https://github.com/modelcontextprotocol/rust-sdk/pull/79)
- format and fix typo ([#72]https://github.com/modelcontextprotocol/rust-sdk/pull/72)
- add documentation generation job ([#59]https://github.com/modelcontextprotocol/rust-sdk/pull/59)
- add test with js server ([#65]https://github.com/modelcontextprotocol/rust-sdk/pull/65)
- fmt the project ([#54]https://github.com/modelcontextprotocol/rust-sdk/pull/54)
- *(sse_server)* separate router and server startup ([#52]https://github.com/modelcontextprotocol/rust-sdk/pull/52)
- fix broken link ([#53]https://github.com/modelcontextprotocol/rust-sdk/pull/53)
- fix the branch name for git dependency ([#46]https://github.com/modelcontextprotocol/rust-sdk/pull/46)
- Move whole rmcp crate to official rust sdk ([#44]https://github.com/modelcontextprotocol/rust-sdk/pull/44)
- Initial commit