tsconfig-inheritance-flattener-mcp

Resolve cadeias de herança de configuração TypeScript e retorna opções efetivas do compilador

Documentação

🔍 tsconfig-inheritance-flattener-mcp

npm CI License: MIT

Seu agente de IA lê tsconfig.json. Ele não tem ideia do que isso realmente significa.

Servidor MCP que resolve toda a cadeia de herança de configuração do TypeScript e retorna as opções efetivas do compilador que realmente se aplicam — incluindo tudo herdado de configurações base estendidas, pacotes de monorepo e presets de node_modules.


🤔 O problema

Seu agente lê tsconfig.json e vê:

{ "extends": "@tsconfig/strictest", "compilerOptions": { "paths": { "@/*": ["./src/*"] } } }

Ele não tem ideia de que @tsconfig/strictest define strict: true, noUncheckedIndexedAccess: true, exactOptionalPropertyTypes: true. Ele não sabe que baseUrl está definido dois níveis acima na sua configuração base do monorepo. Então ele:

  • Sugere código que falharia em noUncheckedIndexedAccess
  • Fica confuso sobre o que @/ resolve
  • Não sabe que seu target é ES2022, não ES5
  • Dá respostas erradas sobre resolução de módulos

A API do compilador TypeScript já resolve tudo isso. Este MCP apenas expõe isso.


🛠️ Ferramentas

get_effective_compiler_options

Resolve toda a cadeia de extends e retorna as opções mescladas do compilador que realmente se aplicam a um determinado tsconfig.json. Mostra a cadeia de herança, todas as opções mescladas (com enums como strings legíveis, não números mágicos) e padrões de include/exclude.

Effective TypeScript Configuration
  Config:            /project/apps/web/tsconfig.json
  Inheritance chain: /project/apps/web/tsconfig.json
                     → /project/tsconfig.base.json
                     → node_modules/@tsconfig/strictest/tsconfig.json

Compiler Options (merged):
  target: "ES2022"
  module: "NodeNext"
  moduleResolution: "NodeNext"
  strict: true
  noUncheckedIndexedAccess: true
  exactOptionalPropertyTypes: true
  baseUrl: "/project"
  paths: { "@/*": ["apps/web/src/*"] }

resolve_module_alias

Mapeia um alias de caminho do TypeScript (ex.: @/hooks/useAuth) para sua localização física de arquivo no disco, usando o paths e baseUrl resolvidos do tsconfig. Retorna todos os candidatos existentes com sondagem de extensão.

Alias Resolution: @/hooks/useAuth
  Config:   /project/apps/web/tsconfig.json
  Base URL: /project

Resolved physical paths:
  /project/apps/web/src/hooks/useAuth.ts      ✓ exists

analyze_project_references

Inspeciona o array references em um tsconfig.json raiz e valida se cada pacote referenciado tem composite: true. Detecta dependências entre pacotes quebradas em monorepos TypeScript antes que causem falhas silenciosas de build.

Project References Analysis
  Config: /project/tsconfig.json
  References found: 2

  [✓] packages/shared → /project/packages/shared/tsconfig.json
  [✗ NOT FOUND] packages/deprecated → /project/packages/deprecated/tsconfig.json

Violations:
  ✗ packages/shared is referenced but does not have composite: true
    Fix: add "composite": true to packages/shared/tsconfig.json

🧪 Como é na prática

O agente está ajudando a depurar um erro do TypeScript e pergunta:

"Quais opções do compilador estão realmente ativas neste projeto?"

Sem este MCP, o agente adivinha com base no que vê em tsconfig.json. Com ele:

get_effective_compiler_options("/project/apps/web/tsconfig.json")
→ strict: true, noUncheckedIndexedAccess: true, target: "ES2022", module: "NodeNext"

Agora o agente sabe exatamente por que arr[0] tem o tipo string | undefined e não apenas string. Sem mais sugestões erradas.


⚡ Configuração

{
  "mcpServers": {
    "tsconfig-flattener": {
      "command": "npx",
      "args": ["-y", "tsconfig-inheritance-flattener-mcp"]
    }
  }
}

🚀 Uso

"Quais opções do compilador realmente se aplicam a /project/apps/web/tsconfig.json? Ele estende uma base de monorepo e @tsconfig/strictest."

"Onde @/components/Button resolve no disco?"

"As referências de projeto no meu tsconfig raiz são válidas? Todos os pacotes referenciados têm composite: true?"

Funciona muito bem junto com:


📦 Links

Licença

MIT