rmcp 3.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
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
# 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]

## [3.2.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.1.4...rmcp-v3.2.0 - 2026-08-31

### Added

- *(auth)* coordinate OAuth refreshes through credential stores ([#1232]https://github.com/modelcontextprotocol/rust-sdk/pull/1232)
- add request-state key rotation ([#1128]https://github.com/modelcontextprotocol/rust-sdk/pull/1128)

### Fixed

- keep initialize on legacy protocol versions ([#1228]https://github.com/modelcontextprotocol/rust-sdk/pull/1228)
- *(transport)* fall back after sessionless HTTP discover rejections ([#1211]https://github.com/modelcontextprotocol/rust-sdk/pull/1211)
- allow concurrent streamable http requests ([#1186]https://github.com/modelcontextprotocol/rust-sdk/pull/1186)

## [3.1.4]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.1.3...rmcp-v3.1.4 - 2026-08-18

### Fixed

- *(rmcp)* preserve elicitation requestedSchema $schema dialect ([#1176]https://github.com/modelcontextprotocol/rust-sdk/pull/1176)
- harden signing key handling ([#1166]https://github.com/modelcontextprotocol/rust-sdk/pull/1166)
- report pre-init metadata errors ([#1160]https://github.com/modelcontextprotocol/rust-sdk/pull/1160)

## [3.1.3]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.1.2...rmcp-v3.1.3 - 2026-08-17

### Fixed

- *(auth)* ignore query parameters when matching resources ([#1177]https://github.com/modelcontextprotocol/rust-sdk/pull/1177)
- *(auth)* retain state until issuer validation ([#1167]https://github.com/modelcontextprotocol/rust-sdk/pull/1167)
- *(model)* preserve elicitation property order metadata ([#1150]https://github.com/modelcontextprotocol/rust-sdk/pull/1150)
- time out auto discovery probe ([#1149]https://github.com/modelcontextprotocol/rust-sdk/pull/1149)
- *(client)* classify discover outcome at source, not at the error type ([#1133]https://github.com/modelcontextprotocol/rust-sdk/pull/1133)

### Other

- Fix typo in to_authorized_http_client doc comment ([#1158]https://github.com/modelcontextprotocol/rust-sdk/pull/1158)

## [3.1.2]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.1.1...rmcp-v3.1.2 - 2026-08-07

### Fixed

- *(auth)* map 401/403 challenges on the SSE GET stream ([#1152]https://github.com/modelcontextprotocol/rust-sdk/pull/1152)
- *(sse)* loop instead of recursing when skipping SSE events ([#1146]https://github.com/modelcontextprotocol/rust-sdk/pull/1146)
- *(auth)* preserve issuer trailing slash during discovery ([#1145]https://github.com/modelcontextprotocol/rust-sdk/pull/1145)

## [3.1.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.1.0...rmcp-v3.1.1 - 2026-08-05

### Fixed

- emit cache hints from handler macros ([#1120]https://github.com/modelcontextprotocol/rust-sdk/pull/1120)
- expose MRTR state to tool handlers ([#1104]https://github.com/modelcontextprotocol/rust-sdk/pull/1104)
- disambiguate input-required results ([#1103]https://github.com/modelcontextprotocol/rust-sdk/pull/1103)

### Other

- make async-trait optional ([#1119]https://github.com/modelcontextprotocol/rust-sdk/pull/1119)

## [3.1.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.0.1...rmcp-v3.1.0 - 2026-07-31

### Added

- classify authorization-required errors ([#1056]https://github.com/modelcontextprotocol/rust-sdk/pull/1056)
- add strict stateless protocol metadata validation ([#1091]https://github.com/modelcontextprotocol/rust-sdk/pull/1091)
- SEP-2260 stream-based enforcement of client receive-side request association ([#1055]https://github.com/modelcontextprotocol/rust-sdk/pull/1055)

### Fixed

- *(model)* decode metadata-bearing input-required results affecting mrtr ([#1097]https://github.com/modelcontextprotocol/rust-sdk/pull/1097)
- require metadata for modern HTTP requests ([#1089]https://github.com/modelcontextprotocol/rust-sdk/pull/1089)
- honor supported_protocol_versions when negotiating initialize ([#1093]https://github.com/modelcontextprotocol/rust-sdk/pull/1093)

### Other

- document the ping utility with examples ([#1106]https://github.com/modelcontextprotocol/rust-sdk/pull/1106)
- complete Tier 1 feature docs and finalize roadmap ([#1101]https://github.com/modelcontextprotocol/rust-sdk/pull/1101)
- *(conformance)* meeting requirements for tier 1 ([#1087]https://github.com/modelcontextprotocol/rust-sdk/pull/1087)

## [3.0.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.0.0...rmcp-v3.0.1 - 2026-07-29

### Fixed

- *(auth)* use discovered resource for token refresh ([#1084]https://github.com/modelcontextprotocol/rust-sdk/pull/1084)
- return header mismatch for missing protocol header ([#1083]https://github.com/modelcontextprotocol/rust-sdk/pull/1083)
- negotiate stateless initialize versions ([#1080]https://github.com/modelcontextprotocol/rust-sdk/pull/1080)
- stamp server info on graceful subscription results ([#1078]https://github.com/modelcontextprotocol/rust-sdk/pull/1078)

## [3.0.0]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.0.0-beta.5...rmcp-v3.0.0 - 2026-07-28

### Fixed

- recognize 2026 MCP methods ([#1076]https://github.com/modelcontextprotocol/rust-sdk/pull/1076)

## [3.0.0-beta.5]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.0.0-beta.4...rmcp-v3.0.0-beta.5 - 2026-07-28

### Fixed

- [**breaking**] remove server_info from DiscoverResult ([#1065]https://github.com/modelcontextprotocol/rust-sdk/pull/1065)
- preserve transient OAuth discovery HTTP errors ([#1071]https://github.com/modelcontextprotocol/rust-sdk/pull/1071)
- [**breaking**] preserve OAuth discovery transport errors ([#1069]https://github.com/modelcontextprotocol/rust-sdk/pull/1069)
- gate client handler bounds for local ([#1068]https://github.com/modelcontextprotocol/rust-sdk/pull/1068)

### Other

- prepare for stable 3.0 release ([#1073]https://github.com/modelcontextprotocol/rust-sdk/pull/1073)
- RFC 9728 resource is used instead of base url when possible ([#962]https://github.com/modelcontextprotocol/rust-sdk/pull/962)
- [**breaking**] remove deprecated v3 APIs ([#1066]https://github.com/modelcontextprotocol/rust-sdk/pull/1066)

## [3.0.0-beta.4]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.0.0-beta.3...rmcp-v3.0.0-beta.4 - 2026-07-28

### Fixed

- accept namespaced discovery server information ([#1044]https://github.com/modelcontextprotocol/rust-sdk/pull/1044)

### Other

- *(deps)* update base64 requirement from 0.22 to 0.23 ([#1059]https://github.com/modelcontextprotocol/rust-sdk/pull/1059)
- *(deps)* update jsonwebtoken requirement from 10 to 11 ([#1058]https://github.com/modelcontextprotocol/rust-sdk/pull/1058)

## [3.0.0-beta.3]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.0.0-beta.2...rmcp-v3.0.0-beta.3 - 2026-07-27

### Fixed

- [**breaking**] reject missing `issuer` in authorization server metadata by default ([#1054]https://github.com/modelcontextprotocol/rust-sdk/pull/1054)
- default to allowing missing `issuer` ([#1051]https://github.com/modelcontextprotocol/rust-sdk/pull/1051)

### Other

- make oauth discovery reactive ([#1052]https://github.com/modelcontextprotocol/rust-sdk/pull/1052)

## [3.0.0-beta.2]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v3.0.0-beta.1...rmcp-v3.0.0-beta.2 - 2026-07-24

### Added

- expose oauth discovery metadata source ([#1041]https://github.com/modelcontextprotocol/rust-sdk/pull/1041)

### Fixed

- [**breaking**] omit resultType for legacy protocol sessions ([#1038]https://github.com/modelcontextprotocol/rust-sdk/pull/1038)

### Other

- declare and check MSRV ([#1034]https://github.com/modelcontextprotocol/rust-sdk/pull/1034)

## [3.0.0-beta.1]https://github.com/modelcontextprotocol/rust-sdk/compare/rmcp-v2.2.0...rmcp-v3.0.0-beta.1 - 2026-07-23

### Added

- route SEP-2260 associated server requests to the originating SSE stream ([#1029]https://github.com/modelcontextprotocol/rust-sdk/pull/1029)
- [**breaking**] add distributed SSE event store ([#1024]https://github.com/modelcontextprotocol/rust-sdk/pull/1024)
- add client-side TTL-honoring response cache (SEP-2549) ([#1025]https://github.com/modelcontextprotocol/rust-sdk/pull/1025)
- [**breaking**] Implement SEP-2663 Tasks Extension ([#1020]https://github.com/modelcontextprotocol/rust-sdk/pull/1020)
- add subscription listen streams (SEP-2575) ([#1000]https://github.com/modelcontextprotocol/rust-sdk/pull/1000)
- *(auth)* bind DCR client credentials to issuing authorization server (SEP-2352) ([#998]https://github.com/modelcontextprotocol/rust-sdk/pull/998)
- add modern client lifecycle modes (SEP-2575) ([#995]https://github.com/modelcontextprotocol/rust-sdk/pull/995)
- *(auth)* accumulate client-side scopes during step-up authorization ([#888]https://github.com/modelcontextprotocol/rust-sdk/pull/888)
- [**breaking**] add server discovery and negotiation (SEP-2575) ([#973]https://github.com/modelcontextprotocol/rust-sdk/pull/973)
- *(conformance)* add SEP-2243 header validation tool ([#997]https://github.com/modelcontextprotocol/rust-sdk/pull/997)
- [**breaking**] align metadata models with draft schema ([#993]https://github.com/modelcontextprotocol/rust-sdk/pull/993)
- [**breaking**] implement SEP-2549 cache hints ([#889]https://github.com/modelcontextprotocol/rust-sdk/pull/889)
- [**breaking**] add MRTR behavior support (SEP-2322) ([#929]https://github.com/modelcontextprotocol/rust-sdk/pull/929)
- [**breaking**] type Annotations.lastModified as a string ([#956]https://github.com/modelcontextprotocol/rust-sdk/pull/956)
- [**breaking**] add SEP-2243 HTTP standard headers ([#907]https://github.com/modelcontextprotocol/rust-sdk/pull/907)
- relax outputSchema to accept non-object JSON Schema types (SEP-2106) ([#895]https://github.com/modelcontextprotocol/rust-sdk/pull/895)
- [**breaking**] relax tool result structuredContent type (SEP-2106) ([#933]https://github.com/modelcontextprotocol/rust-sdk/pull/933)
- [**breaking**] add MRTR model types (SEP-2322) ([#915]https://github.com/modelcontextprotocol/rust-sdk/pull/915)

### Fixed

- reap completed response send tasks ([#1026]https://github.com/modelcontextprotocol/rust-sdk/pull/1026)
- accept stringified numeric response IDs ([#1021]https://github.com/modelcontextprotocol/rust-sdk/pull/1021)
- re-register after auth server change ([#1011]https://github.com/modelcontextprotocol/rust-sdk/pull/1011)
- .with_stateful_mode -> .with_legacy_session_mode ([#1015]https://github.com/modelcontextprotocol/rust-sdk/pull/1015)
- preserve negotiated progress responses ([#1005]https://github.com/modelcontextprotocol/rust-sdk/pull/1005)
- *(server)* serve draft-version requests statelessly per SEP-2567 ([#999]https://github.com/modelcontextprotocol/rust-sdk/pull/999)
- pass client header conformance ([#1012]https://github.com/modelcontextprotocol/rust-sdk/pull/1012)
- *(auth)* add an SDK path for pre-registered OAuth clients ([#994]https://github.com/modelcontextprotocol/rust-sdk/pull/994)
- *(transport)* cancel in-flight request on stateless streamable-HTTP client disconnect ([#857]https://github.com/modelcontextprotocol/rust-sdk/pull/857) ([#967]https://github.com/modelcontextprotocol/rust-sdk/pull/967)
- *(auth)* distinguish rejected refresh tokens from transient failures ([#963]https://github.com/modelcontextprotocol/rust-sdk/pull/963)
- *(auth)* validate discovered metadata issuer ([#996]https://github.com/modelcontextprotocol/rust-sdk/pull/996)
- bound streamable HTTP memory usage ([#970]https://github.com/modelcontextprotocol/rust-sdk/pull/970)
- *(streamable-http)* preserve progress in JSON mode ([#990]https://github.com/modelcontextprotocol/rust-sdk/pull/990)
- specify compatible sse-stream version ([#968]https://github.com/modelcontextprotocol/rust-sdk/pull/968)
- flag schema derive on schemars feature ([#966]https://github.com/modelcontextprotocol/rust-sdk/pull/966)

### Other

- refactor OAuth client authorization api ([#1009]https://github.com/modelcontextprotocol/rust-sdk/pull/1009)
- update for 2026-07-28 version ([#1032]https://github.com/modelcontextprotocol/rust-sdk/pull/1032)
- *(deps)* update hmac requirement from 0.12 to 0.13 ([#988]https://github.com/modelcontextprotocol/rust-sdk/pull/988)
- serialize JavaScript dependency install ([#972]https://github.com/modelcontextprotocol/rust-sdk/pull/972)

### Changed

- **BREAKING**: rename `StreamableHttpServerConfig::stateful_mode` to `legacy_session_mode` (and the builder `with_stateful_mode` to `with_legacy_session_mode`) to clarify that the option only affects legacy protocol versions (`< 2026-07-28`); per SEP-2567 the `2026-07-28` draft version is always served statelessly ([#999]https://github.com/modelcontextprotocol/rust-sdk/pull/999)

### Fixed

- use the authorization server issuer as the default `private_key_jwt` audience

## [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