Kafka Schema Registry

Um servidor abrangente do Message Control Protocol (MCP) para o Kafka Schema Registry.

Documentação

MseeP.ai Security Assessment Badge License: MIT Python Version Docker Pulls GitHub Release GitHub Issues Docker Image Size Maintained MCP Specification Trust Score

Kafka Schema Registry MCP Server

Um servidor Model Context Protocol (MCP) abrangente que fornece ao Claude Desktop e outros clientes MCP ferramentas para operações com o Kafka Schema Registry. Recursos avançados de suporte a contexto de schema, gerenciamento de múltiplos registries e capacidades abrangentes de exportação de schemas.

Kafka Schema Registry MCP Logo

🎯 Implementação MCP Verdadeira: Utiliza FastMCP 3.2.0+ (3.x, limitado abaixo de 4) com conformidade com a especificação MCP 2025-11-25. Totalmente compatível com Claude Desktop e outros clientes MCP usando JSON-RPC sobre stdio.

Versão mais recente: v2.2.2 | Docker: aywengo/kafka-schema-reg-mcp:stable

📋 Sumário

🚀 Início Rápido

1. Execute com Docker (Recomendado)

# Latest stable release
docker pull aywengo/kafka-schema-reg-mcp:stable

# Recommended: Run with SLIM_MODE for optimal performance (reduced essential tool set)
docker run -e SCHEMA_REGISTRY_URL=http://localhost:8081 -e SLIM_MODE=true aywengo/kafka-schema-reg-mcp:stable

# OR run with full feature set for administrators/SRE
docker run -e SCHEMA_REGISTRY_URL=http://localhost:8081 aywengo/kafka-schema-reg-mcp:stable

2. Configure o Claude Desktop

Copie uma configuração pronta para uso de config-examples/:

# macOS
cp config-examples/claude_desktop_stable_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Linux  
cp config-examples/claude_desktop_stable_config.json ~/.config/claude-desktop/config.json

3. Comece a Usar com o Claude

Reinicie o Claude Desktop e experimente estes prompts:

  • "Liste todos os contextos de schema"
  • "Mostre-me os subjects no contexto de produção"
  • "Registre um novo schema de usuário com campos para id, nome e email"

✨ Principais Recursos

  • 🤖 Integração com Claude Desktop - Integração MCP direta com interface em linguagem natural
  • 🏢 Suporte a Múltiplos Registries - Gerencie até 8 instâncias do Schema Registry simultaneamente
  • 📋 Contextos de Schema - Agrupamento lógico para isolamento de ambientes de produção/staging
  • 🔄 Migração de Schemas - Migração entre registries com backup e verificação
  • 📊 Exportação Abrangente - Formatos JSON, Avro IDL para backup e documentação
  • 🔒 Segurança de Produção - Modo VIEWONLY e controle de acesso por registry
  • 🔐 Autenticação OAuth 2.1 - Segurança de nível empresarial com permissões baseadas em escopo
  • 📈 Progresso em Tempo Real - Operações assíncronas com rastreamento de progresso e cancelamento
  • 🔗 Vinculação de Recursos - Navegação HATEOAS com respostas aprimoradas de ferramentas
  • 🧪 Conformidade Total com MCP - Mais de 50 ferramentas seguindo a especificação MCP 2025-11-25
  • 🚀 SLIM_MODE - Reduza a sobrecarga de ferramentas de 50+ para ~9 ferramentas essenciais para melhor desempenho do LLM

📖 Veja descrições detalhadas dos recursos: docs/api-reference.md

🛠️ Habilidades do Claude Code

Este projeto inclui 5 habilidades especializadas do Claude Code – 4 para fluxos de trabalho automatizados de desenvolvimento de schemas, além de 1 para comparação de contextos de schema (/context-compare, documentado abaixo):

Habilidades Disponíveis

  • /schema-generate - Gere schemas Avro prontos para produção a partir de linguagem natural

    /schema-generate event UserRegistered "user registration with userId, email, timestamp"
    
  • /schema-evolve - Evolua schemas com segurança com verificação automática de compatibilidade

    /schema-evolve user-profile "add optional phoneNumber field"
    
  • /migration-plan - Crie planos de migração detalhados entre ambientes

    /migration-plan development staging
    
  • /lint-and-test - Fluxos de trabalho automatizados de garantia de qualidade

    /lint-and-test quick        # Before commit (2-3s)
    /lint-and-test fix          # Auto-fix issues (20-30s)
    /lint-and-test pre-push     # Before push (10-15s)
    

Começando com as Habilidades

Início Rápido: Leia .claude-code/SKILLS_GUIDE.md - tutorial de 5 minutos

Referência Completa: .claude-code/skills/README.md - Documentação completa

Resumo de Configuração: .claude-code/skills/README.md - Detalhes de configuração

Recursos das Habilidades

  • ✅ Geração de schemas em linguagem natural com modelos
  • ✅ Verificação automática de compatibilidade (BACKWARD, FORWARD, FULL)
  • ✅ Planejamento de migração com procedimentos de rollback
  • ✅ Automação de qualidade pré-commit e pré-push
  • ✅ Integração com Black, Ruff, isort, Flake8
  • ✅ Execução de testes baseada em Docker
  • ✅ Tratamento abrangente de erros e correção automática

Experimente agora: /schema-generate event TestEvent "test with id and timestamp"

📦 Instalação

Opção A: Docker (Recomendado)

# Production stable
docker pull aywengo/kafka-schema-reg-mcp:stable

# Latest development  
docker pull aywengo/kafka-schema-reg-mcp:latest

# Specific version
docker pull aywengo/kafka-schema-reg-mcp:2.1.3

Executando com SLIM_MODE

Para reduzir a sobrecarga do LLM, execute com SLIM_MODE habilitado:

# Run with a reduced essential tool set
docker run -e SCHEMA_REGISTRY_URL=http://localhost:8081 -e SLIM_MODE=true aywengo/kafka-schema-reg-mcp:stable

💡 Benefícios do SLIM_MODE:

  • Reduz a quantidade de ferramentas a um subconjunto essencial
  • Tempos de resposta do LLM significativamente mais rápidos
  • Menor uso de tokens e custos reduzidos
  • Ideal para operações de produção somente leitura
  • Mantém suporte completo a implantação remota

Opção B: Python Local

git clone https://github.com/aywengo/kafka-schema-reg-mcp
cd kafka-schema-reg-mcp
pip install -r requirements.txt
python kafka_schema_registry_unified_mcp.py

Opção C: Docker Compose

docker-compose up -d  # Includes Schema Registry for testing

📖 Guia de instalação detalhado: docs/deployment.md

⚙️ Configuração

Modo Registry Único

export SCHEMA_REGISTRY_URL="http://localhost:8081"
export SCHEMA_REGISTRY_USER=""           # Optional
export SCHEMA_REGISTRY_PASSWORD=""       # Optional
export VIEWONLY="false"                  # Production safety
export SLIM_MODE="false"                 # Optional: Enable to reduce tool overhead (default: false)

Modo Multi-Registry (Até 8 Registries)

# Development Registry
export SCHEMA_REGISTRY_NAME_1="development"
export SCHEMA_REGISTRY_URL_1="http://dev-registry:8081"
export VIEWONLY_1="false"

# Production Registry (with safety)
export SCHEMA_REGISTRY_NAME_2="production"  
export SCHEMA_REGISTRY_URL_2="http://prod-registry:8081"
export VIEWONLY_2="true"                     # Read-only protection

Configuração do Claude Desktop

Exemplos pré-configurados disponíveis em config-examples/:

ConfiguraçãoCaso de UsoArquivo
ProduçãoImplantação Docker estávelclaude_desktop_stable_config.json
Multi-ambienteRegistries DEV/STAGING/PRODclaude_desktop_multi_registry_docker.json
Desenvolvimento LocalExecução local em Pythonclaude_desktop_config.json
Segurança Somente LeituraProdução com segurançaclaude_desktop_viewonly_config.json

📖 Guia de configuração completo: config-examples/README.md

Configuração do SLIM_MODE (Otimização de Desempenho)

O SLIM_MODE reduz o número de ferramentas MCP expostas a um subconjunto essencial, reduzindo significativamente a sobrecarga do LLM e melhorando os tempos de resposta.

💡 Recomendação: O SLIM_MODE é recomendado para a maioria dos casos de uso, pois fornece todos os recursos essenciais de gerenciamento de schemas com desempenho ideal.

Quando Usar o SLIM_MODE (Recomendado)

  • Escolha padrão para a maioria dos usuários e operações do dia a dia
  • Quando houver respostas lentas do LLM devido a muitas ferramentas
  • Para ambientes de produção focados em operações somente leitura
  • Quando você precisar apenas de recursos básicos de gerenciamento de schemas
  • Para reduzir o uso de tokens e melhorar o desempenho

Quando Usar o Modo Não-SLIM

  • Para administradores ou equipes de SRE que realizam operações de longa duração
  • Quando você precisar de operações avançadas como:
    • Migrações de schemas entre registries
    • Remoções em massa de schemas e operações de limpeza
    • Operações em lote complexas e fluxos de trabalho
    • Assistentes interativos guiados para tarefas complexas
    • Operações abrangentes de exportação/importação

Habilitar o SLIM_MODE

export SLIM_MODE="true"  # Reduces tools from 50+ to ~9
# Enables reduced essential tool set

Ferramentas Disponíveis no SLIM_MODE

Ferramentas Essenciais Somente Leitura:

  • ping - Verificação de saúde do servidor
  • set_default_registry, get_default_registry - Gerenciamento de registries
  • count_contexts, count_schemas, count_schema_versions - Estatísticas

Operações Básicas de Escrita:

  • register_schema - Registrar novos schemas
  • check_compatibility - Verificação de compatibilidade de schemas
  • create_context - Criar novos contextos

Operações Essenciais de Exportação:

  • export_schema - Exportar schema único
  • export_subject - Exportar todas as versões de subjects

Recursos Disponíveis (Todos os Modos):

  • Todos os 19 recursos permanecem disponíveis no SLIM_MODE
  • URIs de recursos registry://, schema://, subject://
  • Acesso total de leitura por meio da abordagem de recursos em primeiro lugar

Ferramentas Ocultas no SLIM_MODE:

  • Todas as ferramentas de migração (migrate_schema, migrate_context)
  • Todas as operações em lote (clear_context_batch)
  • Ferramentas avançadas de exportação/importação (export_context, export_global)
  • Todas as ferramentas interativas/elicitação (variantes *_interactive)
  • Ferramentas pesadas de estatísticas com operações assíncronas
  • Ferramentas de fluxo de trabalho
  • Ferramentas de atualização de configuração
  • Operações de exclusão

Nota: O rastreamento de status de tarefas agora é tratado pelo sistema Docket integrado do FastMCP. Ferramentas personalizadas de gerenciamento de tarefas foram removidas em favor do rastreamento nativo de tarefas do FastMCP.

Nota: Você pode alternar entre os modos reiniciando com SLIM_MODE=false para acessar o conjunto completo de ferramentas.

📊 Ferramentas e Recursos MCP

Esta seção fornece uma análise abrangente de todas as ferramentas e recursos MCP expostos pelo Kafka Schema Registry MCP Server.

Ferramentas de Wrapper de Compatibilidade Retroativa

Estas ferramentas são mantidas para compatibilidade retroativa com clientes existentes. Elas usam internamente implementações eficientes, mas são expostas como ferramentas para evitar erros de "Ferramenta não listada". Considere migrar para os recursos correspondentes para melhor desempenho.

Nome da FerramentaSLIM_MODEEscopoRecurso RecomendadoDescrição
list_registries✅leituraregistry://namesListar todos os registries configurados
get_registry_info✅leituraregistry://info/{name}Obter informações do registry
test_registry_connection✅leituraregistry://status/{name}Testar conexão do registry
test_all_registries✅leituraregistry://statusTestar todas as conexões dos registries
list_subjects✅leituraregistry://{name}/subjectsListar todos os subjects
get_schema✅leituraschema://{name}/{context}/{subject}Obter conteúdo do schema
get_schema_versions✅leituraschema://{name}/{context}/{subject}/versionsObter versões do schema
get_global_config✅leituraregistry://{name}/configObter configuração global
get_mode✅leituraregistry://modeObter modo do registry
list_contexts✅leituraregistry://{name}/contextsListar todos os contextos
get_subject_config✅leiturasubject://{name}/{context}/{subject}/configObter configuração do subject
get_subject_mode✅leiturasubject://{name}/{context}/{subject}/modeObter modo do subject

Ferramentas MCP Principais

CategoriaNomeTipoSLIM_MODEEscopoDescrição
NúcleopingFerramenta✅leituraVerificação de saúde MCP ping/pong
Gerenciamento de Registroset_default_registryFerramenta✅adminDefinir registro padrão
Gerenciamento de Registroget_default_registryFerramenta✅leituraObter registro padrão atual
Operações de Schemaregister_schemaFerramenta✅escritaRegistrar nova versão de schema
Operações de Schemacheck_compatibilityFerramenta✅leituraVerificar compatibilidade de schema
Gerenciamento de Contextocreate_contextFerramenta✅escritaCriar novo contexto
Gerenciamento de Contextodelete_contextFerramenta❌adminExcluir contexto
Gerenciamento de Assuntosdelete_subjectFerramenta❌adminExcluir assunto e versões
Configuraçãoupdate_global_configFerramenta❌adminAtualizar configuração global
Configuraçãoupdate_subject_configFerramenta❌adminAtualizar configuração do assunto
Configuraçãoadd_subject_aliasFerramenta❌escritaCriar alias de assunto apontando para um assunto existente
Configuraçãodelete_subject_aliasFerramenta❌escritaRemover um alias de assunto
Gerenciamento de Modoupdate_modeFerramenta❌adminAtualizar modo do registro
Gerenciamento de Modoupdate_subject_modeFerramenta❌adminAtualizar modo do assunto
Estatísticascount_contextsFerramenta✅leituraContar contextos
Estatísticascount_schemasFerramenta✅leituraContar schemas
Estatísticascount_schema_versionsFerramenta✅leituraContar versões de schema
Estatísticasget_registry_statisticsFerramenta❌leituraObter estatísticas abrangentes do registro
Exportaçãoexport_schemaFerramenta✅leituraExportar schema único
Exportaçãoexport_subjectFerramenta✅leituraExportar todas as versões de assunto
Exportaçãoexport_contextFerramenta❌leituraExportar todos os assuntos de contexto
Exportaçãoexport_globalFerramenta❌leituraExportar todos os contextos/schemas
Exportaçãoexport_global_interactiveFerramenta❌leituraExportação global interativa
Migraçãomigrate_schemaFerramenta❌adminMigrar schema entre registros
Migraçãomigrate_contextFerramenta❌adminMigrar contexto entre registros
Migraçãomigrate_context_interactiveFerramenta❌adminMigração de contexto interativa
Comparaçãocompare_registriesFerramenta❌leituraComparar dois registros
Comparaçãocompare_contexts_across_registriesFerramenta❌leituraComparar contextos entre registros
Comparaçãofind_missing_schemasFerramenta❌leituraEncontrar schemas ausentes
Operações em Loteclear_context_batchFerramenta❌adminLimpar contexto com operações em lote
Operações em Loteclear_multiple_contexts_batchFerramenta❌adminLimpar múltiplos contextos
Interativoregister_schema_interactiveFerramenta❌escritaRegistro de schema interativo
Interativocheck_compatibility_interactiveFerramenta❌leituraVerificação de compatibilidade interativa
Interativocreate_context_interactiveFerramenta❌escritaCriação de contexto interativa
Descoberta de Recursoslist_available_resourcesFerramenta✅leituraListar todos os recursos disponíveis
Descoberta de Recursossuggest_resource_for_toolFerramenta✅leituraObter sugestões de migração de recursos
Descoberta de Recursosgenerate_resource_templatesFerramenta✅leituraGerar modelos de URI de recursos
Elicitaçãosubmit_elicitation_responseFerramenta❌escritaEnviar resposta de elicitação
Elicitaçãolist_elicitation_requestsFerramenta❌leituraListar solicitações de elicitação
Elicitaçãoget_elicitation_requestFerramenta❌leituraObter detalhes da solicitação de elicitação
Elicitaçãocancel_elicitation_requestFerramenta❌adminCancelar solicitação de elicitação
Elicitaçãoget_elicitation_statusFerramenta❌leituraObter status do sistema de elicitação
Fluxos de Trabalholist_available_workflowsFerramenta❌leituraListar fluxos de trabalho disponíveis
Fluxos de Trabalhoget_workflow_statusFerramenta❌leituraObter status do fluxo de trabalho
Fluxos de Trabalhoguided_schema_migrationFerramenta❌adminIniciar assistente de migração de schema
Fluxos de Trabalhoguided_context_reorganizationFerramenta❌adminIniciar assistente de reorganização de contexto
Fluxos de Trabalhoguided_disaster_recoveryFerramenta❌adminIniciar assistente de recuperação de desastres
Utilitárioget_mcp_compliance_status_toolFerramenta❌leituraObter status de conformidade MCP
Utilitárioget_oauth_scopes_info_toolFerramenta❌leituraObter informações de escopos OAuth
Utilitáriotest_oauth_discovery_endpointsFerramenta❌leituraTestar endpoints de descoberta OAuth
Utilitárioget_operation_info_toolFerramenta❌leituraObter metadados de operação
Utilitáriocheck_viewonly_modeFerramenta❌leituraVerificar se o registro está no modo somente leitura
RECURSOSregistry://statusRecurso✅leituraStatus geral da conexão do registro
RECURSOSregistry://infoRecurso✅leituraConfiguração detalhada do servidor
RECURSOSregistry://modeRecurso✅leituraDetecção de modo do registro
RECURSOSregistry://namesRecurso✅leituraLista de nomes de registros configurados
RECURSOSregistry://status/{name}Recurso✅leituraStatus da conexão de registro específico
RECURSOSregistry://info/{name}Recurso✅leituraConfiguração de registro específico
RECURSOSregistry://mode/{name}Recurso✅leituraModo de registro específico
RECURSOSregistry://{name}/subjectsRecurso✅leituraListar assuntos para registro
RECURSOSregistry://{name}/contextsRecurso✅leituraListar contextos para registro
RECURSOSregistry://{name}/configRecurso✅leituraConfiguração global para registro
RECURSOSschema://{name}/{context}/{subject}Recurso✅leituraConteúdo do schema com contexto
RECURSOSschema://{name}/{subject}Recurso✅leituraConteúdo do schema no contexto padrão
RECURSOSschema://{name}/{context}/{subject}/versionsRecurso✅leituraVersões do schema com contexto
RECURSOSschema://{name}/{subject}/versionsRecurso✅leituraVersões do schema no contexto padrão
RECURSOSsubject://{name}/{context}/{subject}/configRecurso✅leituraConfiguração do assunto com contexto
RECURSOSsubject://{name}/{subject}/configRecurso✅leituraConfiguração do assunto no contexto padrão
RECURSOSsubject://{name}/{context}/{subject}/modeRecurso✅leituraModo do assunto com contexto
RECURSOSsubject://{name}/{subject}/modeRecurso✅leituraModo do assunto no contexto padrão
RECURSOSelicitation://response/{request_id}Recurso❌escritaTratamento de resposta de elicitação

💬 Exemplos de Uso

Gerenciamento de Schema

# In Claude Desktop, use natural language:
"Register a user schema with id, name, email fields"
"Check if my updated schema is compatible"
"Export all schemas from staging context"
"List subjects in production context"

Operações Multi-Registro

"Compare development and production registries"
"Migrate user-events schema from staging to production"
"Test connections to all registries"
"Show me registry statistics"

Operações em Lote

"Clear all schemas from test context"
"Export global schemas for backup"
"Count schemas across all contexts"

📖 Mais exemplos: examples/ | 📖 Casos de uso: docs/use-cases.md

🔒 Autenticação e Segurança

Suporte OAuth 2.1 (Opcional)

# Enable authentication
export ENABLE_AUTH=true
export AUTH_ISSUER_URL="https://your-oauth-provider.com"
export AUTH_AUDIENCE="your-client-id"

Provedores Suportados: Azure AD, Google OAuth, Keycloak, Okta, GitHub

Escopos de Permissão:

  • read - Visualizar schemas, configurações
  • write - Registrar schemas, atualizar configurações (inclui leitura)
  • admin - Excluir assuntos, controle total (inclui escrita + leitura)

Recursos de Segurança em Produção

  • Modo VIEWONLY - Evita alterações acidentais em produção
  • Validação de URL - Proteção SSRF com acesso localhost configurável
  • Autorização Baseada em Escopo - Permissões granulares em nível de ferramenta
  • Controles por Registro - Configurações de segurança independentes

📖 Guia de segurança: docs/deployment.md#security

📚 Documentação

GuiaDescrição
Referência da APIDocumentação completa das ferramentas com exemplos
Alias de AssuntoComo adicionar e remover aliases de assunto
Casos de UsoCenários do mundo real e padrões de implementação
Guia de ImplantaçãoDocker, Kubernetes, plataformas em nuvem, CI/CD
Integração com IDEConfiguração para VS Code, Claude Code, Cursor
Exemplos de ConfiguraçãoConfigurações prontas para Claude Desktop
Guia de TestesConfiguração abrangente de testes
ChangelogHistórico de versões e notas de migração
Destaques v2.0.0Recursos da versão principal

Recursos Adicionais

  • Exemplos - Exemplos de uso e amostras de código
  • Scripts - Scripts utilitários e automação
  • Helm Charts - Implantação Kubernetes
  • Testes - Suites de teste e validação

🧪 Testes

Teste Rápido

cd tests/
./run_all_tests.sh --quick    # Essential tests
./run_all_tests.sh           # Complete test suite

Testes com Docker

python tests/test_docker_mcp.py

Testes com MCP Inspector (orientados por UI)

# From repository root
cd inspector-tests

# Single registry (DEV)
./run-inspector-tests.sh stable

# Multi-registry (DEV + PROD)
./run-inspector-tests.sh multi

# Test a specific Docker tag
DOCKER_VERSION=latest ./run-inspector-tests.sh stable

📖 Guia de testes: TESTING_SETUP_GUIDE.md

🚀 Implantação

Docker em Produção

# With docker-compose
docker-compose up -d

# Direct Docker  
docker run -d -p 38000:8000 \
  -e SCHEMA_REGISTRY_URL=http://registry:8081 \
  aywengo/kafka-schema-reg-mcp:stable

Kubernetes

# Using Helm charts
helm install kafka-schema-mcp ./helm/kafka-schema-reg-mcp

📖 Guia de implantação: docs/deployment.md

🤝 Contribuindo

Aceitamos contribuições! Consulte:

Configuração Rápida de Desenvolvimento

git clone https://github.com/aywengo/kafka-schema-reg-mcp
cd kafka-schema-reg-mcp
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python kafka_schema_registry_unified_mcp.py

🆕 Novidades

v2.2.x (Mais Recente)

  • 📋 MCP 2025-11-25 - Conformidade com protocolo usando tarefas em segundo plano nativas do FastMCP
  • 🔒 FastMCP 3.2.0+ - 3.x, limitado abaixo de 4 até o FastMCP 4 GA (#177)

v2.1.x

  • 🧭 Alias de Assunto - Novas ferramentas add_subject_alias e delete_subject_alias
  • 🛠️ Correções - Correções no assistente de evolução e na importação interativa
  • 📦 Melhorias - Refinamentos contínuos das ferramentas MCP e melhorias nos testes
  • 🗑️ Ferramentas Obsoletas Removidas - Ferramentas personalizadas de gerenciamento de tarefas removidas em favor do sistema Docket integrado do FastMCP

v2.0.x

  • 🔒 Correções de Segurança - Exposição de credenciais resolvida no registro de logs
  • 🤖 Migração Interativa de Schema - Migração inteligente com elicitação de preferências do usuário
  • 💾 Backups Automáticos - Criação de backup pré-migração
  • ✅ Verificação Pós-Migração - Validação abrangente de schema
  • 🚀 Framework FastMCP 2.8.0+ - Atualização completa da arquitetura
  • 📊 Conformidade MCP 2025-06-18 - Especificação de protocolo mais recente
  • 🔐 Descoberta Genérica OAuth 2.1 - Compatibilidade universal com provedores
  • 🔗 Vinculação de Recursos - Navegação HATEOAS nas respostas das ferramentas

📖 Changelog completo: CHANGELOG.md | 📖 Recursos v2.0.0: README-v2.0.0-HIGHLIGHTS.md


🐳 Glama.ai:


🐳 Docker Hub: aywengo/kafka-schema-reg-mcp | 📊 Estatísticas: 50+ Ferramentas MCP (12 compatibilidade retroativa), 19 Recursos, 8 Registros, OAuth 2.1, Multi-plataforma

Licença: MIT | Mantenedor: @aywengo | Problemas: GitHub Issues