RMCP Quickstart
Construir servidores MCP con rmcp
La creación de servidores MCP requiere entender un protocolo complejo con múltiples opciones de transporte y patrones de herramientas. Esta skill proporciona una guía de inicio rápido con ejemplos claros de código Rust, configuraciones de transporte y estrategias de prueba para construir servidores MCP listos para producción.
スキルZIPをダウンロード
Claudeでアップロード
設定 → 機能 → スキル → スキルをアップロードへ移動
オンにして利用開始
テストする
「RMCP Quickstart」を使用しています。 Ayúdame a crear mi primer servidor rmcp
期待される結果:
- Te guiaré para construir tu primer servidor MCP con rmcp. Empecemos:
- 1. Crea un nuevo proyecto Rust
- 2. Añade las dependencias de rmcp a Cargo.toml
- 3. Define tu estructura de servicio con la macro #[tool]
- 4. Crea un transporte stdio
- 5. Ejecuta y prueba tu servidor
- Aquí está el patrón básico:
- ```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」を使用しています。 ¿Cómo manejo errores en rmcp?
期待される結果:
- Usa thiserror para definir tipos de errores, luego devuelve Result desde tus herramientas:
- ```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.
検出されたパターン
品質スコア
作れるもの
Construye tu primer servidor MCP
¿Nuevo en MCP? Obtén guía paso a paso desde la configuración del proyecto hasta ejecutar tu primer servidor con herramientas funcionales y manejo correcto de errores.
Añade patrones avanzados de herramientas
Aprende a crear servicios con estado con herramientas asíncronas, tipos de parámetros complejos y manejo correcto de errores para servidores MCP de producción.
Selecciona y configura transportes
Comprende las diferencias entre transportes stdio, SSE y HTTP. Obtén orientación sobre cuándo usar cada uno según tus necesidades de despliegue.
これらのプロンプトを試す
Quiero construir un servidor MCP en Rust usando el crate rmcp. Ayúdame a entender los conceptos básicos: qué es MCP, cuáles son los componentes clave, y guíame paso a paso para crear un servidor simple con una herramienta de saludo.
Tengo un servidor rmcp básico funcionando. Ahora quiero añadir más herramientas con parámetros complejos incluyendo campos opcionales y objetos anidados. Muéstrame el patrón correcto para usar #[tool(aggr)] e implementar manejo de errores.
Necesito desplegar mi servidor MCP para uso en la nube. Explica las diferencias entre transportes SSE y HTTP, muéstrame ejemplos de código para cada uno, y ayúdame a elegir la opción correcta para un entorno de producción multiusuario.
Las herramientas de mi servidor MCP no aparecen en Claude. Guíame para depurar: verifica mi uso de la macro #[tool], проверка placement de tool_box, y ayúdame a escribir pruebas de integración para validar que mi servidor funciona correctamente.
ベストプラクティス
- Siempre incluye descripciones claras en las macros #[tool] para que los asistentes de IA entiendan qué hace cada herramienta
- Haz que las funciones de herramientas sean asíncronas y usa configuración correcta del runtime tokio en main
- Prueba los servidores localmente con transporte stdio antes de desplegar a transportes de nube
回避
- Falta de #[tool(description = "...")] en funciones de herramientas hace que sean invisibles para los asistentes de IA
- Funciones de herramientas no asíncronas fallarán en tiempo de ejecución; todas las herramientas deben ser asíncronas
- Usar parámetros complejos sin #[tool(aggr)] causa errores de deserialización