RMCP Quickstart
Criar Servidores MCP com rmcp
A criação de servidores MCP requer a compreensão de um protocolo complexo com múltiplas opções de transporte e padrões de ferramentas. Esta skill oferece um guia de início rápido com exemplos claros de código Rust, configurações de transporte e estratégias de teste para construir servidores MCP prontos para produção.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "RMCP Quickstart". Help me create my first rmcp server
Résultat attendu:
- 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(())
- }
- ```
Utilisation de "RMCP Quickstart". How do I handle errors in rmcp?
Résultat attendu:
- 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())
- }
- }
- ```
Audit de sécurité
SûrAll 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.
Motifs détectés
Score de qualité
Ce que vous pouvez construire
Crie Seu Primeiro Servidor MCP
Novo no MCP? Obtenha orientação passo a passo desde a configuração do projeto até a execução do seu primeiro servidor com ferramentas funcionais e tratamento adequado de erros.
Adicione Padrões Avançados de Ferramentas
Aprenda a criar serviços stateful com ferramentas async, tipos de parâmetros complexos e tratamento adequado de erros para servidores MCP em produção.
Escolha e Configure Transportes
Entenda as diferenças entre transportes stdio, SSE e HTTP. Obtenha orientação sobre quando usar cada um com base nas suas necessidades de implantação.
Essayez ces prompts
Quero criar um servidor MCP em Rust usando o crate rmcp. Ajude-me a entender o básico: o que é MCP, quais são os principais componentes, e me guie na criação de um servidor simples com uma ferramenta de saudação.
Tenho um servidor rmcp básico funcionando. Agora quero adicionar mais ferramentas com parâmetros complexos, incluindo campos opcionais e objetos aninhados. Mostre-me o padrão correto para usar #[tool(aggr)] e implementar tratamento de erros.
Preciso implantar meu servidor MCP para uso na nuvem. Explique as diferenças entre transportes SSE e HTTP, mostre exemplos de código para cada um, e ajude-me a escolher a opção certa para um ambiente de produção multiusuário.
As ferramentas do meu servidor MCP não estão aparecendo no Claude. Caminhe comigo pela depuração: verifique meu uso da macro #[tool], verifique a placement da tool_box, e ajude-me a escrever testes de integração para validar que meu servidor está funcionando corretamente.
Bonnes pratiques
- Sempre inclua descrições claras nas macros #[tool] para que assistentes de IA entendam o que cada ferramenta faz
- Faça funções de ferramentas serem async e use configuração adequada do runtime tokio em main
- Teste servidores localmente com transporte stdio antes de implantar em transportes na nuvem
Éviter
- Falta de #[tool(description = "...")] em funções de ferramentas faz com que elas fiquem invisíveis para assistentes de IA
- Funções de ferramentas não-async falharão em tempo de execução; todas as ferramentas devem ser async
- Usar parâmetros complexos sem #[tool(aggr)] causa erros de desserialização