A serverless Monzo → Claude connector on Cloudflare Workers
Já existem alguns servidores MCP do Monzo (partymola, BfdCampos, um via npm), e eles são bons — mas todos são servidores stdio locais que você executa na sua própria máquina. Este é o primeiro remoto/serverless que encontrei: ele vive em um Cloudflare Worker, então você autentica uma vez e ele te acompanha em todas as superfícies do Claude, sem nada para manter rodando.
Documentação
Conector Monzo → Claude

Um servidor MCP remoto, executado em um Worker da Cloudflare, que dá ao Claude acesso somente leitura à sua conta Monzo via OAuth.
Depois de conectado no claude.ai, você pode perguntar coisas como "qual é o meu saldo no Monzo?", "liste minhas transações recentes", ou "quanto há nos meus cofrinhos de poupança?" em qualquer chat — web, desktop ou celular. Autentique uma vez; ele acompanha você em todos os lugares. Sem laptop, sem servidor local, nada para manter rodando.
Não afiliado ao Monzo. Esta é uma ferramenta de uso pessoal construída sobre a API de desenvolvedor pública do Monzo. Use por sua conta e risco, e leia o modelo de segurança antes de implantar.
O que ele expõe
| Ferramenta | Descrição |
|---|---|
get_accounts | Contas abertas (pessoal, conjunta, Flex, recompensas) com ids/códigos de classificação |
get_balance | Saldo, total incluindo cofrinhos e gasto de hoje — uma conta ou todas |
list_transactions | Transações recentes (últimos 90 dias), filtráveis por data |
get_transaction | Detalhes completos de uma única transação |
list_pots | Cofrinhos de poupança e seus saldos |
Somente leitura por design: sem pagamentos, transferências ou movimentações de cofrinhos — as ferramentas simplesmente não existem, então nenhuma quantidade de injeção de prompt pode mover dinheiro.
Arquitetura
Claude (claude.ai) ──OAuth──> This Worker ──OAuth──> Monzo API
│
workers-oauth-provider (KV) + McpAgent (Durable Object)
@cloudflare/workers-oauth-provideré o servidor OAuth ao qual o Claude se autentica — ele lida com registro dinâmico de clientes,/authorize,/tokene armazenamento de concessões no KV.src/monzo-handler.tsfaz a ponte com o OAuth do Monzo (autorizar → e-mail com link mágico → aprovação no aplicativo → callback).src/mcp.tsé oMcpAgent— um Durable Object por usuário conectado, que guarda os tokens Monzo desse usuário e os renova automaticamente via o token de atualização.src/monzo.tsé o cliente fino da API do Monzo.
Modelo de segurança
Vale a pena entender antes de implantar — o design isola usuários por construção:
- Nenhuma credencial bancária permanente no Worker. Os únicos segredos no nível do Worker
são o
client_id/client_secretdo OAuth do Monzo, que podem trocar códigos de autorização, mas não conseguem ler nenhum dado de conta por conta própria. - Tokens vivem por concessão, não por Worker. Quando um usuário conclui o fluxo
OAuth, os tokens Monzo dele são armazenados criptografados dentro da concessão dele
(
completeAuthorization({ props: ...tokens })). Cada solicitação MCP é resolvida pelo token de portador do chamador para a concessão dele, o Durable Object dele, a conta Monzo dele. Não existe solicitação que alcance os dados de outro usuário. - Solicitações não autenticadas recebem 401. O endpoint
/mcpsó responde a tokens de portador emitidos pelo próprio Worker. - O Monzo adiciona suas próprias barreiras. Clientes OAuth do portal de desenvolvedor só autorizam o dono do cliente (além de colaboradores explicitamente adicionados), e todo login exige aprovação no aplicativo Monzo no celular do titular da conta (SCA).
- Os escopos são somente leitura e os endpoints de pagamento/transferência nunca são chamados.
Os riscos residuais são os usuais para qualquer conector: proteja os segredos implantados e trate sua sessão do claude.ai como a credencial que ela é.
Configuração
-
Registre um cliente OAuth do Monzo em https://developers.monzo.com — Confidencialidade: Confidencial (exigido para tokens de atualização). URL de redirecionamento:
https://<your-worker>.workers.dev/callback. -
Preencha os segredos em
.dev.vars(ignorado pelo git) para desenvolvimento local:MONZO_CLIENT_ID=oauth2client_... MONZO_CLIENT_SECRET=mnzconf... COOKIE_ENCRYPTION_KEY=<openssl rand -hex 32> -
Crie o namespace KV e cole o id retornado em
wrangler.jsonc(substituindo<YOUR_OAUTH_KV_NAMESPACE_ID>):npx wrangler kv namespace create OAUTH_KV -
Implante e envie os segredos:
npx wrangler deploy npx wrangler secret put MONZO_CLIENT_ID npx wrangler secret put MONZO_CLIENT_SECRET npx wrangler secret put COOKIE_ENCRYPTION_KEY -
Adicione o conector no claude.ai → Configurações → Conectores → Adicionar conector personalizado →
https://<your-worker>.workers.dev/mcp→ autorize. Você será redirecionado pelo login do Monzo (e-mail com link mágico + aprovar no aplicativo Monzo), e então o Claude mostra as cinco ferramentas.
Funciona também no Claude Code:
claude mcp add --transport http monzo https://<your-worker>.workers.dev/mcp
Notas e limitações
- O Monzo só expõe os últimos 90 dias de transações, a menos que você reautentique imediatamente após aprovar o acesso; este conector aceita essa janela contínua.
- Os clientes de desenvolvedor do Monzo são de usuário único, a menos que o Monzo aprove seu aplicativo para produção — adequado para o caso de uso pessoal para o qual foi construído.
- Os segredos ficam em
.dev.vars(local) e nos segredos do Wrangler (produção) — nunca no git. O.gitignoregarante isso.
Licença
MIT — faça o que quiser, sem garantia. Os nomes e logotipos do Monzo, Claude e Cloudflare pertencem aos seus respectivos proprietários.