blazingly 0.2.2

Facade crate re-exporting the Blazingly framework: routing, extraction, validation, dependency injection, OpenAPI, and MCP
Documentation
use blazingly::prelude::*;

#[api_model]
struct EchoInput {
    #[min_length(1)]
    message: String,
}

#[api_model]
struct EchoOutput {
    message: String,
}

#[post("/echo", id = "echo.create", summary = "Echo one message")]
#[mcp::tool(
    name = "echo",
    description = "Echo one message",
    risk = "read",
    confirmation = "never",
    idempotent = true,
    expose_output = "full"
)]
#[allow(clippy::unused_async)]
async fn echo(Json(input): Json<EchoInput>) -> Json<EchoOutput> {
    Json(EchoOutput {
        message: input.message,
    })
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let app = ExecutableApp::new(routes![echo])?;
    let mut server = blazingly::mcp::JsonRpcServer::new(&app);
    blazingly::mcp::stdio::serve_stdio(&mut server)?;
    Ok(())
}