modelcontextprotocol/rust-sdk
The official Rust SDK for the Model Context Protocol
RMCP – Rust Model Context Protocol SDK
소개
- AI 에이전트(클라이언트)와 AI 기반 서비스(서버) 간의 통신을 위한 사양인 Model Context Protocol (MCP)의 공식 Rust 구현체입니다.
- Tokio 비동기 런타임에서 실행되는 클라이언트 및 서버 라이브러리를 제공합니다.
- tools, prompts, resources, subscriptions 및 기타 MCP 기능을 위한 보일러플레이트를 생성하는 프로시저럴 매크로 크레이트(
rmcp-macros)를 포함합니다.
주요 기능 (2026‑07‑28 사양 기준)
- 서버 검색 및 버전 협상 – 클라이언트는 요청을 보내기 전에 서버가 지원하는 프로토콜 버전과 기능을 검색할 수 있습니다.
- 전송 독립적 구독 – 장기 실행 업데이트 스트림(리소스 변경, 알림 등)이 모든 전송 계층(stdio, child‑process, HTTP 등)에서 작동합니다.
- 다중 왕복 요청 – 단일 논리적 요청이 여러 번의 메시지 왕복을 포함할 수 있습니다.
- 응답 캐싱 – 중복 작업을 방지하기 위한 캐시된 응답 지원이 내장되어 있습니다.
- 표준 HTTP 라우팅 헤더 – MCP 메시지는 라우팅, 인증 등을 위해 HTTP 스타일의 헤더를 포함할 수 있습니다.
- 도구, 프롬프트, 리소스 – 호출 가능한 함수, 재사용 가능한 메시지 템플릿 및 데이터 블록을 위한 일급 추상화이며, 모두 JSON‑Schema 2020‑12로 설명됩니다.
- OAuth 지원 – SDK는 요청에 OAuth 토큰을 첨부할 수 있습니다.
일반적인 사용 사례
- 표준 프로토콜을 통해 원격 도구(계산기, 이미지 생성기 등)를 호출하는 AI 에이전트 구축.
- LLM 기반 서비스(코드 리뷰어, 요약 도구 등)를 MCP 서버로 노출하여 모든 클라이언트가 검색하고 호출할 수 있도록 함.
- 리소스(파일, DB 행)가 MCP를 통해 제공되고 클라이언트 측에서 캐시되는 RAG 파이프라인 구현.
- 타사 개발자가 자동 검색 가능한 도구 크레이트를 게시할 수 있는 플러그 앤 플레이 도구 생태계 조성.
시작하기
# 핵심 크레이트(서버 기능 포함)를 Cargo.toml에 추가
cargo add rmcp --features server
또는 GitHub에서 최신 개발 버전을 직접 가져옵니다:
cargo add rmcp --features server \
--git https://github.com/modelcontextprotocol/rust-sdk --branch main
최소 클라이언트 예제
use rmcp::{ServiceExt, transport::TokioChildProcess, ConfigureCommandExt};
use tokio::process::Command;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 서버 프로세스 실행 (여기서는 참조 서버를 구현하는 npm 패키지 사용)
let client = ().serve(
TokioChildProcess::new(Command::new("npx").configure(|cmd| {
cmd.arg("-y").arg("@modelcontextprotocol/server-everything");
}))
)?.await?;
// 요청 예제 – 서버의 루트 목록 가져오기
let roots = client.list_roots().await?;
println!("Roots: {:?}", roots);
Ok(())
}
최소 서버 예제 (간단한 계산기)
use rmcp::{tool, tool_router, ServiceExt, transport::stdio};
use serde::Deserialize;
#[derive(Debug, Deserialize, schemars::JsonSchema)]
struct AddParams { a: i32, b: i32 }
#[tool_router(server_handler)]
struct Calculator;
impl Calculator {
#[tool(description = "Add two numbers")]
fn add(&self, params: rmcp::handler::server::wrapper::Parameters<AddParams>) -> String {
(params.0.a + params.0.b).to_string()
}
}
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let service = Calculator.serve(stdio()).await?;
service.waiting().await?;
Ok(())
}
매크로는 도구 매개변수에 대한 JSON‑Schema를 자동으로 생성하고 RPC 라우팅을 자동으로 연결합니다.
프로젝트 구조
crates/rmcp– 핵심 프로토콜 구현, 클라이언트 및 서버 런타임, 모델, 전송 계층.crates/rmcp-macros– 보일러플레이트를 줄여주는 프로시저럴 매크로 (#[tool],#[prompt],#[resource]등).examples/– 서버(계산기, 카운터) 및 클라이언트(stdio를 통한 모든 것)를 위한 실행 가능한 데모.
성숙도 및 생태계
- crates.io(
rmcp크레이트)에 게시되어 있으며 자동화된 테스트를 나타내는 CI 배지가 포함되어 있습니다. - 안정적인 MCP 사양(2026‑07‑28)을 구현하면서 2025‑11‑25 버전과의 하위 호환성을 유지합니다.
- 문서는 docs.rs에서 호스팅되며, 전체 MCP 사양은
modelcontextprotocol.io에서 확인할 수 있습니다. - 새로운 사양 버전으로의 마이그레이션에 대한 커뮤니티 논의는 GitHub 토론 링크를 통해 제공됩니다.
더 알아보기
- 사양: https://modelcontextprotocol.io/specification/2026-07-28
- 크레이트 문서: https://docs.rs/rmcp/latest/rmcp
- GitHub 저장소: https://github.com/modelcontextprotocol/rust-sdk
- 마이그레이션 가이드: https://github.com/modelcontextprotocol/rust-sdk/discussions/969
이 SDK는 Model Context Protocol을 따르는 AI 에이전트 통신 서비스를 구축하기 위한 진정한 프로덕션급 Rust 라이브러리입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트