Woovi Pix MCP
Allows querying and optionally creating Pix charges (cobranças) through the Woovi Pix API. Provides tools such as pix_get_charge to look up a charge's ID, reference, status, and amount, and pix_create_charge (disabled by default, opt-in) to create charges with an explicit value limit and expiration, using each charge reference as the Woovi correlationID and a local idempotency key so repeated payloads return the persisted result. Uncertain calls remain UNKNOWN and are reconciled by querying Woovi by reference before the operation is closed.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Woovi Pix MCPcheck the status of my Pix charge for order 1042"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Woovi Pix MCP
Servidor MCP local em Go para consultar e, opcionalmente, criar cobranças Pix
Woovi. A ferramenta pix_create_charge fica desativada por padrão. Não há Pix
Out, transferências, reembolsos ou cancelamentos financeiros.
Stack: Go 1.27.1, MCP Go SDK v1.8.0, SQLite embutido e Goose v3 para migrações SQL. Quando escrita está habilitada, o servidor cria o banco privado e aplica as migrações ao iniciar. Não requer PostgreSQL nem Docker.
CLI local: setup, perfis, stdio, doctor, instalação segura em clientes JSON e Litestream opcional. Transporte remoto, distribuição pública e operações Pix Out estão fora do escopo. Validação externa no sandbox Woovi ainda não realizada.
Licença
Copyright 2026 Lucas Eufrasio e contribuidores. Licenciado sob a Apache License 2.0.
Projeto independente, não oficial da Woovi. A licença cobre o código deste repositório, não concede direitos sobre marcas de terceiros e não substitui os termos de uso da API Woovi. Dependências mantêm suas próprias licenças.
Related MCP server: refund-mcp-server
Configurar pela CLI
go build -o ./bin/woovi-pix-mcp ./cmd/woovi-pix-mcp
./bin/woovi-pix-mcp setup --profile sandbox
./bin/woovi-pix-mcp doctor --profile sandboxO assistente pede ambiente, identificador estável da conta e opt-in de criação.
O AppID é digitado sem eco e salvo no cofre de credenciais do sistema. Se o
cofre não estiver disponível, o setup falha: não há fallback silencioso. Use
setup --profile sandbox --secret-file somente se aceitar guardar o segredo
sem criptografia em arquivo restrito ao usuário. Permissões POSIX são validadas;
ACLs Windows ainda precisam validação antes de recomendar esse fallback lá.
Perfis existentes não são sobrescritos: use outro nome para nova configuração.
Configure seu cliente com o caminho absoluto do binário e argumentos
["stdio", "--profile", "sandbox"]. Não inclua AppID na configuração do cliente.
doctor é diagnóstico local; não chama Woovi nem cria cobrança.
profiles lista os nomes configurados sem carregar ou exibir credenciais.
O identificador de conta precisa ser estável e corresponder à conta do AppID:
o servidor não consegue verificar isso offline. Dois perfis da mesma conta e
ambiente compartilham o histórico de idempotência, inclusive após trocar AppID.
Instalar no cliente MCP
Selecione explicitamente cliente e arquivo. O padrão só valida a alteração;
--apply salva com backup privado, preservando entradas alheias. Exemplo:
./bin/woovi-pix-mcp install-mcp --profile sandbox --client opencode --config ~/.config/opencode/opencode.json
./bin/woovi-pix-mcp install-mcp --profile sandbox --client opencode --config ~/.config/opencode/opencode.json --applyClientes aceitos: opencode V2 (mcp.servers), claude e cursor
(mcpServers). O caminho é sempre explícito: não há descoberta ou edição
automática de todos os clientes. JSONC, arquivos públicos ou symlinks são
recusados; revise permissões antes de aplicar (diretório 0700, arquivo 0600).
Uma entrada diferente com o mesmo nome não é sobrescrita. Uma entrada idêntica
não gera nova alteração/backup. Codex/TOML deve ser configurado manualmente.
Comandos de desenvolvimento
make help lista os comandos disponíveis. Exemplos:
Para make fmt/make check, além de Go, instale golangci-lint 2.14.0, Python
3.12+ e uv. Ruff é resolvido na versão fixa 0.16.10. O lint também verifica
espaçamento entre blocos Go; não basta passar no gofmt.
make test
make check
make migrate-create name=add_charge_metadataOs testes usam arquivos SQLite reais temporários, inclusive processos separados.
As novas migrations são timestamped e criadas pela
Goose CLI. Não há target migrate-down/reset: a migration Down remove as
tabelas de operação/auditoria e pode apagar evidência de idempotência.
Processo de release
Prepare Release abre um PR de changelog; após revisão/CI e merge, uma tag
vX.Y.Z dispara Release, que repete os checks e cria um draft com binários
Linux/macOS/Windows (amd64/arm64) e checksums SHA-256. Publicar o draft continua
sendo uma decisão manual. Nenhuma release é disparada ao adicionar os workflows.
Veja docs/releases.md para configuração, preparação,
tagueamento, verificação de artefatos e limitações de plataforma. Para validar
o empacotamento local sem publicar: make release-snapshot (GoReleaser 2.18.2).
Executar
./bin/woovi-pix-mcp stdio --profile sandboxPara compilar um binário local sem instalá-lo globalmente:
go build -o ./bin/woovi-pix-mcp ./cmd/woovi-pix-mcpExecute o binário com stdio --profile sandbox. O diretório
bin/ é apenas uma saída local e não deve ser versionado.
O AppID fica no processo servidor e nunca é um argumento ou resultado MCP. Logs
operacionais vão para stderr; stdout fica reservado ao protocolo stdio. O host
Woovi de produção é https://api.woovi.com, mas o servidor aceita apenas HTTPS
para hosts remotos.
Criação é uma capacidade explicitamente opt-in. Requer identificador fixo da conta autorizada e limite máximo de R$ 100.000 por cobrança, sem banco externo:
No setup, responda yes somente se quiser habilitar criação. Para automação,
o modo legado sem subcomando ainda aceita WOOVI_API_BASE_URL, WOOVI_APP_ID,
WOOVI_ACCOUNT_ID e WOOVI_ENABLE_CHARGE_CREATION; injete o segredo pelo cofre
da automação, nunca em argv, histórico do shell ou configuração dos clientes.
Cada referência é usada como correlationID Woovi e chave idempotente local.
Repetir o mesmo payload retorna resultado já persistido; outra carga para a
mesma referência conflita. Uma chamada com resultado incerto permanece UNKNOWN
e não é reenviada automaticamente: a ferramenta primeiro consulta a Woovi pela
referência e só fecha a operação quando referência e valor batem. Se não for
encontrada, permanece UNKNOWN. O valor explícito está limitado a R$ 100.000 e
expiração de 300 a 2.592.000 segundos. Tentativas e resultados são auditados no
SQLite sem persistir AppID ou conteúdo do QR no log de auditoria. Esta fatia
não implementa approval workflow.
O arquivo SQLite é criado sob o diretório de configuração do usuário, em
woovi-pix-mcp/state/<escopo>/operations.db; o escopo separa URL/ambiente e conta.
WOOVI_DATABASE_PATH permite indicar outro arquivo privado. Nunca apague o
arquivo para resolver um erro: ele guarda a evidência das tentativas anteriores.
SQLite usa WAL, synchronous FULL e espera limitada para escritores concorrentes.
Não há DATABASE_URL nem importação PostgreSQL; esse MCP não teve usuários legados.
Teste rápido local — sem chamar a Woovi
Execute os comandos na raiz deste repositório, com Go 1.27.1 instalado. Este roteiro usa somente dados fictícios e não precisa de conta Woovi ou Docker.
1. Terminal 1: subir o simulador
go run ./cmd/woovi-simulatorDeixe esse terminal aberto. O simulador escuta em 127.0.0.1:8081.
2. Terminal 2: compilar e configurar
go build -o ./bin/woovi-pix-mcp ./cmd/woovi-pix-mcp
./bin/woovi-pix-mcp setup --profile testeResponda ao assistente:
Ambiente:
simulatorConta:
conta-testeHabilitar criação:
noAppID:
simulator(a entrada fica oculta)
Se o cofre do sistema estiver indisponível, repita o setup com o fallback explícito abaixo. Ele guarda o AppID sem criptografia em arquivo privado 0600:
./bin/woovi-pix-mcp setup --profile teste --secret-fileSe o perfil já existir, reutilize-o ou escolha outro nome; não há sobrescrita.
3. Conferir a configuração
./bin/woovi-pix-mcp doctor --profile testeEsperado: ambiente simulator, credencial disponível sem exibir AppID e
criação desabilitada. O banco pode aparecer como não inicializado: isso é normal
em modo somente leitura. doctor não consulta nem mesmo o simulador.
4. Conectar ao OpenCode V2
Primeiro valide a alteração (preview), depois aplique:
./bin/woovi-pix-mcp install-mcp --profile teste \
--client opencode --config ~/.config/opencode/opencode.json
./bin/woovi-pix-mcp install-mcp --profile teste \
--client opencode --config ~/.config/opencode/opencode.json --applyUse o caminho do arquivo realmente usado pelo seu cliente. Precisa ser JSON,
não JSONC; diretório 0700 e arquivo 0600, sem symlinks. Se o instalador recusar,
revise o motivo antes de alterar permissões ou use configuração manual. Para
Claude/Cursor, selecione --client claude/--client cursor e o respectivo arquivo.
examples/mcp-client.json ilustra a configuração manual: binário e perfil,
nunca AppID. O binário precisa permanecer no caminho usado na instalação.
5. Consultar a cobrança fictícia
Reabra o OpenCode para carregar o servidor woovi-pix-teste e peça:
Use o servidor woovi-pix-teste para consultar a cobrança
demo-chargecompix_get_charge. Não use outros servidores nem crie cobranças.
Esperado: ID demo-charge, referência demo-order-001, estado ACTIVE e
valor 1250 centavos (R$ 12,50), com código Pix fictício. Nenhuma chamada
Woovi ou operação financeira real é feita. Termine o simulador com Ctrl+C.
O simulador manual só suporta consulta. Criação/idempotência são exercitadas pelo simulador específico dos testes automatizados, não por esse comando. Para rodar a suíte e as verificações do projeto:
make checkTeste com o sandbox da própria Woovi
Este roteiro usa a API de teste externa da Woovi, não o simulador local.
Não é necessário executar woovi-simulator. Execute apenas com autorização
para usar essa conta; os passos abaixo não foram executados pela implementação
ou pela CI. Não use credenciais de produção nem faça pagamentos reais.
1. Preparar a conta e uma cobrança de teste
Acesse app.woovi-sandbox.com. O sandbox tem cadastro separado: dados de produção não funcionam nele.
No painel do sandbox, obtenha um AppID da sua conta. A documentação de autenticação indica
Admin Panel > Permissions > APIspara gerar a chave, com permissão de administrador. Use os escopos necessários para consulta.Tenha uma cobrança criada no sandbox pelo painel e copie seu ID ou
correlationID.demo-chargeé exclusivo do simulador e não deve ser usado aqui.
Referências oficiais: ambiente de teste e criação da chave API.
2. Compilar e configurar o perfil sandbox
go build -o ./bin/woovi-pix-mcp ./cmd/woovi-pix-mcp
./bin/woovi-pix-mcp setup --profile sandboxResponda:
Ambiente:
sandbox(selecionahttps://api.woovi-sandbox.com)Conta: um identificador estável dessa conta, por exemplo
minha-conta-sandboxHabilitar criação:
no, para começar somente com consultaAppID: o AppID do sandbox, no prompt oculto; nunca cole no chat ou no cliente
A conta é o escopo local de idempotência, não outro segredo; mantenha o mesmo identificador ao criar perfis para essa conta. Se o cofre estiver indisponível e você aceitar o arquivo privado sem criptografia, use explicitamente:
./bin/woovi-pix-mcp setup --profile sandbox --secret-file3. Conferir e conectar ao cliente
./bin/woovi-pix-mcp doctor --profile sandbox
./bin/woovi-pix-mcp install-mcp --profile sandbox \
--client opencode --config ~/.config/opencode/opencode.json
./bin/woovi-pix-mcp install-mcp --profile sandbox \
--client opencode --config ~/.config/opencode/opencode.json --applyValem os requisitos de JSON e permissões do roteiro local. Esperado no doctor:
ambiente sandbox, credencial disponível e criação desabilitada. Isso valida
apenas a configuração local, não autenticação ou conectividade com a Woovi.
4. Consultar uma cobrança do sandbox
Reabra o cliente e substitua <ID_OU_CORRELATION_ID> pelo identificador copiado
do painel. Se houver outros perfis instalados, selecione woovi-pix-sandbox:
Use somente o servidor woovi-pix-sandbox para chamar
pix_get_chargecomidigual a<ID_OU_CORRELATION_ID>. Não crie nem pague cobranças.
Esperado: a cobrança da sua conta sandbox, com ID/referência, estado e valor em centavos coerentes com o painel, sem AppID ou dados do pagador. Estado e valor dependem da cobrança escolhida; não há resultado fixo de R$ 12,50 aqui. Essa consulta é a verificação efetiva de API, credencial e escopo da conta.
5. Opcional: testar criação e idempotência no sandbox
Somente se quiser testar escrita e tiver autorização, siga o roteiro detalhado em docs/sandbox.md. Ele cria outro perfil com opt-in explícito e explica como repetir o mesmo payload e verificar conflito. Não pague o QR gerado, não use produção e não invente outra referência para contornar um timeout ou resultado incerto.
Contrato Woovi verificado
Autenticação por
Authorization: <AppID>; API retorna/aceita JSON e requer HTTPS. Limite documentado: 10 requisições por segundo.Consulta:
GET /api/v1/charge/{id};idaceita identificador da cobrança oucorrelationID.O retorno MCP é minimizado a identificador, referência, estado, centavos BRL, expiração e código Pix; dados do pagador e payloads brutos são descartados.
O cliente aplica limiter local conservador de 10 req/s (sem rajada) para respeitar o limite publicado pela Woovi.
Referências: Autenticação e limites, API Redoc, Correlation ID/idempotência.
O simulador de teste também suporta POST e mantém cobranças idempotentes pela referência em memória; nunca use credencial ou host de produção nos testes.
Todos os testes de persistência SQLite executam automaticamente em make test,
sem credenciais ou infraestrutura externa.
Litestream opcional e recuperação
Instale separadamente Litestream 0.5.12+ (série 0.5.x), validado com 0.5.17. Não é iniciado automaticamente e o MCP funciona sem ele.
./bin/woovi-pix-mcp replica-setup --profile sandbox --replica-url file:///absolute/private/backup/sandbox
# Alternativa: S3 ou compatível; access key e secret key entram em prompts sem eco.
./bin/woovi-pix-mcp replica-setup --profile sandbox --replica-url s3://my-bucket/account-specific-prefix --region us-east-1
./bin/woovi-pix-mcp replica-run --profile sandboxUse apenas um dos destinos; configuração existente não é sobrescrita. Para S3
compatível use --endpoint https://.... Credenciais usam cofre do sistema ou
--secret-file explicitamente; não coloque credenciais na URL. O processo filho
recebe somente as credenciais da réplica, não o AppID. Prefira discos privados e
criptografia/controle de acesso do bucket: a réplica contém dados de cobranças.
Inicie stdio uma vez para inicializar o banco antes da primeira réplica.
replica-run fica em foreground; Ctrl+C o encerra. Um lock impede duas réplicas
gerenciadas para o mesmo banco. replica-status verifica o estado local via
Litestream; não atesta sincronização remota nem atraso zero. Saída bruta do
processo externo é suprimida para evitar vazamento em mensagens de erro.
Para recuperar: pare todos os processos MCP e réplica; arquive manualmente o banco e seus sidecars, sem excluí-los. O destino e sidecars precisam estar ausentes; não existe opção force/overwrite nesta CLI.
./bin/woovi-pix-mcp replica-restore --profile sandbox --acknowledge-stale-state
./bin/woovi-pix-mcp doctor --profile sandboxA restauração faz integrity check completo e cria operations.db.recovered,
que bloqueia inicialização com criação habilitada. Não remova esse marcador
antes de conferir o histórico da Woovi e reconciliar operações possivelmente
ausentes na cópia. Se não conseguir reconciliar, permaneça em leitura. Não há
importação automática de histórico PSP nem botão de desbloqueio automático.
Uma falha de restore pode deixar arquivos parciais: arquive-os e investigue,
não reinicie com estado vazio. O marcador também permanece em caso de falha.
Litestream replica de forma assíncrona: RPO depende do último envio confirmado; RTO depende da recuperação manual. Não oferece HA automática ou multiwriter. Uma cópia antiga pode esquecer uma criação já efetivada no provedor; restaurar o banco não autoriza repetir pedidos financeiros com novas referências.
Integração real de réplica em arquivo e armazenamento S3 local (SeaweedFS):
TEST_LITESTREAM_BINARY=/absolute/path/litestream make test-litestreamEsse target precisa Docker somente para os testes opcionais de réplica; uso normal continua sem Docker. CI executa ambos os backends e valida o checksum do binário fixado. Não chama Woovi nem usa credenciais reais.
Roteiro e troubleshooting: docs/sandbox.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Issue registered Brazilian bank slips (boleto) and Pix charges on PagHiper with the official API. Cr
Brazilian fiscal MCP server - issue NF-e, NFC-e, NFS-e, CT-e, MDF-e and DC-e via SEFAZ.
Issue and manage Brazilian service invoices (NFS-e) by chatting with your agent, platform-hosted, no
Stone's payments gateway (api.pagar.me), orders, charges (card, Pix, boleto), customers and cards, p
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables local-first expense logging, editing, and analysis through natural language conversation, backed by a SQLite database and accessible via MCP over stdio.8MIT
- FlicenseNot gradedqualityCmaintenanceEnables retrieving customer records and triggering validated refunds via JSON-RPC over stdio.-
- FlicenseBqualityBmaintenanceEnables an AI assistant to read and manage a local project-management database over stdio: listing and creating projects, tasks, expenses, chats and people, and pulling money, margin, deadline and overdue summaries. It runs on the same service layer and SQLite file as the bundled web UI, so figures shown to the assistant and to the human always agree.14-
- AlicenseNot gradedqualityBmaintenanceEnables task management with persistent SQLite storage, along with tools, resources, subscriptions, prompts, and completions over stdio or Streamable HTTP with per-user authentication.1 npmMIT