An official Rust Model Context Protocol SDK implementation with tokio async runtime.
This repository contains the following crates:
rmcp = { version = "0.2.0", features = ["server"] } ## or dev channel rmcp = { git = "https://github.com/modelcontextprotocol/rust-sdk", branch = "main" }
Basic dependencies:
Start a clientuse 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 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?;
See examples
See oauth_support for details.
See docs/CONTRIBUTE.MD to get some tips for contributing.
If you want to use dev container, see docs/DEVCONTAINER.md for instructions on using Dev Container for development.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4