Mirror of https://github.com/modelcontextprotocol/rust-sdk — The official Rust SDK for the Model Context Protocol
  • Rust 99.2%
  • Shell 0.5%
  • JavaScript 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
z9rtm 5bbfcccfba
ci: add example-test workflow for testing and building examples (#211)
This workflow sets up a new CI job to handle testing and building of example projects in the repository. It includes setting up Node.js, Rust, Python, and necessary caching to ensure proper environment preparation. Example directories are iterated to run tests and builds for each valid Cargo project.

Co-authored-by: GCOV Github Badge <build@github.com>
2025-05-22 11:35:29 +08:00
.devcontainer Adopt Devcontainer for Development Environment (#81) 2025-04-02 12:16:49 +08:00
.github ci: add example-test workflow for testing and building examples (#211) 2025-05-22 11:35:29 +08:00
crates chore(deps): update base64 requirement from 0.21 to 0.22 (#209) 2025-05-21 11:17:56 +08:00
docs ci: revert badge (#202) 2025-05-21 09:19:25 +08:00
examples ci: add example-test workflow for testing and building examples (#211) 2025-05-22 11:35:29 +08:00
.gitignore Initial commit 2025-02-18 10:55:26 +00:00
Cargo.toml fix(test): fix tool deserialization error (#68) 2025-03-31 13:05:35 +08:00
clippy.toml feat: add clippy config (#162) 2025-05-08 10:15:17 +08:00
LICENSE Initial commit 2025-02-18 10:55:26 +00:00
README.md ci: revert badge (#202) 2025-05-21 09:19:25 +08:00
rust-toolchain.toml Move whole rmcp crate to offcial rust sdk (#44) 2025-03-27 17:33:41 -04:00
rustfmt.toml style: fmt the project (#54) 2025-03-28 23:50:46 +08:00

RMCP

Wait for the first release.

Coverage

An official rust Model Context Protocol SDK implementation with tokio async runtime.

This repository contains the following crates:

  • rmcp: The core crate providing the RMCP protocol implementation( If you want to get more information, please visit rmcp)
  • rmcp-macros: A procedural macro crate for generating RMCP tool implementations(If you want to get more information, please visit rmcp-macros)

Usage

Import the crate

rmcp = { version = "0.1", features = ["server"] }
## or dev channel
rmcp = { git = "https://github.com/modelcontextprotocol/rust-sdk", branch = "main" }

Third Dependencies

Basic dependencies:

Build a Client

Start a client
use rmcp::{ServiceExt, transport::{TokioChildProcess, ConfigureCommandExt}};
use tokio::process::Command;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ().serve(TokioChildProcess::new(Command::new("npx").configure(|cmd| {
        cmd.arg("-y").arg("@modelcontextprotocol/server-everything");
    }))?).await?;
    Ok(())
}

Build a Server

Build a transport
use tokio::io::{stdin, stdout};
let transport = (stdin(), stdout());
Build a service

You can easily build a service by using ServerHandler or ClientHandler.

let service = common::counter::Counter::new();
Start the server
// this call will finish the initialization process
let server = service.serve(transport).await?;
Interact with the server

Once the server is initialized, you can send requests or notifications:

// request
let roots = server.list_roots().await?;

// or send notification
server.notify_cancelled(...).await?;
Waiting for service shutdown
let quit_reason = server.waiting().await?;
// or cancel it
let quit_reason = server.cancel().await?;

Examples

See examples

OAuth Support

See oauth_support for details.

Development with Dev Container

See docs/DEVCONTAINER.md for instructions on using Dev Container for development.