Skip to main content
Glama

mcp-luz

Hub MCP pessoal para centralizar ferramentas de desenvolvimento e contexto de projetos. O servidor funciona por stdio e reúne ferramentas nativas para contexto de monorepos, Docker, Context7 e Nexus, além de encaminhar ferramentas de MCPs externos quando eles estiverem disponíveis.

O que oferece

  • Detecta a stack atual (NestJS, React, Angular ou Astro) e a raiz do repositório/monorepo.

  • Executa ações usuais de Docker Compose na raiz identificada do projeto.

  • Consulta documentação atualizada via Context7.

  • Pesquisa, consulta, cria rascunhos e lista informações do Nexus local.

  • Encaminha ferramentas de integrações opcionais, com nomes no formato <servidor>__<ferramenta>.

Related MCP server: WhenLabs/When

Requisitos

  • Node.js 20 ou superior.

  • npm.

  • Docker, apenas para as ferramentas de Docker e a integração opcional com SonarQube.

  • Acesso aos serviços configurados nas integrações opcionais.

Instalação

git clone https://github.com/danisluz/mcp-luz.git
cd mcp-luz
npm ci
npm run build

Para configurar integrações, crie seu arquivo local de ambiente a partir do exemplo:

cp .env.example .env

O arquivo .env é ignorado pelo Git e não deve ser versionado.

Configuração como servidor MCP

Depois de compilar, registre o servidor no seu cliente MCP usando o executável gerado:

{
  "mcp-luz": {
    "command": "node",
    "args": ["/caminho/absoluto/para/mcp-luz/dist/server.js"]
  }
}

Substitua o caminho pelo local em que o repositório foi clonado. O servidor usa stdio; logs operacionais são enviados para stderr.

Sincronização com o Codex

Para instalar ou atualizar os recursos locais no Codex, rode:

npm run build
npm run install:codex

Esse fluxo:

  • compila o servidor MCP em dist/server.js;

  • gera os agentes TOML a partir de src/agents/*.md;

  • copia os agentes para .codex/agents e ~/.codex/agents;

  • copia as skills de src/skills/shared para ~/.codex/skills;

  • garante o registro do MCP mcp-luz em ~/.codex/config.toml.

Depois de adicionar, remover ou alterar agents, skills ou tools MCP, rode esses comandos e abra uma nova sessão do Codex. O Codex carrega o inventário de skills, agents e MCPs no início da sessão; conversas já abertas não recebem hot reload.

Ferramentas nativas

Ferramenta

Descrição

detectar_stack_atual

Detecta a tecnologia do diretório atual e a raiz do monorepo.

gerenciar_docker_monorepo

Executa up, down, status ou logs com Docker Compose na raiz do projeto.

context7__resolve_library_id

Resolve o identificador de uma biblioteca para consulta no Context7.

context7__query_docs

Consulta documentação no Context7 com um libraryId.

nexus_search

Pesquisa ideias, projetos, decisões e propostas no Nexus.

nexus_get_project

Retorna o resumo estruturado de um projeto do Nexus.

nexus_create_draft

Cria um rascunho de ideia, briefing ou proposta sem sobrescrever arquivos existentes.

nexus_list_recent

Lista os arquivos mais recentemente alterados em projetos do Nexus.

Integrações opcionais

Integração

Como é habilitada

Playwright

Disponível por padrão via npx.

Sequential Thinking

Disponível por padrão via npx.

Figma

Defina FIGMA_API_KEY.

PostgreSQL

Preencha todas as variáveis PG_*.

Fetch

Crie o ambiente virtual .mcp-fetch-venv com o módulo mcp_server_fetch.

SonarQube

Defina SONARQUBE_TOKEN e SONARQUBE_ORG ou SONARQUBE_URL.

As ferramentas dessas integrações são expostas somente quando a conexão com o respectivo servidor for bem-sucedida. Seus nomes recebem o prefixo da integração, por exemplo playwright__... e figma__....

Variáveis de ambiente

Consulte .env.example para a lista completa. As variáveis de uso mais comum são:

  • CONTEXT7_API_KEY: chave usada nas consultas do Context7.

  • FIGMA_API_KEY: habilita a integração do Figma.

  • PG_HOST, PG_PORT, PG_USER, PG_PASSWORD e PG_DATABASE: habilitam o MCP PostgreSQL em conjunto.

  • SONARQUBE_TOKEN e SONARQUBE_ORG ou SONARQUBE_URL: habilitam o MCP SonarQube.

  • MCP_PROJECT_NAME: permite indicar o projeto quando o cliente inicia o Hub fora da pasta do projeto.

  • NEXUS_ROOT: define uma raiz alternativa para o Nexus.

  • PROJECTS_ROOT: altera a raiz de projetos, que por padrão é /home/danisluz/projects.

Desenvolvimento

npm run dev

Esse comando recompila o TypeScript em modo observação. Para validar uma compilação única:

npm run build

Arquitetura

  • src/server.ts: inicializa o servidor MCP, registra ferramentas e integrações filhas.

  • src/lib/: contém as regras de contexto de projeto, carregamento de ambiente, ponte de MCPs externos, Context7 e Nexus.

  • src/agents/: personas para clientes compatíveis que leem agentes em Markdown diretamente.

  • src/skills/: habilidades compartilhadas, também consumidas diretamente pelo cliente.

Available Tools

33 tools
context7__query_docsC

Consulta documentação atual no Context7 usando um libraryId resolvido.

Inputs: query (required), libraryId (required).

context7__resolve_library_idA

Resolve uma biblioteca para um ID compatível do Context7 antes de consultar documentação.

Inputs: query (required), libraryName (required).

detectar_stack_atualA

Detecta automaticamente a tecnologia da pasta (NestJS/React/Angular) e a raiz do monorepo Docker.

Inputs: no named parameters.

gerenciar_docker_monorepoB

Executa comandos docker-compose (up, down, ps, logs) subindo automaticamente até a raiz do Monorepo.

Inputs: acao (required).

nexus_create_draftA

Cria um rascunho de ideia, briefing ou proposta no Nexus, sem sobrescrever rascunhos existentes.

Inputs: tipo (required), titulo (required), conteudo (required), projeto.

nexus_get_projectA

Devolve o resumo estruturado de um projeto do Nexus a partir do slug da pasta.

Inputs: slug (required).

nexus_list_recentA

Lista os arquivos modificados mais recentemente em projects/ no Nexus.

Inputs: limit.

playwright__browser_clickC
Destructive

[playwright] Perform click on a web page

Inputs: target (required), button, element, modifiers, +1 more.

playwright__browser_closeC
Destructive

[playwright] Close the page

Inputs: no named parameters.

playwright__browser_console_messagesC
Read-only

[playwright] Returns all console messages

Inputs: level (required), all, filename.

playwright__browser_dragC
Destructive

[playwright] Perform drag and drop between two elements

Inputs: endTarget (required), startTarget (required), endElement, startElement.

playwright__browser_dropA
Destructive

[playwright] Drop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided.

Inputs: target (required), data, paths, element.

playwright__browser_evaluateB
Destructive

[playwright] Evaluate JavaScript expression on page or element

Inputs: function (required), target, element, filename.

playwright__browser_file_uploadC
Destructive

[playwright] Upload one or multiple files

Inputs: paths.

playwright__browser_fill_formC
Destructive

[playwright] Fill multiple form fields

Inputs: fields (required).

playwright__browser_findA
Read-only

[playwright] Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), each shown under its path from the root of the tree, which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref.

Inputs: text, regex.

playwright__browser_handle_dialogC
Destructive

[playwright] Handle a dialog

Inputs: accept (required), promptText.

playwright__browser_hoverC
Destructive

[playwright] Hover over element on page

Inputs: target (required), element.

playwright__browser_navigateB
Destructive

[playwright] Navigate to a URL

Inputs: url (required).

playwright__browser_navigate_backA
Destructive

[playwright] Go back to the previous page in the history

Inputs: no named parameters.

playwright__browser_network_requestA
Read-only

[playwright] Returns full details (headers and body) of a single network request, or a single part if part is set. Use the number from browser_network_requests.

Inputs: index (required), part, filename.

playwright__browser_network_requestsA
Read-only

[playwright] Returns a numbered list of network requests since loading the page. Use browser_network_request with the number to get full details.

Inputs: static (required), filter, filename.

playwright__browser_press_keyB
Destructive

[playwright] Press a key on the keyboard

Inputs: key (required).

playwright__browser_resizeB
Destructive

[playwright] Resize the browser window

Inputs: width (required), height (required).

playwright__browser_run_code_unsafeA
Destructive

[playwright] Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent.

Inputs: code, filename.

playwright__browser_select_optionB
Destructive

[playwright] Select an option in a dropdown

Inputs: target (required), values (required), element.

playwright__browser_snapshotA
Read-only

[playwright] Capture accessibility snapshot of the current page, this is better than screenshot

Inputs: boxes, depth, target, filename.

playwright__browser_tabsA
Destructive

[playwright] List, create, close, or select a browser tab.

Inputs: action (required), url, index.

playwright__browser_take_screenshotA
Read-only

[playwright] Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.

Inputs: scale (required), type, target, element, +2 more.

playwright__browser_typeB
Destructive

[playwright] Type text into editable element

Inputs: text (required), target (required), slowly, submit, +1 more.

playwright__browser_wait_forB
Read-only

[playwright] Wait for text to appear or disappear or a specified time to pass

Inputs: text, time, textGone.

sequential-thinking__sequentialthinkingSequential ThinkingA
Read-onlyIdempotent

[sequential-thinking] A detailed tool for dynamic and reflective problem-solving through thoughts. This tool helps analyze problems through a flexible thinking process that can adapt and evolve. Each thought can build on, question, or revise previous insights as understanding deepens.

When to use this tool:

  • Breaking down complex problems into steps

  • Planning and design with room for revision

  • Analysis that might need course correction

  • Problems where the full scope might not be clear initially

  • Problems that require a multi-step solution

  • Tasks that need to maintain context over multiple steps

  • Situations where irrelevant information needs to be filtered out

Key features:

  • You can adjust total_thoughts up or down as you progress

  • You can question or revise previous thoughts

  • You can add more thoughts even after reaching what seemed like the end

  • You can express uncertainty and explore alternative approaches

  • Not every thought needs to build linearly - you can branch or backtrack

  • Generates a solution hypothesis

  • Verifies the hypothesis based on the Chain of Thought steps

  • Repeats the process until satisfied

  • Provides a correct answer

Parameters explained:

  • thought: Your current thinking step, which can include:

    • Regular analytical steps

    • Revisions of previous thoughts

    • Questions about previous decisions

    • Realizations about needing more analysis

    • Changes in approach

    • Hypothesis generation

    • Hypothesis verification

  • nextThoughtNeeded: True if you need more thinking, even if at what seemed like the end

  • thoughtNumber: Current number in sequence (can go beyond initial total if needed)

  • totalThoughts: Current estimate of thoughts needed (can be adjusted up/down)

  • isRevision: A boolean indicating if this thought revises previous thinking

  • revisesThought: If is_revision is true, which thought number is being reconsidered

  • branchFromThought: If branching, which thought number is the branching point

  • branchId: Identifier for the current branch (if any)

  • needsMoreThoughts: If reaching end but realizing more thoughts needed

You should:

  1. Start with an initial estimate of needed thoughts, but be ready to adjust

  2. Feel free to question or revise previous thoughts

  3. Don't hesitate to add more thoughts if needed, even at the "end"

  4. Express uncertainty when present

  5. Mark thoughts that revise previous thinking or branch into new paths

  6. Ignore information that is irrelevant to the current step

  7. Generate a solution hypothesis when appropriate

  8. Verify the hypothesis based on the Chain of Thought steps

  9. Repeat the process until satisfied with the solution

  10. Provide a single, ideally correct answer as the final output

  11. Only set nextThoughtNeeded to false when truly done and a satisfactory answer is reached

Inputs: thought (required), thoughtNumber (required), totalThoughts (required), nextThoughtNeeded (required), +5 more. Returns: branches, thoughtNumber, totalThoughts, nextThoughtNeeded, +1 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 33 tools

    Disambiguation4/5

    The tools are mostly grouped by clear domains (Playwright, Context7, Nexus, Docker) and each action targets a distinct resource or operation. A few pairs like browser_type vs browser_fill_form, browser_evaluate vs browser_run_code_unsafe, and browser_close vs browser_tabs could cause minor hesitation, but the descriptions are explicit enough to resolve the ambiguity.

    Naming Consistency3/5

    The tool names mix conventions: some use namespaced prefixes (playwright__browser_*, context7__*, sequential-thinking__*), while others are unnamespaced Portuguese verbs (detectar_stack_atual, gerenciar_docker_monorepo) or have a bare domain prefix (nexus_search, nexus_get_project). All names are snake_case and generally readable, but the inconsistent prefix style and English/Portuguese mixing keep it from being cohesive.

    Tool Count2/5

    With 33 tools spanning browser automation, knowledge management, documentation lookup, Docker orchestration, and reasoning, this is a heavy and multi-purpose surface. Each sub-suite is individually reasonable, but the aggregate feels bloated for a single MCP server without a clearly defined unified scope.

    Completeness4/5

    Core workflows are well covered: browser automation includes navigation, input, snapshots, network inspection, and tab management; Context7 has resolve+query; Docker has up/down/ps/logs; Nexus has search/get/list/create. The main gaps are write-side Nexus operations like updating or deleting drafts and a few browser edge-case actions, but these are workable gaps rather than dead ends.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A unified MCP server with composable tools for GitHub operations, file management, shell execution, kanban boards, Discord messaging, and package management. Features role-based security, HTTP/stdio transports, and a web-based development UI.
      GPL 3.0
    • A
      license
      A
      quality
      D
      maintenance
      A unified developer toolkit for AI-assisted workflows. Task timing, doc drift detection, env validation, secret scanning, port conflict resolution, AI context generation, and license auditing — one MCP server, one install.
      7
      4
      MIT
    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      Local-first MCP server for repo-scoped development tasks like inspection, testing, documentation, and patching, designed to complement Cline with a structured local execution layer.
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server and CLI for host and container operations, enabling Docker and Compose control, SSH, host inspection, logs, ZFS, and safe file transfer. It exposes flux and scout MCP tools with parity from the original TypeScript server.
      2
      AGPL 3.0