RMCP Quickstart
rmcpでMCPサーバーを構築
MCPサーバーを作成するには、複数のトランスポートオプションとツールパターンを備えた複雑なプロトコルを理解する必要があります。このスキルでは、本番環境対応のMCPサーバーを構築するための、明確なRustコード例、トランスポート設定、テスト戦略を含むクイックスタートガイドを提供します。
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“RMCP Quickstart”。 Help me create my first rmcp server
预期结果:
- I'll guide you through building your first MCP server with rmcp. Let's start:
- 1. Create a new Rust project
- 2. Add rmcp dependencies to Cargo.toml
- 3. Define your service struct with the #[tool] macro
- 4. Create a stdio transport
- 5. Run and test your server
- Here's the basic pattern:
- ```rust
- #[tool(tool_box)]
- struct MyService;
- #[tool(tool_box)]
- impl MyService {
- #[tool(description = "Say hello")]
- async fn greet(&self, name: String) -> String {
- format!("Hello, {}!", name)
- }
- }
- #[tokio::main]
- async fn main() -> Result<(), Box<dyn std::error::Error>> {
- let service = MyService;
- let transport = stdio_transport();
- service.serve(transport).await?;
- Ok(())
- }
- ```
正在使用“RMCP Quickstart”。 How do I handle errors in rmcp?
预期结果:
- Use thiserror to define error types, then return Result from your tools:
- ```rust
- use thiserror::Error;
- #[derive(Debug, Error)]
- enum MyError {
- #[error("Not found: {0}")]
- NotFound(String),
- #[error("Invalid input: {0}")]
- InvalidInput(String),
- }
- #[tool(tool_box)]
- impl MyService {
- async fn fetch(&self, id: String) -> Result<String, MyError> {
- if id.is_empty() {
- return Err(MyError::InvalidInput("ID cannot be empty".into()));
- }
- Ok("Item data".to_string())
- }
- }
- ```
安全审计
安全All static findings are false positives. The scanner misidentified markdown code block backticks as Ruby/shell execution (52 locations). Documentation URLs and example code snippets are not actual network requests or command execution. No malicious patterns present. This is legitimate MCP documentation.
检测到的模式
质量评分
你能构建什么
最初のMCPサーバーを構築
MCPが初めてですか?プロジェクトセットアップから、動作するツールと適切なエラー処理を備えた最初のサーバーを実行するまで、ステップバイステップのガイダンスを受けられます。
高度なツールパターンを追加
非同期ツール、複雑なパラメータタイプ、本番MCPサーバー用の適切なエラー処理を持つステートフルサービスの作成を学びます。
トランスポートの選択と設定
stdio、SSE、HTTPトランスポートの違いを理解します。デプロイニーズに基づいて、各トランスポートをいつ使用するかについてのガイダンスを受けられます。
试试这些提示
rmcpクレートを使用してRustでMCPサーバーを構築したい。MCPとは何か、主なコンポーネントとは何か、そして挨拶ツールを持つシンプルなサーバーを作成する手順を教えてください。
基本的なrmcpサーバーが動作しています。オプションフィールドとネストされたオブジェクトを含む複雑なパラメータを持つ المزيدのツールを追加したい。#[tool(aggr)]の使用パターンとエラー処理の実装を教えてください。
MCPサーバーをクラウドにデプロイする必要があります。SSEとHTTPトランスポートの違いを説明し、それぞれのコード例を示し、マルチユーザー本番環境に適したオプションを選択するの手伝いをしてください。
MCPサーバーのツールがClaudeに表示されません。デバッグを手伝ってください:#[tool]マクロの使用確認、tool_boxの配置検証、サーバーが正しく動作していることを検証するための統合テストの作成を手伝ってください。
最佳实践
- AIアシスタントが各ツールの機能を理解できるよう、#[tool]マクロに必ず明確な説明を含めてください
- ツール関数を非同期にし、mainで適切なtokioランタイム設定をしてください
- クラウドトランスポートにデプロイする前に、stdioトランスポートでローカルでサーバーをテストしてください
避免
- ツール関数で#[tool(description = "...")]を忘れると、ツールがAIアシスタントに表示されなくなります
- 非同期でないツール関数は 런타임時に失敗します。すべてのツールは非同期である必要があります
- 複雑なパラメータを#[tool(aggr)]なしで使用すると、逆シリアル化エラーが発生します