rust-sdk/crates/rmcp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jack Amadeo e903341136
chore: refactor OAuth client authorization api (#1009)
* refactor!: refactor OAuth client authorization api

`OAuthState::start_authorization` now accepts a declarative `AuthorizationRequest`
describing the client's available identity material and selects the highest-priority
mechanism the server supports: pre-registered client information → Client ID
Metadata Documents (SEP-991) → Dynamic Client Registration.

This replaces the three mechanism-specific entry points (`start_authorization`,
`start_authorization_with_metadata_url`, `start_authorization_with_preregistered_client`),
where callers previously had to know which mechanism to pick. `AuthorizationSession::new`
is consolidated the same way, and the failure-recovery pattern from #994 (returning the
manager alongside the error so `OAuthState` recovers to `Unauthorized` on transient failures)
is now applied across all registration paths. Includes new `RecordingOAuthHttpClient`-based
tests covering the priority matrix and recovery semantics, plus updated docs, examples, and
conformance client.

* fix: dcr registration uses requested application type

* fix: error for invalid combination
2026-07-23 14:13:11 -04:00
..
src chore: refactor OAuth client authorization api (#1009) 2026-07-23 14:13:11 -04:00
tests feat: route SEP-2260 associated server requests to the originating SSE stream (#1029) 2026-07-23 13:12:20 -04:00
build.rs chore: add pre-commit hook for conventional commit verification (#619) 2026-01-14 16:01:28 -05:00
Cargo.toml feat: route SEP-2260 associated server requests to the originating SSE stream (#1029) 2026-07-23 13:12:20 -04:00
CHANGELOG.md fix(server): serve draft-version requests statelessly per SEP-2567 (#999) 2026-07-20 14:51:50 -04:00
README.md docs: update for 2026-07-28 version (#1032) 2026-07-23 13:55:40 -04:00

rmcp

Crates.io Documentation

The official Rust SDK for the Model Context Protocol. Build MCP servers that expose tools, resources, and prompts to AI assistants — or build clients that connect to them.

For getting started, usage guides, and full MCP feature documentation (resources, prompts, sampling, roots, logging, completions, subscriptions, etc.), see the main README.

Feature Flags

Feature Description Default
server Server functionality and the tool system ✅
client Client functionality
macros #[tool] / #[prompt] macros (re-exports rmcp-macros) ✅
schemars JSON Schema generation for tool definitions
auth OAuth 2.0 authentication support
elicitation Elicitation support

Transport features

Feature Description
transport-io Server-side stdio transport
transport-child-process Client-side stdio transport (spawns a child process)
transport-async-rw Generic async read/write transport
transport-streamable-http-client Streamable HTTP client (transport-agnostic)
transport-streamable-http-client-reqwest Streamable HTTP client with default reqwest backend
transport-streamable-http-server Streamable HTTP server transport

TLS backend options (for HTTP transports)

Feature Description
reqwest Uses rustls — pure Rust TLS (recommended default)
reqwest-native-tls Uses platform-native TLS (OpenSSL / Secure Transport / SChannel)
reqwest-tls-no-provider Uses rustls without a default crypto provider (bring your own)

Transports

The transport layer is pluggable. Two built-in pairs cover the most common cases:

Client Server
stdio TokioChildProcess stdio
Streamable HTTP StreamableHttpClientTransport StreamableHttpService

Any type that implements the Transport trait can be used. The IntoTransport helper trait provides automatic conversions from:

  1. (Sink, Stream) or a combined Sink + Stream
  2. (AsyncRead, AsyncWrite) or a combined AsyncRead + AsyncWrite
  3. A Worker implementation
  4. A Transport implementation directly

License

This project is licensed under the terms specified in the repository's LICENSE file.