mcp-tailwindcss 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,419 @@
1
+ # MCP Tailwind CSS Context
2
+
3
+ <div align="center">
4
+
5
+ ![Tailwind CSS](https://img.shields.io/badge/Tailwind%20CSS-v4.1-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white)
6
+ ![MCP](https://img.shields.io/badge/MCP-Compatible-5B5BD6?style=for-the-badge)
7
+ ![TypeScript](https://img.shields.io/badge/TypeScript-5.7-3178C6?style=for-the-badge&logo=typescript&logoColor=white)
8
+
9
+ **Servidor MCP (Model Context Protocol) para fornecer contexto completo da biblioteca Tailwind CSS**
10
+
11
+ [Instalação](#instalação) • [Ferramentas](#ferramentas-disponíveis) • [Frameworks](#integração-com-frameworks) • [v3 vs v4](#tailwind-v3-vs-v4)
12
+
13
+ </div>
14
+
15
+ ---
16
+
17
+ ## 📋 Sobre
18
+
19
+ Este servidor MCP fornece acesso completo ao código-fonte do **Tailwind CSS** (repositório oficial `tailwindlabs/tailwindcss`), permitindo que assistentes de IA como Claude e GitHub Copilot tenham contexto profundo sobre:
20
+
21
+ - ✅ Configuração e Theme Variables
22
+ - ✅ Utilities e Plugins
23
+ - ✅ Integração com frameworks (Vite, Next.js, Nuxt, Astro, etc.)
24
+ - ✅ Diferenças entre Tailwind v3 e v4
25
+ - ✅ AST parsing para tipos TypeScript
26
+ - ✅ Auto-download e atualização do repositório oficial
27
+
28
+ ---
29
+
30
+ ## 🚀 Instalação
31
+
32
+ ### Via NPM (recomendado)
33
+
34
+ ```bash
35
+ npm install -g mcp-tailwindcss
36
+ ```
37
+
38
+ ### Configuração no Claude Desktop
39
+
40
+ Adicione ao seu arquivo `claude_desktop_config.json`:
41
+
42
+ **Windows:**
43
+ ```json
44
+ {
45
+ "mcpServers": {
46
+ "tailwindcss": {
47
+ "command": "npx",
48
+ "args": ["-y", "mcp-tailwindcss"]
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ **macOS/Linux:**
55
+ ```json
56
+ {
57
+ "mcpServers": {
58
+ "tailwindcss": {
59
+ "command": "npx",
60
+ "args": ["-y", "mcp-tailwindcss"]
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ ### Configuração no VS Code (GitHub Copilot)
67
+
68
+ Adicione ao seu `settings.json`:
69
+
70
+ ```json
71
+ {
72
+ "github.copilot.chat.mcpServers": {
73
+ "tailwindcss": {
74
+ "command": "npx",
75
+ "args": ["-y", "mcp-tailwindcss"]
76
+ }
77
+ }
78
+ }
79
+ ```
80
+
81
+ ---
82
+
83
+ ## 🛠️ Ferramentas Disponíveis
84
+
85
+ ### 📁 Exploração de Código
86
+
87
+ | Ferramenta | Descrição |
88
+ |------------|-----------|
89
+ | `tailwind_estrutura` | Lista a estrutura de arquivos do Tailwind CSS (`packages/tailwindcss/src`) |
90
+ | `tailwind_ler_arquivo` | Lê o conteúdo de um arquivo específico do Tailwind |
91
+
92
+ ### 🔍 Análise de Tipos (AST)
93
+
94
+ | Ferramenta | Descrição |
95
+ |------------|-----------|
96
+ | `tailwind_extrair_tipos` | Extrai interfaces, types, enums, funções via AST |
97
+ | `tailwind_buscar_tipo` | Busca definição de tipo específico pelo nome |
98
+ | `tailwind_buscar_fuzzy` | Busca aproximada quando não sabe o nome exato |
99
+ | `tailwind_listar_exports` | Lista todos os exports públicos agrupados |
100
+ | `tailwind_categorias` | Lista declarações por categoria específica |
101
+ | `tailwind_constantes` | Lista constantes e variáveis exportadas |
102
+ | `tailwind_hierarquia` | Mostra hierarquia de herança de um tipo |
103
+ | `tailwind_estatisticas` | Estatísticas detalhadas da biblioteca |
104
+ | `tailwind_dependencias` | Analisa dependências entre módulos |
105
+ | `tailwind_enums` | Lista todas as enumerações com valores |
106
+ | `tailwind_interfaces` | Lista interfaces com propriedades/métodos |
107
+ | `tailwind_funcoes` | Lista funções exportadas com assinaturas |
108
+
109
+ ### 🔄 Atualizações
110
+
111
+ | Ferramenta | Descrição |
112
+ |------------|-----------|
113
+ | `tailwind_check_updates` | Verifica se há atualizações disponíveis |
114
+ | `tailwind_update` | Atualiza o repositório local |
115
+ | `tailwind_status` | Status atual do repositório (commit SHA, etc.) |
116
+
117
+ ### 🎯 Integrações
118
+
119
+ | Ferramenta | Descrição |
120
+ |------------|-----------|
121
+ | `tailwind_integracoes` | Guias de integração com frameworks |
122
+
123
+ ---
124
+
125
+ ## 🎨 Integração com Frameworks
126
+
127
+ O MCP fornece guias completos para integrar Tailwind CSS com os principais frameworks:
128
+
129
+ ### Vite (Tailwind v4)
130
+
131
+ ```bash
132
+ npm install tailwindcss @tailwindcss/vite
133
+ ```
134
+
135
+ ```javascript
136
+ // vite.config.js
137
+ import tailwindcss from '@tailwindcss/vite'
138
+ import { defineConfig } from 'vite'
139
+
140
+ export default defineConfig({
141
+ plugins: [tailwindcss()]
142
+ })
143
+ ```
144
+
145
+ ```css
146
+ /* app.css */
147
+ @import "tailwindcss";
148
+ ```
149
+
150
+ ### Next.js (Tailwind v4)
151
+
152
+ ```bash
153
+ npm install tailwindcss @tailwindcss/postcss postcss
154
+ ```
155
+
156
+ ```javascript
157
+ // postcss.config.mjs
158
+ export default {
159
+ plugins: {
160
+ '@tailwindcss/postcss': {}
161
+ }
162
+ }
163
+ ```
164
+
165
+ ### PostCSS (Universal)
166
+
167
+ ```bash
168
+ npm install tailwindcss @tailwindcss/postcss postcss
169
+ ```
170
+
171
+ ```javascript
172
+ // postcss.config.js
173
+ export default {
174
+ plugins: {
175
+ '@tailwindcss/postcss': {}
176
+ }
177
+ }
178
+ ```
179
+
180
+ ### CLI
181
+
182
+ ```bash
183
+ npm install tailwindcss @tailwindcss/cli
184
+ npx @tailwindcss/cli -i input.css -o output.css --watch
185
+ ```
186
+
187
+ ---
188
+
189
+ ## ⚡ Tailwind v3 vs v4
190
+
191
+ ### Principais Diferenças
192
+
193
+ | Aspecto | Tailwind v3 | Tailwind v4 |
194
+ |---------|-------------|-------------|
195
+ | **Configuração** | `tailwind.config.js` | CSS-first com `@theme` |
196
+ | **Instalação Vite** | Plugin PostCSS | `@tailwindcss/vite` nativo |
197
+ | **Theme** | JavaScript object | CSS Variables (`--color-*`) |
198
+ | **Import** | `@tailwind base/components/utilities` | `@import "tailwindcss"` |
199
+ | **Cores** | HEX/RGB | oklch() por padrão |
200
+
201
+ ### Tailwind v4 - Nova Sintaxe CSS
202
+
203
+ ```css
204
+ @import "tailwindcss";
205
+
206
+ @theme {
207
+ /* Cores customizadas */
208
+ --color-brand: oklch(0.72 0.11 221.19);
209
+
210
+ /* Breakpoints */
211
+ --breakpoint-3xl: 120rem;
212
+
213
+ /* Fontes */
214
+ --font-display: "Satoshi", sans-serif;
215
+
216
+ /* Espaçamento base */
217
+ --spacing: 0.25rem;
218
+ }
219
+ ```
220
+
221
+ ### Theme Variable Namespaces (v4)
222
+
223
+ | Namespace | Utilities Geradas |
224
+ |-----------|-------------------|
225
+ | `--color-*` | `bg-*`, `text-*`, `border-*`, `fill-*` |
226
+ | `--font-*` | `font-*` |
227
+ | `--text-*` | `text-xs`, `text-sm`, `text-lg`, etc. |
228
+ | `--spacing-*` | `p-*`, `m-*`, `gap-*`, `w-*`, `h-*` |
229
+ | `--radius-*` | `rounded-*` |
230
+ | `--shadow-*` | `shadow-*` |
231
+ | `--breakpoint-*` | `sm:`, `md:`, `lg:`, `xl:` |
232
+ | `--animate-*` | `animate-*` |
233
+
234
+ ### Tailwind v3 - Configuração JavaScript
235
+
236
+ ```javascript
237
+ // tailwind.config.js (v3)
238
+ module.exports = {
239
+ content: ['./src/**/*.{js,jsx,ts,tsx}'],
240
+ theme: {
241
+ extend: {
242
+ colors: {
243
+ brand: '#06B6D4',
244
+ },
245
+ fontFamily: {
246
+ display: ['Satoshi', 'sans-serif'],
247
+ },
248
+ },
249
+ },
250
+ plugins: [],
251
+ }
252
+ ```
253
+
254
+ ```css
255
+ /* styles.css (v3) */
256
+ @tailwind base;
257
+ @tailwind components;
258
+ @tailwind utilities;
259
+ ```
260
+
261
+ ---
262
+
263
+ ## 📚 Exemplos de Uso
264
+
265
+ ### Buscar configuração de cores
266
+
267
+ ```
268
+ Use tailwind_buscar_tipo com nome "Theme" para ver a estrutura de tema
269
+ ```
270
+
271
+ ### Explorar utilities disponíveis
272
+
273
+ ```
274
+ Use tailwind_extrair_tipos com apenas_kind "function" para ver todas as funções utilitárias
275
+ ```
276
+
277
+ ### Verificar integração com Next.js
278
+
279
+ ```
280
+ Use tailwind_integracoes com framework "next" para ver o passo a passo
281
+ ```
282
+
283
+ ### Ver estrutura do projeto
284
+
285
+ ```
286
+ Use tailwind_estrutura para explorar a organização do código-fonte
287
+ ```
288
+
289
+ ---
290
+
291
+ ## 🔧 Variáveis de Ambiente
292
+
293
+ | Variável | Descrição | Padrão |
294
+ |----------|-----------|--------|
295
+ | `TAILWIND_SRC_PATH` | Caminho customizado para o código-fonte | Auto-detectado |
296
+
297
+ ---
298
+
299
+ ## 📁 Estrutura do Repositório
300
+
301
+ O MCP baixa automaticamente o repositório oficial do Tailwind CSS na primeira execução:
302
+
303
+ ```
304
+ ~/.mcp-tailwindcss/
305
+ └── tailwindcss/
306
+ ├── packages/
307
+ │ └── tailwindcss/
308
+ │ └── src/ <- Código-fonte principal
309
+ │ ├── index.ts
310
+ │ ├── theme.css
311
+ │ ├── preflight.css
312
+ │ ├── utilities.css
313
+ │ ├── compat/
314
+ │ ├── utils/
315
+ │ └── ...
316
+ ├── crates/ <- Engine Oxide (Rust)
317
+ └── integrations/ <- Testes de integração
318
+ ```
319
+
320
+ ---
321
+
322
+ ## 🎯 Utilities Reference (v4)
323
+
324
+ ### Layout
325
+ - `container`, `columns-*`
326
+ - `break-after-*`, `break-before-*`, `break-inside-*`
327
+ - `box-decoration-*`, `box-sizing-*`
328
+ - `block`, `inline-block`, `inline`, `flex`, `inline-flex`, `grid`, `inline-grid`
329
+ - `flow-root`, `contents`, `hidden`
330
+
331
+ ### Flexbox & Grid
332
+ - `flex-*`, `flex-row`, `flex-col`, `flex-wrap`, `flex-nowrap`
333
+ - `grid-cols-*`, `grid-rows-*`, `gap-*`
334
+ - `justify-*`, `items-*`, `content-*`
335
+ - `place-*`, `self-*`
336
+
337
+ ### Spacing
338
+ - `p-*`, `px-*`, `py-*`, `pt-*`, `pr-*`, `pb-*`, `pl-*`
339
+ - `m-*`, `mx-*`, `my-*`, `mt-*`, `mr-*`, `mb-*`, `ml-*`
340
+ - `space-x-*`, `space-y-*`
341
+
342
+ ### Sizing
343
+ - `w-*`, `min-w-*`, `max-w-*`
344
+ - `h-*`, `min-h-*`, `max-h-*`
345
+ - `size-*`
346
+
347
+ ### Typography
348
+ - `font-*`, `text-*`, `tracking-*`, `leading-*`
349
+ - `text-left`, `text-center`, `text-right`, `text-justify`
350
+ - `underline`, `line-through`, `no-underline`
351
+ - `uppercase`, `lowercase`, `capitalize`, `normal-case`
352
+
353
+ ### Backgrounds
354
+ - `bg-*`, `bg-gradient-*`
355
+ - `from-*`, `via-*`, `to-*`
356
+ - `bg-cover`, `bg-contain`, `bg-center`, `bg-repeat`, `bg-no-repeat`
357
+
358
+ ### Borders
359
+ - `border`, `border-*`, `rounded-*`
360
+ - `ring-*`, `outline-*`
361
+ - `divide-*`
362
+
363
+ ### Effects
364
+ - `shadow-*`, `drop-shadow-*`
365
+ - `opacity-*`
366
+ - `mix-blend-*`, `bg-blend-*`
367
+
368
+ ### Filters
369
+ - `blur-*`, `brightness-*`, `contrast-*`
370
+ - `grayscale`, `hue-rotate-*`, `invert`, `saturate-*`, `sepia`
371
+ - `backdrop-*`
372
+
373
+ ### Transitions & Animation
374
+ - `transition`, `transition-*`
375
+ - `duration-*`, `ease-*`, `delay-*`
376
+ - `animate-*`
377
+
378
+ ### Transforms
379
+ - `scale-*`, `rotate-*`, `translate-*`, `skew-*`
380
+ - `origin-*`
381
+
382
+ ### Interactivity
383
+ - `cursor-*`, `pointer-events-*`
384
+ - `resize`, `resize-x`, `resize-y`, `resize-none`
385
+ - `select-*`, `touch-*`, `scroll-*`
386
+
387
+ ---
388
+
389
+ ## 🤝 Contribuindo
390
+
391
+ 1. Fork o repositório
392
+ 2. Crie sua branch: `git checkout -b feature/nova-funcionalidade`
393
+ 3. Commit suas mudanças: `git commit -m 'feat: adiciona nova funcionalidade'`
394
+ 4. Push para a branch: `git push origin feature/nova-funcionalidade`
395
+ 5. Abra um Pull Request
396
+
397
+ ---
398
+
399
+ ## 📄 Licença
400
+
401
+ MIT © Joseph
402
+
403
+ ---
404
+
405
+ ## 🔗 Links Úteis
406
+
407
+ - [Tailwind CSS Documentation](https://tailwindcss.com/docs)
408
+ - [Tailwind CSS GitHub](https://github.com/tailwindlabs/tailwindcss)
409
+ - [Model Context Protocol](https://modelcontextprotocol.io/)
410
+ - [Tailwind v4 Upgrade Guide](https://tailwindcss.com/docs/upgrade-guide)
411
+ - [Theme Variables Reference](https://tailwindcss.com/docs/theme)
412
+
413
+ ---
414
+
415
+ <div align="center">
416
+
417
+ **Feito com 💙 para a comunidade Tailwind CSS**
418
+
419
+ </div>
@@ -0,0 +1,106 @@
1
+ export type ExtractedKind = 'interface' | 'type' | 'enum' | 'function' | 'class' | 'variable' | 'namespace' | 're-export';
2
+ export interface PropertyInfo {
3
+ name: string;
4
+ type: string;
5
+ optional: boolean;
6
+ readonly: boolean;
7
+ docs?: string;
8
+ isMethod: boolean;
9
+ isCallSignature: boolean;
10
+ isIndexSignature: boolean;
11
+ parameters?: string[];
12
+ returnType?: string;
13
+ }
14
+ export interface TypeParameter {
15
+ name: string;
16
+ constraint?: string;
17
+ default?: string;
18
+ }
19
+ export interface ExtractedType {
20
+ name: string;
21
+ kind: ExtractedKind;
22
+ exported: boolean;
23
+ file: string;
24
+ module: string;
25
+ signature: string;
26
+ fullSignature?: string;
27
+ properties?: PropertyInfo[];
28
+ methods?: PropertyInfo[];
29
+ members?: string[];
30
+ typeParameters?: TypeParameter[];
31
+ extends?: string[];
32
+ implements?: string[];
33
+ docs?: string;
34
+ value?: string;
35
+ reExportSource?: string;
36
+ lineNumber?: number;
37
+ }
38
+ export interface ModuleStatistics {
39
+ module: string;
40
+ interfaces: number;
41
+ types: number;
42
+ enums: number;
43
+ functions: number;
44
+ classes: number;
45
+ variables: number;
46
+ namespaces: number;
47
+ reExports: number;
48
+ total: number;
49
+ }
50
+ export interface LibraryStatistics {
51
+ totalDeclarations: number;
52
+ byKind: Record<ExtractedKind, number>;
53
+ byModule: ModuleStatistics[];
54
+ topInterfaces: string[];
55
+ topTypes: string[];
56
+ topFunctions: string[];
57
+ }
58
+ export interface DependencyInfo {
59
+ module: string;
60
+ imports: string[];
61
+ exports: string[];
62
+ reExportsFrom: string[];
63
+ }
64
+ export declare class AstParser {
65
+ private project;
66
+ private tailwindSrcPath;
67
+ private cachedTypes;
68
+ constructor(tailwindSrcPath: string);
69
+ private getModuleName;
70
+ private getRelativePath;
71
+ addSourceFiles(patterns: string[]): void;
72
+ extractFromFile(filePath: string): ExtractedType[];
73
+ extractAllTypes(): ExtractedType[];
74
+ private extractTypes;
75
+ private extractTypeParameters;
76
+ private extractInterface;
77
+ private extractTypeAlias;
78
+ private extractEnum;
79
+ private extractFunction;
80
+ private extractClass;
81
+ private extractVariable;
82
+ private extractNamespace;
83
+ private extractReExport;
84
+ private simplifyType;
85
+ private getJsDocs;
86
+ searchType(typeName: string): ExtractedType | undefined;
87
+ fuzzySearch(query: string, maxResults?: number): ExtractedType[];
88
+ getTypesFromModule(moduleName: string): ExtractedType[];
89
+ getTypesByKind(kind: ExtractedKind): ExtractedType[];
90
+ getStatistics(): LibraryStatistics;
91
+ getTypeHierarchy(typeName: string): {
92
+ type: ExtractedType;
93
+ parents: string[];
94
+ children: string[];
95
+ } | null;
96
+ analyzeDependencies(): DependencyInfo[];
97
+ getVariables(): ExtractedType[];
98
+ getConstants(): ExtractedType[];
99
+ getNamespaces(): ExtractedType[];
100
+ getInterfaces(): ExtractedType[];
101
+ getEnums(): ExtractedType[];
102
+ getFunctions(): ExtractedType[];
103
+ getClasses(): ExtractedType[];
104
+ getTypes(): ExtractedType[];
105
+ }
106
+ //# sourceMappingURL=ast-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-parser.d.ts","sourceRoot":"","sources":["../src/ast-parser.ts"],"names":[],"mappings":"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"}