npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

mcp-whaileys

v1.0.3

Published

MCP Server para contexto da biblioteca Whaileys (WhatsApp) - Interfaces, Types, Enums, Functions, Classes. Auto-download do repositório na primeira execução.

Readme

MCP Whaileys Context

Servidor MCP (Model Context Protocol) para fornecer contexto completo da biblioteca Whaileys (WhatsApp) ao assistente de IA.

O repositório whaileys é baixado automaticamente na primeira execução.

Funcionalidades

Este servidor implementa análise de AST usando ts-morph para extrair declarações exportadas, incluindo:

  • Interfaces - com propriedades, métodos, call signatures e index signatures
  • Type Aliases - com type parameters e definições completas
  • Enumerations - com todos os valores
  • Functions - com parâmetros, tipos de retorno e documentação
  • Classes - com métodos públicos, propriedades e herança
  • Variables/Constants - configurações e defaults exportados
  • Namespaces - estrutura de namespaces exportados
  • Re-exports - análise de re-exportações entre módulos

Ferramentas Disponíveis

Ferramentas Básicas

| Ferramenta | Descrição | |------------|-----------| | whaileys_estrutura | Lista a estrutura de arquivos do projeto | | whaileys_ler_arquivo | Lê conteúdo de arquivo específico | | whaileys_extrair_tipos | Extrai todas as declarações via AST | | whaileys_buscar_tipo | Busca definição de tipo por nome exato | | whaileys_buscar_fuzzy | Busca com correspondência aproximada | | whaileys_listar_exports | Lista todos os exports agrupados |

Ferramentas por Categoria

| Ferramenta | Descrição | |------------|-----------| | whaileys_categorias | Lista declarações de categoria específica | | whaileys_interfaces | Lista todas as interfaces | | whaileys_funcoes | Lista todas as funções | | whaileys_enums | Lista todas as enumerações | | whaileys_constantes | Lista constantes e variáveis |

Ferramentas de Análise

| Ferramenta | Descrição | |------------|-----------| | whaileys_estatisticas | Estatísticas detalhadas da biblioteca | | whaileys_hierarquia | Mostra herança (extends/implements) | | whaileys_dependencias | Analisa dependências entre módulos |

Ferramentas de Auto-Update

| Ferramenta | Descrição | |------------|-----------| | whaileys_check_updates | Verifica se há atualizações disponíveis no GitHub | | whaileys_update | Atualiza o repositório local para a versão mais recente | | whaileys_status | Mostra status atual do repositório (commits, sincronização) |

Categorias Suportadas

interface   - Interfaces TypeScript
type        - Type Aliases
enum        - Enumerations
function    - Funções exportadas
class       - Classes exportadas
variable    - Constantes e variáveis
namespace   - Namespaces
re-export   - Re-exportações

Instalação

Opção 1: Via npx (recomendado)

Sem instalação prévia, use diretamente no VSCode:

{
  "servers": {
    "whaileys-context": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-whaileys"]
    }
  }
}

Opção 2: Instalação global

npm install -g mcp-whaileys
{
  "servers": {
    "whaileys-context": {
      "type": "stdio",
      "command": "mcp-whaileys"
    }
  }
}

Opção 3: Repositório local

git clone https://github.com/SEU_USUARIO/mcp-whaileys.git
cd mcp-whaileys
npm install
npm run build
{
  "servers": {
    "whaileys-context": {
      "type": "stdio",
      "command": "node",
      "args": ["d:/caminho/para/mcp-whaileys/dist/index.js"]
    }
  }
}

Onde fica o repositório Whaileys?

Na primeira execução, o MCP baixa automaticamente o repositório para:

  • Windows: C:\Users\SEU_USUARIO\.mcp-whaileys\whaileys
  • Linux/Mac: ~/.mcp-whaileys/whaileys

Para usar um caminho personalizado, defina WHAILEYS_PATH:

{
  "servers": {
    "whaileys-context": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-whaileys"],
      "env": {
        "WHAILEYS_PATH": "d:/meu/caminho/whaileys/src"
      }
    }
  }
}

Variáveis de Ambiente

| Variável | Descrição | Default | |----------|-----------|---------| | WHAILEYS_PATH | Caminho para o diretório src/ do Whaileys | Auto-download em ~/.mcp-whaileys/ | | AUTO_UPDATE_ENABLED | Habilita verificação automática de atualizações | true | | AUTO_UPDATE_INTERVAL | Intervalo de verificação em ms | 3600000 (1 hora) | | GITHUB_TOKEN | Token do GitHub para evitar rate limiting | - |

Exemplos de Configuração

Configuração mínima (usa auto-download)

{
  "whaileys-context": {
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "mcp-whaileys"]
  }
}

Configuração com path local existente

{
  "whaileys-context": {
    "type": "stdio",
    "command": "node",
    "args": ["/caminho/para/mcp-whaileys/dist/index.js"],
    "env": {
      "WHAILEYS_PATH": "/caminho/para/whaileys/src"
    }
  }
}

Configuração completa

{
  "whaileys-context": {
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "mcp-whaileys"],
    "env": {
      "AUTO_UPDATE_ENABLED": "true",
        "AUTO_UPDATE_INTERVAL": "3600000"
      }
    }
  }
}

Exemplos de Uso

Extrair todos os tipos do módulo Types

whaileys_extrair_tipos({ modulo: "Types" })

Filtrar apenas interfaces do módulo Types

whaileys_extrair_tipos({ modulo: "Types", apenas_kind: "interface" })

Buscar tipo específico

whaileys_buscar_tipo({ nome: "WAMessage" })

Busca fuzzy quando não sabe o nome exato

whaileys_buscar_fuzzy({ query: "message send auth" })

Ver todas as funções do módulo Utils

whaileys_funcoes({ modulo: "Utils" })

Listar constantes de configuração

whaileys_constantes({ modulo: "Defaults" })

Ver hierarquia de um tipo

whaileys_hierarquia({ nome: "BaileysEventEmitter" })

Estatísticas completas da biblioteca

whaileys_estatisticas()

Análise de dependências

whaileys_dependencias()

Estrutura de Dados

ExtractedType

interface ExtractedType {
  name: string              // Nome da declaração
  kind: ExtractedKind       // Tipo (interface, type, enum, etc.)
  exported: boolean         // Se é exportado
  file: string              // Arquivo fonte
  module: string            // Módulo (Types, Socket, Utils, etc.)
  signature: string         // Assinatura TypeScript
  fullSignature?: string    // Assinatura completa (para types)
  properties?: PropertyInfo[] // Propriedades (interfaces/classes)
  methods?: PropertyInfo[]  // Métodos (interfaces/classes)
  members?: string[]        // Membros (enums/namespaces)
  typeParameters?: TypeParameter[] // Generics
  extends?: string[]        // Herança
  implements?: string[]     // Implementações
  docs?: string             // Documentação JSDoc
  value?: string            // Valor (variáveis)
  lineNumber?: number       // Linha no arquivo
}

PropertyInfo

interface PropertyInfo {
  name: string
  type: string
  optional: boolean
  readonly: boolean
  docs?: string
  isMethod: boolean
  isCallSignature: boolean
  isIndexSignature: boolean
  parameters?: string[]
  returnType?: string
}

Estatísticas da Biblioteca

O servidor pode gerar estatísticas detalhadas incluindo:

  • Total de declarações por categoria
  • Contagem por módulo (Types, Socket, Utils, etc.)
  • Top interfaces, types e funções
  • Percentuais de distribuição

Recursos Disponíveis

O servidor também expõe recursos via MCP Resources:

| URI | Descrição | |-----|-----------| | whaileys://readme | README da biblioteca | | whaileys://types-index | Index de tipos exportados | | whaileys://statistics | Estatísticas da biblioteca |

Tecnologias

  • @modelcontextprotocol/sdk v1.24.3 - SDK oficial do MCP
  • ts-morph v27.0.2 - Parser de AST para TypeScript
  • zod v4.1.13 - Validação de schemas

Sistema de Auto-Update

O MCP Whaileys possui um sistema integrado de auto-atualização que monitora o repositório oficial canove/whaileys no GitHub.

Como funciona

  1. Na inicialização: O servidor verifica se há atualizações disponíveis
  2. Periodicamente: A cada intervalo configurado (default: 1 hora), verifica novos commits
  3. Automaticamente: Quando detecta uma atualização, executa git pull automaticamente
  4. Cache de SHA: Mantém um registro do último commit verificado para otimizar chamadas à API

Fluxo de atualização

flowchart TD
    A[GitHub API<br>/repos/canove/whaileys/commits] --> B[Compara SHA<br>Local vs Remoto]
    B --> C{SHA diferente?}
    C -->|Sim| D[git pull]
    C -->|Não| E[OK - Sem alterações]
    D --> F[Atualiza contexto]
    F --> G[Salva novo SHA no cache]

Comandos manuais

// Verificar se há atualizações (sem aplicar)
whaileys_check_updates()

// Aplicar atualizações disponíveis
whaileys_update()

// Ver status atual do repositório
whaileys_status()

Logs

O servidor emite logs durante o processo de atualização:

[INFO] Auto-update habilitado (intervalo: 60 min)
[INFO] Verificando atualizações...
[OK] Atualizado para: ea7f714
      Commit: Merge pull request #56 from canove/develop

Rate Limiting do GitHub

A API do GitHub possui limites de requisições:

  • Sem token: 60 requests/hora
  • Com token: 5000 requests/hora

Para ambientes de produção, configure GITHUB_TOKEN para evitar rate limiting.