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ライブラリです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト