fsext-mcp-server-java

Fsext-MCP-Server(Java): Um servidor MCP completo e seguro para operações no sistema de arquivos local, com ferramentas integradas de processamento de imagem, OCR e mídia.

Documentação

FsExt-MCP-Server (Java)

Visão Geral

Um servidor Model Context Protocol (MCP) de alto desempenho e seguro, construído com Quarkus para operações locais de sistema de arquivos, equipado com processamento nativo de imagens, OCR Tesseract e ferramentas utilitárias de mídia. Totalmente compatível com a especificação oficial do MCP, entregando esquemas padronizados de requisição/resposta, I/O de streaming para arquivos grandes, implantação remota multi-transporte e fluxos robustos de busca e substituição de texto para integração com agentes LLM.

Recursos Principais

  • Gerenciamento Completo de Arquivos e Diretórios: Suporta criação, exclusão, cópia, movimentação, inspeção de metadados e validação de existência de arquivos; cópia/movimentação recursiva de árvores de diretórios completas com proteções de segurança contra sobrescrita.
  • Pipeline de Leitura e Escrita de Arquivos em Streaming: Carregamento completo de texto, streaming de texto segmentado linha por linha, I/O binário em blocos e lógica de sobrescrita/append de texto e binário projetada para evitar carregar arquivos grandes inteiros na memória heap da JVM.
  • Busca Avançada e Substituição In-Place: Varredura recursiva de conteúdo em todo o diretório, correspondência contextual em múltiplos arquivos com linhas de contexto pré/pós configuráveis, suporte a expressões regulares, correspondência sem diferenciar maiúsculas/minúsculas e substituição atômica de texto in-place com estatísticas de contagem de correspondências.
  • Kit de Ferramentas de Processamento Nativo de Imagens: Utilitários de imagem de alta velocidade alimentados por Tess4J, incluindo redimensionamento com proporção bloqueada e preenchimento de canvas, recorte retangular preciso e rotação arbitrária no sentido horário.
  • Extração de Texto com OCR Tesseract: Reconhecimento confiável de texto em imagens rasterizadas, apoiado por binários locais do Tesseract. Sem implementações alternativas em WASM; configuração de caminho binário vazio não acionará mecanismos alternativos de OCR baseados em JS. Suporte a tessdata em múltiplos idiomas com diretórios de binários e de dados configuráveis.
  • Validação Estrita de Entrada e Esquema de Resposta Unificado: Cada ferramenta aplica validação estrita de esquema JSON additionalProperties: false para bloquear campos de entrada não reconhecidos e mitigar riscos de injeção. Todas as operações retornam um payload de sucesso/erro encapsulado e consistente para análise uniforme no lado do cliente.
  • Compatibilidade Multi-Transporte: Implementa todos os transportes padrão oficiais do MCP:
    • stdio: Integração nativa para clientes MCP desktop locais (Claude Desktop, Cursor, etc.)
    • sse: Transporte legado leve de streaming de eventos remotos
    • http: Transporte remoto bidirecional moderno Streamable HTTP
  • Isolamento de Sandbox de Segurança do Workspace: A flag --lock-root restringe todas as operações de sistema de arquivos exclusivamente à árvore de diretórios especificada, eliminando vulnerabilidades de escape de caminho e acesso não autorizado entre pastas.
  • Alocação Dinâmica de Porta: Detecta automaticamente a ocupação da porta padrão 8000 e aloca uma porta TCP livre acima de 1024 quando nenhum valor personalizado de --port é fornecido.
  • Otimizações de Runtime Nativo Quarkus: Baixa latência de inicialização, pegada mínima de memória, suporte CORS integrado para implantações remotas HTTP/SSE e lógica de encerramento gracioso de conexão para sessões remotas de longa duração.

Início Rápido

Pré-requisitos

  • Java 17+
  • Gradle (wrapper incluído no repositório, sem necessidade de instalação global)
  • Binário Tesseract (opcional, necessário apenas para as funções de ferramenta OCR)

1. Compilar o Uber Jar Executável

Use o wrapper Gradle incluído para compilar e empacotar um jar executável autocontido:

# Windows
./gradlew.bat clean buildRunJar

# macOS / Linux
./gradlew clean buildRunJar

Caminho do artefato de saída: build/fsext-mcp-server-<version>.jar

2. Iniciar o Servidor a partir do Jar Empacotado

Substitua <x.y.z> pela string da sua versão real de build.

# Default stdio mode, unrestricted full filesystem access
java -jar build/fsext-mcp-server-x.y.z.jar

# Secure locked workspace mode (recommended for production agent usage)
java -jar build/fsext-mcp-server-x.y.z.jar --lock-root /my/workspace

# Remote SSE streaming service
java -jar build/fsext-mcp-server-x.y.z.jar --transport sse --host 0.0.0.0 --port 8000 --lock-root /my/workspace

# Modern Streamable HTTP remote service
java -jar build/fsext-mcp-server-x.y.z.jar --transport http --host 127.0.0.1 --port 8080 --lock-root /my/workspace

3. Integrar com Clientes Desktop MCP (Claude Desktop / Cursor)

Exemplo de configuração JSON de cliente para integração local via transporte stdio:

{
  "mcpServers": {
    "fsext-java": {
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/fsext-mcp-server-x.y.z.jar",
        "--lock-root",
        "/my/workspace"
      ]
    }
  }
}

Configuração de Desenvolvimento Local do Repositório de Código-Fonte

# Clone official source repository
git clone https://github.com/kurtzhi/fsext-mcp-server-java
cd fsext-mcp-server-java

# Build full executable uber jar
./gradlew clean buildRunJar

Tabela de Referência de Parâmetros de Inicialização via CLI

ParâmetroValor PadrãoDescrição
--transportstdioImplementação de transporte MCP: stdio / sse / http
--host127.0.0.1Endereço de bind de rede; completamente ignorado no transporte stdio
--port8000Porta TCP de escuta do serviço. Se a porta padrão 8000 estiver ocupada e nenhuma porta personalizada for fornecida, seleciona automaticamente uma porta livre ≥1024; ignorado no transporte stdio
--origin*Lista separada por vírgulas de origens CORS permitidas para transportes remotos HTTP/SSE
--lock-rootVazioRestringe todas as operações de sistema de arquivos a este diretório raiz; acesso irrestrito ao SO se omitido

Exemplos de Inicialização para Implantação em Produção

1. Modo Stdio Local (Clientes Desktop MCP)

java -jar build/fsext-mcp-server-x.y.z.jar --lock-root /my/workspace

2. Modo de Transporte SSE Remoto

java -jar build/fsext-mcp-server-x.y.z.jar --transport sse --host 0.0.0.0 --port 8000 --lock-root /my/workspace

Endpoints SSE

  1. Canal de assinatura de stream SSE de longa duração (push de eventos do servidor): http://<host>:<port>/sse
  2. Canal de envio de requisições de cliente JSON-RPC: http://<host>:<port>/messages

Configuração de Conexão do MCP Inspector

  • Tipo de Transporte: SSE
  • Endereço de Conexão: http://127.0.0.1:8000/sse

3. Transporte Remoto HTTP Streamable (Padrão Moderno Oficial)

java -jar build/fsext-mcp-server-x.y.z.jar --transport http --host 0.0.0.0 --port 8000 --lock-root /my/workspace

Endpoint Bidirecional Unificado

Ponto de entrada único compartilhado que lida com todas as requisições de clientes e tráfego de streaming do servidor: http://<host>:<port>/mcp

Configuração de Conexão do MCP Inspector

  • Tipo de Transporte: Streamable HTTP
  • Endereço de Conexão: http://127.0.0.1:8000/mcp

4. Comparação entre Transportes SSE e HTTP Streamable

RecursoTransporte SSE de Dois EndpointsTransporte HTTP Streamable de Endpoint Único
Arquitetura de EndpointsDois endpoints separados: assinatura de stream GET + envio de mensagens POSTURL única unificada para tráfego bidirecional completo
Padrão de ComunicaçãoApenas push unidirecional de eventos servidor-para-clienteComunicação híbrida bidirecional completa de requisição/stream
Confiabilidade da ConexãoPropenso a quedas de sessão, sincronização complexa de estado entre endpointsRecuperação automática de sessão, otimizado para implantações remotas de alta concorrência
Status da EspecificaçãoImplementação de compatibilidade legada; não recomendado para novas implantaçõesPadrão MCP oficial atual para todas as integrações remotas de rede

Charsets de Arquivos de Texto Suportados

Todos os identificadores de charset não diferenciam maiúsculas/minúsculas; valores válidos para operações de leitura/escrita de texto:

  • utf-8 / UTF_8
  • iso-8859-1 / ISO_8859_1
  • utf-16 / UTF_16
  • utf-16be / UTF_16BE
  • utf-16le / UTF_16LE
  • ascii / US_ASCII

Especificação Global de Resposta Unificada

Todas as ferramentas MCP compartilham uma estrutura JSON encapsulada de nível superior idêntica, tanto para execução bem-sucedida quanto para estados de falha em runtime. Os payloads de negócio de cada ferramenta são aninhados dentro do sub-objeto info sob o campo raiz res.

Definição do Esquema Principal

{
  "res": {
    "success": boolean,
    "info": object
  }
}
  • success: Flag global de status da operação
    • true: A lógica da ferramenta foi concluída sem exceções; info contém os dados de retorno específicos da ferramenta
    • false: A operação falhou (bloqueio de escape do workspace, arquivo ausente, erro de I/O, esquema de entrada inválido, permissão negada, etc.)
  • Comportamento duplo de info:
    1. Estado de sucesso (success: true): Payload personalizado estruturado, exclusivo de cada ferramenta
    2. Estado de falha (success: false): Objeto de erro padronizado com código de erro legível por máquina e explicação legível por humanos
      "info": {
        "code": "ERROR_CODE_IDENTIFIER",
        "message": "Detailed human-readable failure description"
      }
      

Exemplos de Payloads de Resposta

1. Resposta de Listagem de Diretório Bem-Sucedida

{
  "res": {
    "success": true,
    "info": {
      "paths": [
        "/workspace/demo/Main.java",
        "/workspace/demo/util/FileTool.java"
      ]
    }
  }
}

2. Resposta de Falha por Bloqueio de Segurança de Escape do Workspace

{
  "res": {
    "success": false,
    "info": {
      "code": "WORKSPACE_ESCAPE_FORBIDDEN",
      "message": "Access restricted: Path `/etc/passwd` is outside allowed workspace `/my/workspace`"
    }
  }
}

Referência Completa das Ferramentas MCP

Todos os esquemas de entrada de ferramentas aplicam validação estrita additionalProperties: false para rejeitar parâmetros não reconhecidos e mitigar vetores de ataque de injeção de caminho malicioso.

1. Ferramentas de Operação de Diretório

fs_list_directory

Varre o diretório alvo (superficial ou recursivo) e retorna caminhos absolutos de arquivos filtrados, com suporte a filtros de tipo e extensão. Parâmetros

  • source_dir (string, obrigatório): Diretório raiz para varredura
  • recursive (booleano, obrigatório): Habilita travessia recursiva completa de todos os subdiretórios
  • only_files (booleano, obrigatório): Filtra os resultados para retornar apenas arquivos regulares, excluindo diretórios
  • file_extension (string, opcional, padrão=""): Filtra a saída pela extensão de sufixo do arquivo alvo

fs_copy_directory

Copia recursivamente uma árvore de diretórios inteira com comportamento de sobrescrita configurável para diretórios de destino conflitantes. Parâmetros

  • source_dir (string, obrigatório): Caminho da árvore de diretórios de origem
  • copy_dest_dir (string, obrigatório): Caminho do diretório de saída alvo
  • overwrite (booleano, opcional, padrão=false): Limpa e sobrescreve o conteúdo pré-existente do diretório de destino

fs_move_directory

Realoca atomicamente uma árvore de diretórios inteira para um novo caminho alvo. Falha imediatamente se o destino existir, a menos que a sobrescrita esteja explicitamente habilitada, para evitar perda acidental de dados. Parâmetros

  • source_dir (string, obrigatório): Caminho do diretório de origem
  • dest_dir (string, obrigatório): Caminho do diretório de destino
  • overwrite (booleano, opcional, padrão=false): Permite sobrescrever diretórios de destino conflitantes

2. Ferramentas Básicas de Operação de Arquivo Único

fs_create_file

Cria um novo arquivo de texto, gera automaticamente diretórios pai ausentes, com conteúdo de texto inicial e codificação de charset configuráveis. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo alvo
  • content (string, opcional, padrão=""): Conteúdo de texto inicial a ser gravado no novo arquivo
  • charset (string, opcional, padrão="utf-8"): Identificador de charset suportado (veja a lista de charsets acima)

fs_delete_file

Exclui permanentemente apenas um único arquivo regular; rejeita entradas de caminho de diretório para bloquear riscos de exclusão recursiva em massa. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo regular alvo

fs_copy_file

Copia um único arquivo preservando os metadados originais do sistema de arquivos, com sobrescrita configurável para arquivos alvo conflitantes. Parâmetros

  • source_file_path (string, obrigatório): Caminho absoluto do arquivo de origem
  • dest_file_path (string, obrigatório): Caminho absoluto do arquivo de saída alvo
  • overwrite (booleano, opcional, padrão=false): Sobrescreve o arquivo de destino pré-existente

fs_move_file

Move atomicamente um único arquivo para um novo caminho absoluto, com lógica de sobrescrita configurável para arquivos de destino conflitantes. Parâmetros

  • source_file_path (string, obrigatório): Caminho absoluto do arquivo de origem
  • dest_file_path (string, obrigatório): Caminho absoluto do arquivo de destino
  • overwrite (booleano, opcional, padrão=false): Permite sobrescrever arquivos de destino conflitantes

fs_get_file_info

Recupera metadados completos de arquivos ou diretórios, com cálculo opcional de digest criptográfico SHA-256 para validação de integridade. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto da entrada do sistema de arquivos alvo
  • calc_digest (booleano, opcional, padrão=false): Calcula o hash SHA-256 do conteúdo do arquivo

fs_is_file_exists

Verificação leve de existência para qualquer entrada do sistema de arquivos (arquivo ou diretório) sem carregar metadados completos. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto para verificar a existência

3. Ferramentas de Leitura e Escrita de Arquivos

fs_read_full_text

Lê o conteúdo de texto completo de um arquivo alvo com codificação de texto especificada pelo usuário. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo de texto alvo
  • charset (string, opcional, padrão="utf-8"): Identificador de charset suportado

fs_read_text_range

Streaming de texto segmentado por linhas, otimizado para arquivos grandes; pula linhas iniciais e limita o total de linhas lidas para evitar alocação excessiva de heap. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo de texto alvo
  • lines_to_skip (inteiro, obrigatório, min=0): Número de linhas iniciais a pular durante a leitura
  • max_lines_to_read (inteiro, obrigatório, min=0): Número máximo total de linhas a extrair do arquivo
  • line_separator (string, opcional, padrão="\n"): Caractere delimitador de quebra de linha
  • charset (string, opcional, padrão="utf-8"): Identificador de charset suportado

fs_read_binary_chunk

Leitura em streaming por blocos para arquivos binários; retorna cargas úteis de bytes codificadas em Base64 para transmissão segura via rede JSON-RPC, com detecção de marcador de fim de fluxo. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo binário alvo
  • bytes_to_skip (inteiro, obrigatório, min=0): Deslocamento inicial em bytes a pular antes de ler o bloco
  • max_bytes_to_read (inteiro, obrigatório, min=0): Comprimento máximo em bytes a ler em um único bloco

fs_write_text

Grava conteúdo de texto codificado no arquivo alvo, com suporte a sobrescrita completa ou modo de gravação somente anexação. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo de saída alvo
  • text (string, obrigatório, minLength=1): Conteúdo de texto bruto a persistir
  • append (booleano, opcional, padrão=false): Alternância de modo de anexação (false = sobrescrita completa do arquivo)
  • charset (string, opcional, padrão="utf-8"): Identificador de charset suportado

fs_write_binary

Decodifica carga útil binária em Base64 e grava bytes brutos no arquivo alvo; suporta modo de anexação para fluxos de upload binário em múltiplos blocos. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo de saída alvo
  • base64_data (string, obrigatório, minLength=1): Carga útil de bytes binários brutos codificada em Base64
  • append (booleano, opcional, padrão=false): Anexar dados binários ao final do arquivo (false = sobrescrita completa)

4. Ferramentas de Busca de Conteúdo e Substituição no Local

fs_search_files_by_content

Escaneia recursivamente árvores de diretórios e retorna caminhos absolutos de todos os arquivos contendo padrões de texto correspondentes; suporta regex, insensibilidade a maiúsculas/minúsculas e filtragem por extensão de arquivo. Parâmetros

  • dir_path (string, obrigatório): Diretório raiz para escaneamento recursivo de conteúdo
  • recursive (booleano, obrigatório): Habilitar recursão completa em subdiretórios
  • search_term (string, obrigatório): Palavra-chave de texto simples ou padrão de expressão regular
  • is_regex (booleano, opcional, padrão=false): Tratar search_term como padrão regex
  • ignore_case (booleano, opcional, padrão=true): Alternância de correspondência insensível a maiúsculas/minúsculas
  • file_extension (string, opcional, padrão=""): Filtrar arquivos escaneados por sufixo de extensão
  • charset (string, opcional, padrão="utf-8"): Charset usado para analisar arquivos alvo

fs_search_in_files_by_content

Correspondência de conteúdo em massa em múltiplos diretórios, retorna resultados estruturados com linhas de contexto pré/pós configuráveis ao redor do conteúdo correspondente, além de limites rígidos globais de contagem de resultados. Parâmetros

  • dir_path (string, obrigatório): Caminho absoluto do diretório raiz de escaneamento
  • recursive (booleano, obrigatório): Habilitar travessia recursiva completa de subdiretórios
  • search_term (string, obrigatório): Palavra-chave de busca ou padrão regex
  • limit (inteiro, obrigatório): Limite máximo rígido no total de entradas correspondentes retornadas
  • is_regex (booleano, opcional, padrão=false): Habilitar lógica de correspondência com expressões regulares
  • ignore_case (booleano, opcional, padrão=true): Desabilitar correspondência sensível a maiúsculas/minúsculas
  • lines_before (inteiro, opcional, padrão=0): Número de linhas de contexto antes de cada linha correspondente
  • lines_after (inteiro, opcional, padrão=0): Número de linhas de contexto após cada linha correspondente
  • file_extension (string, opcional, padrão=""): Filtrar arquivos escaneados por sufixo de extensão
  • charset (string, opcional, padrão="utf-8"): Charset usado para analisar arquivos alvo

fs_search_in_file_by_content

Busca de conteúdo de precisão em arquivo único, retorna segmentos correspondentes estruturados com linhas de contexto pré/pós configuráveis para fluxos de inspeção de código e documentos. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo único alvo
  • search_term (string, obrigatório): Palavra-chave de busca ou padrão regex
  • is_regex (booleano, opcional, padrão=false): Habilitar lógica de correspondência com expressões regulares
  • ignore_case (booleano, opcional, padrão=true): Alternância de correspondência insensível a maiúsculas/minúsculas
  • lines_before (inteiro, opcional, padrão=0): Linhas de contexto anteriores para cada correspondência
  • lines_after (inteiro, opcional, padrão=0): Linhas de contexto posteriores para cada correspondência
  • charset (string, opcional, padrão="utf-8"): Charset usado para analisar o arquivo alvo

fs_file_replace

Executa substituição global de texto no local dentro de um único arquivo alvo; retorna a contagem total de segmentos de texto correspondentes e substituídos após a conclusão da operação de gravação. Parâmetros

  • file_path (string, obrigatório): Caminho absoluto do arquivo editável alvo
  • search_term (string, obrigatório): Substring de texto a localizar e substituir
  • replacement (string, obrigatório): Nova carga útil de texto de substituição
  • line_separator (string, opcional, padrão="\n"): Delimitador de quebra de linha para análise do arquivo

5. Ferramentas de Processamento de Imagem

fs_image_resize

Redimensiona a imagem de origem para dimensões de pixel especificadas, com preservação nativa da proporção e preenchimento transparente do canvas para preencher exatamente as dimensões de resolução alvo. Parâmetros

  • source_path (string, obrigatório): Caminho absoluto da imagem de entrada de origem
  • dest_path (string, obrigatório): Caminho absoluto da imagem de saída redimensionada
  • width (inteiro, obrigatório, >0): Dimensão de largura em pixels alvo
  • height (inteiro, obrigatório, >0): Dimensão de altura em pixels alvo
  • keep_aspect_ratio (booleano, opcional, padrão=true): Bloquear proporção original da imagem durante o redimensionamento
  • pad_to_target (booleano, opcional, padrão=true): Adicionar preenchimento transparente para preencher exatamente largura/altura alvo quando a proporção estiver bloqueada

fs_image_crop

Extrai uma região retangular de pixels da imagem de origem e exporta como arquivo de imagem de saída independente. Parâmetros

  • source_path (string, obrigatório): Caminho absoluto da imagem de entrada de origem
  • dest_path (string, obrigatório): Caminho absoluto da imagem de saída recortada
  • x (inteiro, obrigatório, ≥0): Coordenada de pixel esquerda da origem da região de recorte
  • y (inteiro, obrigatório, ≥0): Coordenada de pixel superior da origem da região de recorte
  • width (inteiro, obrigatório, >0): Largura em pixels da região retangular recortada
  • height (inteiro, obrigatório, >0): Altura em pixels da região retangular recortada

fs_image_rotate

Rotaciona a imagem de origem no sentido horário por valores arbitrários de graus em ponto flutuante; expande automaticamente as dimensões do canvas de saída para reter todo o conteúdo da imagem sem cortar bordas. Parâmetros

  • source_path (string, obrigatório): Caminho absoluto da imagem de entrada de origem
  • dest_path (string, obrigatório): Caminho absoluto da imagem de saída rotacionada
  • degrees (número, obrigatório): Ângulo de rotação no sentido horário em graus

6. Ferramenta de Extração de Texto OCR

fs_ocr_extract_text

Extrai texto legível por humanos de arquivos de imagem raster via instalação local do binário Tesseract OCR. Não existe implementação de fallback em JavaScript WASM; tesseract_bin_path vazio não inicializará mecanismos alternativos de OCR baseados na web. Parâmetros

  • image_path (string, obrigatório): Caminho absoluto da imagem de entrada para reconhecimento de texto
  • tesseract_bin_path (string, opcional, padrão=""): Caminho absoluto para o binário executável local do Tesseract; valor vazio usa apenas a busca no PATH do sistema
  • tessdata_path (string, opcional, padrão=""): Caminho absoluto do diretório contendo arquivos de dados de treinamento de idioma do Tesseract
  • lang (string, opcional, padrão="eng"): Prefixo do código de idioma correspondente aos arquivos de treinamento tessdata disponíveis

Dependências de Runtime Principais

  • io.quarkus:quarkus-bom:3.37.1: BOM de alinhamento de versão Quarkus
  • io.quarkus:quarkus-arc: Contêiner de injeção de dependência CDI Quarkus
  • io.quarkus:quarkus-reactive-routes: Núcleo de roteamento HTTP reativo
  • io.quarkiverse.mcp:quarkus-mcp-server-http:1.13.1: Implementação de transporte MCP HTTP & SSE streamable
  • io.quarkiverse.mcp:quarkus-mcp-server-stdio:1.13.1: Implementação de transporte MCP Stdio
  • net.sourceforge.tess4j:tess4j:5.18.0: Biblioteca de ligação Java Tesseract OCR

Tarefas Gradle de Build e Desenvolvimento do Projeto

# Clean all compiled build artifacts and temporary directories
./gradlew clean

# Full clean + compile + package self-contained uber jar
./gradlew clean buildRunJar

Licença

Este projeto é de código aberto sob a Apache License 2.0. Consulte o arquivo LICENSE no nível raiz para os termos e condições legais completos da licença.

Avisos de Software de Terceiros

Este software inclui múltiplas bibliotecas de dependência de código aberto. Todos os componentes de terceiros mantêm seus detentores de direitos autorais originais e seus respectivos acordos de licença de código aberto. Um detalhamento completo de todas as bibliotecas de terceiros, versões e licenças está disponível no arquivo THIRD-PARTY-NOTICES no nível raiz e empacotado dentro do artefato JAR em /META-INF/THIRD-PARTY-NOTICES.

Repositório e Rastreamento de Problemas