Skip to content

Releases

fluig-mcp 1.3.0

Choose a tag to compare

@alucardigo alucardigo released this 28 Oct 13:42

Adicionado

  • fluig_version mostra a versão do servidor Fluig (servidorVersao). Se o servidor não responder,
    o diagnóstico continua e traz o motivo em servidorVersaoErro.
  • fluig_globalevent_delete exclui um evento global por chamada, pelo id. Sem confirm: true é
    dry-run: mostra o código que seria apagado e não apaga nada. Com confirm: true apaga, e a resposta
    traz o código apagado (eventoApagado), para restaurar com fluig_globalevent_save. O DELETE não é
    repetido: se a resposta não confirmar ou a conexão cair, a ferramenta relê a lista. Evento que sumiu foi
    apagado (sucesso com aviso); evento que ficou dá erro com o código na mensagem.
  • FLUIG_COOKIE_CMD e FLUIG_COOKIE_CMD_PROD: sessão só por cookie, sem senha, para tenant com MFA
    ou SSO. Um comando imprime o cookie de sessão (JSESSIONIDSSO ou jwt.token); o cliente nunca chama
    login.do e não cai para senha quando o cookie é recusado. As operações SOAP ficam indisponíveis
    nesse modo (detalhes no README).
  • FLUIG_COOKIE_TIMEOUT_MS: espera máxima do comando de cookie, padrão de 120 s (tempo para aprovar o MFA).

Corrigido

  • Escritas de eventos globais (fluig_globalevent_save e fluig_globalevent_delete) rodam uma de cada vez.
    Dois saves simultâneos podiam perder um ao outro, e um save que lia a lista antes de um delete podia
    trazer de volta o evento apagado.

fluig-mcp 1.2.0

Choose a tag to compare

@alucardigo alucardigo released this 27 Oct 17:04

Os dois pontos que a revisão da 1.1.0 (issue #3)
deixou de fora por mudarem o comportamento de ferramentas que já existiam.

⚠️ Mudanças de comportamento

  • As doze escritas que rodavam sem confirm exigem confirm: true em produção:
    fluig_dataset_save, fluig_dataset_enable, fluig_globalevent_save,
    fluig_workflow_events_update, fluig_form_save, fluig_process_start, fluig_process_move,
    fluig_process_take, fluig_rest_post, fluig_job_add, fluig_job_delete e fluig_job_run.
    Em homologação continuam passando direto. Sem confirm, a chamada em env: "prod" é recusada
    antes de qualquer requisição. Agora toda ferramenta de escrita declara confirm no schema.
  • confirm precisa ser booleano, em toda ferramenta de escrita. Os handlers liam !!confirm,
    então a string "false" contava como confirmação; "true" em texto também passa a ser recusado.
  • O arquivo local que sobe ao Fluig só é lido de dentro da pasta de saída (FLUIG_SAIDA_DIR,
    padrão ~/fluig-mcp-saida): caminhoLocal do fluig_ged_upload, zipPath do
    fluig_form_create, xmlPath e svgPath do fluig_deploy_process. Caminho relativo passa a ser
    relativo a ela. Antes, um texto plantado no Fluig podia induzir o agente a publicar
    ~/.ssh/id_rsa no GED. Quem subia arquivo de outra pasta copia para lá antes; xml inline no
    fluig_deploy_process continua valendo.

Instalação: npx -y fluig-mcp@1.2.0 (veja o README e o docs/clientes.md), ou o tarball anexado a este Release.

Changelog completo: https://github.com/alucardigo/fluig-mcp/blob/v1.2.0/CHANGELOG.md

fluig-mcp 1.1.0

Choose a tag to compare

@alucardigo alucardigo released this 27 Oct 12:01

Contribuições da comunidade: a proposta e os PRs de
Gian (@kyso1) — issue #3,
#4, #5,
#6, #7 —
e o de Antonio (@antoniosdn) — #2.
Validado contra um Fluig 1.7.1 de produção (pelos autores) e um Fluig 1.8 de homologação.

⚠️ Mudanças de comportamento

  • Todo destino fica preso à pasta de saída (FLUIG_SAIDA_DIR, padrão ~/fluig-mcp-saida),
    inclusive nos downloads (fluig_process_attachment_download, fluig_ged_download,
    fluig_process_diagram_get, fluig_workflow_exporter). Caminho fora dela é recusado, e caminho
    relativo passa a ser relativo a ela, não à pasta do processo. Quem baixava direto no projeto
    aponta FLUIG_SAIDA_DIR para uma subpasta dedicada — nunca a raiz do repositório.
  • Leituras grandes voltam cortadas em 20 000 caracteres (fluig_dataset_get,
    fluig_process_export_xml, fluig_process_events_xml), com aviso. Use destino para o texto
    inteiro ou maxChars para outro limite.
  • fluig_form_list vazio devolve { total: 0, aviso } em vez de [].

Adicionado

  • fluig_dataset_run filtra no servidor: filters (eq, ne, contains, starts, ends,
    between), match: "any" para OU, constraints cruas, serverLimit (sqlLimit) e order
    (#5, @kyso1). Condição, type, match ou
    serverLimit inválidos são erro, nunca um filtro diferente em silêncio.
  • FLUIG_PASS_CMD / FLUIG_PASS_CMD_PROD: a senha vem de um comando do cofre, sem shell, e um
    comando que falha para tudo antes do login (#6, @kyso1).
  • docs/clientes.md: instalação no Claude Code, Codex, GitHub Copilot (VS Code),
    Cursor e Claude Desktop (#6, @kyso1).
  • destino e maxChars nas ferramentas que devolvem texto grande
    (#7, @kyso1).
  • fluig_version mostra o colleagueId em uso e de onde ele veio.
  • Releases: publicar um Release no GitHub anexa o tarball do pacote (com SHA-256), publica
    @alucardigo/fluig-mcp no GitHub Packages e, com a publicação no npm ligada, fluig-mcp no
    npmjs.com com provenance.

Corrigido

  • Sessão expirada é refeita sozinha, uma vez por chamada: 401, página de login e o desvio
    SAML do Fluig Identity, que chega como HTTP 200 (#2,
    @antoniosdn). Também o 500 com UT010031: Login failed que as rotas antigas
    /ecm/api/rest/ecm/* devolvem sem sessão. Downloads binários e _restRaw não reportam a
    página de SSO como sucesso.
  • colleagueId pela sessão quando FLUIG_USERCODE não está definido: onde o código do
    colaborador é a matrícula, fluig_form_list voltava vazio sem erro
    (#4, @kyso1).
  • Chamadas simultâneas com env diferentes trocavam de servidor no meio: depois do primeiro
    await, uma chamada de homologação podia continuar no cliente de produção.
  • fluig_process_events_xml corta por evento inteiro, em vez de devolver JSON partido.
  • fluig_globalevent_save não apaga mais os outros eventos globais quando a leitura da lista
    falha (a rota grava a lista inteira e o código partia de uma lista vazia).
  • Upload para o GED e criação de formulário não reportam a página de login/SSO como sucesso.
  • fluig_dataset_run avisa (limitadoPeloServidor) quando o serverLimit cortou o resultado.
  • CLI (fluig-cli): --env prod; ajuda e comando desconhecido sem rodar o FLUIG_PASS_CMD;
    arquivos gravados na pasta de saída, com nome vindo do servidor sem pasta; form get não
    corrompe mais arquivo binário; dataset run --limit filtra no servidor.
  • A descrição de env dizia ao agente que produção era fluig.exemplo.com.br.
  • npm run check cobre todos os arquivos, inclusive a CLI.

Segurança

  • Depois de uma senha recusada, nenhum novo login naquele ambiente até fluig_session_reset:
    antes, cada chamada de ferramenta seguinte tentava de novo, e três bastavam para bloquear a
    conta no AD.
  • resolveTenant (FLUIG_COMPANY=-1) não manda mais a senha na URL
    (#4, @kyso1).
  • Pasta de saída sem escape por link simbólico, junction ou link físico (gravação por
    temporário + rename), pasta 0700 e arquivos 0600. FLUIG_SAIDA_DIR aceita ~ e recusa
    caminho relativo; no Windows, nome reservado ou terminado em ponto/espaço é recusado.
  • FLUIG_PASS_CMD usa só a primeira linha da saída, recusa saída fora de UTF-8 antes do login e
    nunca mostra o stdout no erro.
  • Ferramentas de escrita recusam texto que saiu cortado de uma leitura.
  • Dependências: npm audit zerado (eram 12 vulnerabilidades, 1 crítica e 8 altas).
    @modelcontextprotocol/sdk 1.32.1, undici 6.29.1 (ainda na linha 6, por causa do Node 20),
    body-parser 2.4.0 e fast-uri 3.1.9. soap 1.14.0, conferido contra um Fluig real: as
    chamadas SOAP de leitura devolvem exatamente o mesmo que na 1.10.
  • CI e release: actions fixadas por SHA (checkout 7, setup-node 7, gitleaks-action 3 — a v2
    rodava em Node 20, que saiu dos runners do GitHub), Dependabot semanal com uma semana de espera,
    reporte privado de vulnerabilidade ligado.
  • README, SECURITY e CONTRIBUTING não prometem mais confirm em toda escrita: 12 ferramentas
    operacionais ainda não o exigem, e a lista está no README.

Instalação: npx -y github:alucardigo/fluig-mcp#v1.1.0 (veja o README), ou o tarball anexado a este Release.

Changelog completo: https://github.com/alucardigo/fluig-mcp/blob/v1.1.0/CHANGELOG.md