Voltar as noticias
Criando CLIs, MCPs e APIs a partir de uma única fonte com Morloc
MCP ProtocolAltaEN

Criando CLIs, MCPs e APIs a partir de uma única fonte com Morloc

Dev.to - MCP·11 de agosto de 2026

Uma Interface de Linha de Comando pega um conjunto central de funções e as expõe como uma utilidade de shell. Um servidor HTTP pode pegar as mesmas funções e expô-las através de uma rede, enquanto um MCP pode expô-las para agentes de IA. Um núcleo funcional, muitas visões. Em cada caso, a interface é um modelo onde o melhor design é o design mais sem graça. Criatividade em uma API ou CLI é como criatividade na ortografia: irritante. Então, por que não derivar automaticamente as visões das funções? O Morloc faz exatamente isso.

Como um compilador poliglota fortemente tipado, o Morloc é singularmente adequado para esse problema. Ele conhece todos os tipos de função, gerencia totalmente a serialização e propaga dicas de docstring até a geração de código. E isso pode ser feito entre linguagens, garantindo consistência.

Aqui está um programa Morloc que renderiza o conjunto de Mandelbrot com o tempo de escape computado em Rust e a imagem renderizada em Python:

-- fractals.loc
module fractals (mandel, julia)

import tensor-rust
import tensor-py

source Rust from "mandel.rs"
  ( "julia_grid" as julia
  , "mandel_grid" as mandel
  )

--' Renderiza o conjunto de Mandelbrot sobre uma viewport.
--' @render -a/--ascii=asAscii @default
--' @render -p/--ppm=asPpm
--' @render -g/--png=asPng
mandel :: View -> Matrix I64

--' Renderiza um conjunto de Julia
--' @render -a/--ascii=asAscii @default
--' @render -p/--ppm=asPpm
--' @render -g/--png=asPng
julia ::
  --' Parte real da constante de Julia
  --' @arg -r/--real
  --' @default -0.8
  F64 ->
  --' Parte imaginária da constante de Julia
  --' @arg -i/--imaginary
  --' @default 0.156
  F64 ->
  View ->
  Matrix I64

-- continuado no próximo bloco de código Morloc

As definições de tensor Rust são importadas do módulo Morloc tensor-rust. A função mandel é originada do Rust e mapeada para um tipo Morloc. O tipo View é um registro que é definido nas linhas Morloc a seguir:

--' Controles da viewport.
--' @unroll
record View where
  --' Parte real do centro da visualização
  --' @arg --center-x
  --' @metavar X
  --' @default -0.5
  centerX :: F64

  --' Parte imaginária do centro da visualização
  --' @arg --center-y
  --' @metavar Y
  --' @default 0.0
  centerY :: F64

  --' Ampliação (maior = zoom mais profundo)
  --' @arg --zoom
  --' @metavar Z
  --' @default 1.0
  zoom :: F64

  --' Largura de saída em células
  --' @arg --width
  --' @metavar COLS
  --' @default 80
  width :: I64

  --' Altura de saída em células
  --' @arg --height
  --' @metavar ROWS
  --' @default 40
  height :: I64

  --' Teto de iteração de escape
  --' @arg --max-iter
  --' @metavar N
  --' @default 200
  maxIter :: I64

record Rust => View = "View"

-- continuado no bloco final de código Morloc

A definição de tipo Morloc fornece dicas de docstring para o registro que é passado para os geradores de código a jusante. O registro será desdobrado nas interfaces como uma coleção de parâmetros opcionais.

As funções brutas envolvidas lidam com os dados fundamentais - matrizes numéricas neste caso. Os campos @render associam renders que pegam a saída da função e a transformam em uma saída binária ou textual. Esses podem ser escritos em qualquer linguagem suportada. Escrevê-los em Rust teria um desempenho melhor, uma vez que não haveria custos de marshalling de dados, mas optei por Python aqui por conveniência de prototipagem.

--' @mime image/png
type PNG = Vector U8

--' @mime image/x-portable-pixmap
type PPM = Vector U8

source Py from "render.py"
  ( "as_ascii" as asAscii
  , "as_ppm"   as asPpm
  , "as_png"   as asPng
  )

--' Sombrear a grade em arte ASCII de terminal.
asAscii :: Matrix I64 -> Str

--' Codificar a grade como uma imagem PPM binária (P6).
asPpm :: Matrix I64 -> PPM

--' Codificar a grade como uma imagem PNG com um mapa de cores suave (Pillow).
asPng :: Matrix I64 -> PNG

O código fonte em Rust e Python é totalmente idiomático. As entradas de dados e o

Contexto Triplo Up

O uso do Morloc pode otimizar a integração de sistemas para empresas brasileiras, permitindo que suas aplicações se comuniquem de forma mais eficiente com agentes de IA. Isso pode resultar em maior agilidade e inovação nos serviços oferecidos.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.