Início rápido
-
Instale o CLI
Janela do terminal cargo install carmy-cliO Carmy exige Rust 1.88 ou mais recente.
-
Crie uma aplicação
Janela do terminal carmy new shopcd shopO projeto segue as convenções do Carmy:
src/main.rs, um arquivo por tool emsrc/tools/e umcarmy.toml. -
Sirva via HTTP
Janela do terminal cargo runJanela do terminal $ curl localhost:3000/.well-known/agent{"capabilities":["tools","streaming","idempotency"],"execute_url":"/agent/execute","protocol":"carmy/1","server":"shop","tools_url":"/agent/tools","tools_version":"…"}$ curl localhost:3000/agent/execute -H 'content-type: application/json' \-d '{"tool":"hello","arguments":{"name":"Ada"}}'{"execution_id":"exec_…","status":"completed","data":{"message":"Hello, Ada!"},"_agent":{"cacheable":true,"next_actions":[]}} -
Sirva o mesmo app via MCP
Janela do terminal cargo run -- mcpQualquer cliente MCP, como o Claude Desktop ou o Cursor, já consegue listar e chamar suas tools. Veja MCP.
-
Rode os testes
Janela do terminal cargo testA tool
hellogerada já vem com testes que a chamam pelo runtime de verdade.
Sua primeira tool
Seção intitulada “Sua primeira tool”Crie src/tools/search.rs:
use carmy::prelude::*;
#[derive(Deserialize, JsonSchema)]struct SearchInput { /// Search expression. query: String,}
#[derive(Serialize, JsonSchema)]struct SearchOutput { results: Vec<String>,}
#[carmy::tool(description = "Search the catalog", effect = "read", idempotent = true)]async fn search(input: SearchInput) -> AgentResult<SearchOutput> { Ok(SearchOutput { results: vec![format!("Result for {}", input.query)], })}Depois adicione mod search; em src/tools/mod.rs. Só isso: a tool se registra sozinha e
fica disponível via HTTP e MCP.
Próximo: Estrutura do projeto.