Voltar as noticias
Construindo um portfólio de 18 produtos MCP em poucas semanas
MCP ProtocolAltaEN

Construindo um portfólio de 18 produtos MCP em poucas semanas

Dev.to - MCP·11 de junho de 2026

Publicação cruzada para dev.to, Hashnode, Medium. URL canônica recomendada: seu blog pessoal, se você tiver um, caso contrário, dev.to.

Sugestão de imagem de capa: uma captura de tela da página inicial do hub com os 17 cartões de produto visíveis.

TL;DR

Em algumas semanas, construí 17 servidores do Modelo de Protocolo de Contexto (MCP) voltados para o cliente, além de um serviço de análise e um hub mestre. Cada um é um Worker do Cloudflare que envolve uma fonte de dados pública gratuita em uma superfície de ferramenta que os agentes de IA podem chamar. A fonte é MIT, hospedada no nível gratuito do Cloudflare, com um nível gratuito anônimo em cada produto. Hub: https://mcp-hub.atlasword.workers.dev/

Este post é sobre a arquitetura, a economia e as partes que são mais difíceis do que parecem.

Por que um portfólio de 17 em vez de um produto polido

O conselho convencional para hackers independentes é: escolha uma fatia, aprofunde-se, torne-se o melhor naquilo. Eu fiz o oposto deliberadamente. Três razões.

1. O custo marginal de um MCP adicional é pequeno. Uma vez que você tem o template — ponto de entrada do Worker, cache KV, contador de cota, webhook do Stripe, gerador OpenAPI, smithery.yaml, server.json, wrapper npm — o único código específico do produto é o cliente da API upstream e as definições da ferramenta. Para a maioria das APIs públicas, isso é de 200 a 500 linhas de TypeScript.

2. O custo marginal de uma listagem adicional também é pequeno. Submeter ao Smithery, Glama, mcp.so, o registro oficial, listas awesome-mcp, etc., é um esforço por produto. Mas você também pode modelar o conteúdo da listagem. Assim, 17 listagens em 8 diretórios são 136 envios — mas o marginal leva dois minutos uma vez que o script está escrito.

3. Eu realmente não sei qual comprador aparecerá primeiro. Um portfólio é uma proteção contra estar errado sobre o comprador. Se o SEC EDGAR não decolar, mas o validador GST sim, tudo bem — eu sigo o sinal. Construir uma fatia teria me trancado em um palpite sobre o comprador.

Essa é a tese. Se está certa, é testável, não discutível.

A arquitetura

Cada produto é um único Worker do Cloudflare. O diagrama é:

Claude / Cursor / Cline / qualquer agente compatível com MCP
                |
                | MCP-over-HTTP (JSON-RPC 2.0, POST /mcp)
                v
            Worker do Cloudflare
               /          \
              /            \
       KV: uso         KV: cache
       (contador de cota)   (respostas da API upstream)
              \            /
               \          /
                v        v
            API pública upstream
        (SEC EDGAR, openFDA, GDELT, ...)

Por worker:

  • src/index.ts — servidor MCP, rotas /mcp, /openapi.json, /llms.txt, /upgrade
  • src/client.ts — cliente da API upstream com tentativas
  • src/tools.ts — definições de ferramentas MCP (a parte que leva mais tempo)
  • src/usage.ts — contador de cota baseado em KV (compartilhado entre todos os 17, copiado e colado)
  • src/stripe.ts — manipulador de webhook do Stripe (compartilhado entre todos os 17, copiado e colado)

Total ~500-1500 LOC TypeScript por produto. O código compartilhado é de aproximadamente 300 LOC em todos os produtos.

O transporte MCP-over-HTTP

Muitos servidores MCP no mundo são pacotes npm apenas para stdio. Isso funciona, mas é complicado — cada servidor que você adiciona ao Claude Desktop gera um processo filho na inicialização, cada solicitação requer serialização JSON através de um pipe, e é difícil para clientes não desktop usá-los.

MCP-over-HTTP é apenas JSON-RPC 2.0 sobre POST. O endpoint aceita:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "edgar_search_filings",
    "arguments": { "cik": "0000320193", "form": "10-K", "limit": 3 }
  }
}

E retorna:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      { "type": "text", "text": "Encontrados 3 arquivos 10-K para AAPL: ..." }
    ]
  }
}

Você pode curl isso. Você pode chamá-lo de qualquer cliente HTTP. O suporte HTTP MCP do Claude Desktop é recente; Cursor, Cline e a maioria dos agentes mais novos falam isso nativamente. Para fallback de desktop, envio um wrapper npm (@insnapsprakhar/<slug>-mcp) que conecta stdio → HTTP.

Medição de cota no KV

O Workers KV é eventualmente consistente, o que soa assustador para um contador, mas é bom na prática. Tolerância a picos > correção estrita.

async function incrementUsage(env: Env, key: string): Promise<number> {
  const usage = await env.KV.get(key) || 0;
  await env.KV.put(key, usage + 1);
  return usage + 1;
}
Contexto Triplo Up

A criação de múltiplos servidores MCP pode oferecer às empresas brasileiras uma maneira eficiente de integrar dados públicos em suas aplicações. Isso pode aumentar a agilidade na resposta às demandas do mercado e melhorar a interação com agentes de IA. A abordagem modular permite adaptação rápida às necessidades dos usuários.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.