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 토론 링크를 통해 제공됩니다.

더 알아보기


이 SDK는 Model Context Protocol을 따르는 AI 에이전트 통신 서비스를 구축하기 위한 진정한 프로덕션급 Rust 라이브러리입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트