Pular para o conteúdo
Skillpedia
APIs e servidores (backend)40 mil · #5354

rust-mcp-server-generator

Faz seu agente criar um projeto de servidor em Rust. Ele gera o código, ferramentas e testes necessários usando o SDK oficial do MCP para Rust.

O que ela faz

Este agente cria um projeto de servidor completo para comunicação entre programas usando Rust. Ele configura todas as ferramentas e arquivos necessários para que o servidor funcione.

Quando usar

  • ✓Quando você quer criar um novo servidor de comunicação em Rust.
  • ✓Quando você precisa de um ponto de partida para um projeto que usa o SDK oficial rmcp.
  • ✓Quando você quer gerar a estrutura básica de um servidor com ferramentas e testes já incluídos.

Exemplo do que pedir para a IA

“Gere um servidor chamado 'meu-servidor-clima' que busca dados de tempo, usando os transportes stdio e http.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/github/awesome-copilot/blob/main/skills/rust-mcp-server-generator/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/rust-mcp-server-generator/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Você informa o nome do projeto, uma descrição, os tipos de comunicação que ele deve usar (como stdio ou http) e quais ferramentas ele deve ter. O agente então cria todos os arquivos e pastas necessários.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add github/awesome-copilot --skill rust-mcp-server-generator

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/rust-mcp-server-generator/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Gerador de Servidor Rust MCP

Você é um gerador de servidor Rust MCP. Crie um projeto de servidor Rust MCP completo e pronto para produção usando o SDK oficial rmcp.

Requisitos do Projeto

Pergunte ao usuário por:

  1. Nome do projeto (ex: "meu-servidor-mcp")
  2. Descrição do servidor (ex: "Um servidor MCP de dados meteorológicos")
  3. Tipo de transporte (stdio, sse, http, ou todos)
  4. Ferramentas a incluir (ex: "busca de clima", "previsão", "alertas")
  5. Se deve incluir prompts e recursos

Estrutura do Projeto

Gere esta estrutura:

{project-name}/
├── Cargo.toml
├── .gitignore
├── README.md
├── src/
│   ├── main.rs
│   ├── handler.rs
│   ├── tools/
│   │   ├── mod.rs
│   │   └── {tool_name}.rs
│   ├── prompts/
│   │   ├── mod.rs
│   │   └── {prompt_name}.rs
│   ├── resources/
│   │   ├── mod.rs
│   │   └── {resource_name}.rs
│   └── state.rs
└── tests/
    └── integration_test.rs

Modelos de Arquivo

Cargo.toml

[package]
name = "{project-name}"
version = "0.1.0"
edition = "2021"

[dependencies]
rmcp = { version = "0.8.1", features = ["server"] }
rmcp-macros = "0.8"
tokio = { version = "1", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
anyhow = "1.0"
tracing = "0.1"
tracing-subscriber = "0.3"
schemars = { version = "0.8", features = ["derive"] }
async-trait = "0.1"

# Optional: for HTTP transports
axum = { version = "0.7", optional = true }
tower-http = { version = "0.5", features = ["cors"], optional = true }

[dev-dependencies]
tokio-test = "0.4"

[features]
default = []
http = ["dep:axum", "dep:tower-http"]

[[bin]]
name = "{project-name}"
path = "src/main.rs"

.gitignore

/target
Cargo.lock
*.swp
*.swo
*~
.DS_Store

README.md

# {Project Name}

{Server description}

## Installation

```bash
cargo build --release

Usage

Stdio Transport

cargo run

SSE Transport

cargo run --features http -- --transport sse

HTTP Transport

cargo run --features http -- --transport http

Configuration

Configure in your MCP client (e.g., Claude Desktop):

{
  "mcpServers": {
    "{nome-do-projeto}": {
      "command": "path/to/target/release/{nome-do-projeto}",
      "args": []
    }
  }
}

Tools

  • {tool_name}: {Tool description}

Development

Run tests:

cargo test

Run with logging:

RUST_LOG=debug cargo run

### src/main.rs

```rust
use anyhow::Result;
use rmcp::{
    protocol::ServerCapabilities,
    server::Server,
    transport::StdioTransport,
};
use tokio::signal;
use tracing_subscriber;

mod handler;
mod state;
mod tools;
mod prompts;
mod resources;

use handler::McpHandler;

#[tokio::main]
async fn main() -> Result<()> {
    // Initialize tracing
    tracing_subscriber::fmt()
        .with_max_level(tracing::Level::INFO)
        .with_target(false)
        .init();
    
    tracing::info!("Starting {project-name} MCP server");
    
    // Create handler
    let handler = McpHandler::new();
    
    // Create transport (stdio by default)
    let transport = StdioTransport::new();
    
    // Build server with capabilities
    let server = Server::builder()
        .with_handler(handler)
        .with_capabilities(ServerCapabilities {
            tools: Some(Default::default()),
            prompts: Some(Default::default()),
            resources: Some(Default::default()),
            ..Default::default()
        })
        .build(transport)?;
    
    tracing::info!("Server started, waiting for requests");
    
    // Run server until Ctrl+C
    server.run(signal::ctrl_c()).await?;
    
    tracing::info!("Server shutting down");
    Ok(())
}

src/handler.rs

use rmcp::{
    model::*,
    protocol::*,
    server::{RequestContext, ServerHandler, RoleServer, ToolRouter},
    ErrorData,
};
use rmcp::{tool_router, tool_handler};
use async_trait::async_trait;

use crate::state::ServerState;
use crate::tools;

pub struct McpHandler {
    state: ServerState,
    tool_router: ToolRouter,
}

#[tool_router]
impl McpHandler {
    // Inclua definições de ferramentas do módulo tools
    #[tool(
        name = "example_tool",
        description = "Uma ferramenta de exemplo",
        annotations(read_only_hint = true)
    )]
    async fn example_tool(params: Parameters<tools::ExampleParams>) -> Result<String, String> {
        tools::example::execute(params).await
    }
    
    pub fn new() -> Self {
        Self {

…
Perguntas frequentes

O que é 'rmcp SDK'?

É um conjunto de ferramentas e instruções oficiais que ajudam a criar servidores de comunicação em Rust de forma mais fácil e padronizada.

Quais são os tipos de 'transporte'?

Transporte é como o servidor se comunica. Os tipos comuns são stdio (linha de comando), sse (eventos do servidor), e http (web).

O que são 'ferramentas' e 'prompts'?

Ferramentas são funções que o servidor pode executar (como buscar o tempo). Prompts são modelos de mensagens que o servidor pode usar para interagir.

Detalhes

Descrição original do autor

Generate a complete Rust Model Context Protocol server project with tools, prompts, resources, and tests using the official rmcp SDK

repo: github/awesome-copilot

Popularidade

Estrelas no GitHub
40 mil
Posição no ranking
#5354
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas