Skip to main content
Glama
gauravsaini

gluestack-ui-mcp-server

by gauravsaini
README.md
# Gluestack UI MCP Server šŸ“±

[![npm version](https://badge.fury.io/js/@gluestack-ui%2Fmcp-server.svg)](https://www.npmjs.com/package/gluestack-ui-mcp-server)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![React Native](https://img.shields.io/badge/React%20Native-61DAFB?logo=react&logoColor=white)](https://reactnative.dev/)
[![Expo](https://img.shields.io/badge/Expo-000020?logo=expo&logoColor=white)](https://expo.dev/)

> **šŸ“± The definitive MCP server for React Native development with Gluestack UI - Build universal apps with AI assistance!**

This Model Context Protocol (MCP) server provides AI assistants with comprehensive access to [Gluestack UI](https://gluestack.io/) - the premier **React Native-first** component library that delivers true cross-platform experiences. Whether you're building for iOS, Android, or the web, this server intelligently provides components, source code, and examples optimized for React Native development workflows.

## Key Features

### šŸ“± **React Native-First Development**
- **70+ React Native Components**: Production-ready components optimized for mobile-first development
- **Universal Platform Support**: Single codebase runs on iOS, Android, and Web seamlessly
- **Expo Integration**: Perfect compatibility with Expo workflows and managed builds
- **React Native Navigation**: Built-in support for stack, tab, and drawer navigation patterns
- **Platform-Specific Optimizations**: Components automatically adapt to iOS and Android design guidelines

### šŸŽØ **Multi-Variant Architecture for React Native**
Go beyond basic styling with variants designed for different React Native use cases:
- **šŸŽØ NativeWind**: Tailwind CSS components optimized for React Native with `react-native-css-interop`
- **šŸŽ­ Themed**: Native styling with Gluestack's design token system - perfect for branded apps  
- **šŸ”§ Unstyled**: Headless components for maximum customization in React Native projects

### šŸ“‹ **React Native-Optimized Intelligence**
- **TypeScript-First**: Complete TypeScript definitions for React Native component props
- **Platform Detection**: Smart handling of `Platform.OS` checks and platform-specific code
- **Expo Examples**: Real-world usage patterns for Expo Router, EAS Build, and Expo dev workflows
- **Performance Patterns**: React Native performance best practices baked into component examples

### šŸ”„ **Cross-Platform Excellence**
- **Universal Components**: Write once, run on iOS, Android, and Web
- **Responsive Design**: Built-in support for different screen sizes and orientations
- **Native Feel**: Components follow platform-specific design guidelines automatically
- **Web Compatibility**: Seamless React Native Web integration for responsive web apps

### ⚔ **Development Acceleration**
- **GitHub Mode**: Access the latest React Native components directly from the repository
- **Local Development**: Work with local Gluestack UI installations for rapid iteration
- **AI-Powered**: Generate React Native screens, components, and navigation flows with AI assistance
- **Testing Ready**: Components come with accessibility labels and test IDs for React Native testing

## Quick Start

### Prerequisites

- Node.js 18+ 
- **React Native Development Environment**:
  - React Native CLI or Expo CLI
  - iOS Simulator (Mac) and/or Android Emulator
  - Metro bundler for React Native
- **Component Source** (choose one):
  - A local Gluestack UI installation or clone, OR
  - A GitHub Personal Access Token for fetching the latest React Native components

### Installation Options

#### Option 1: From npm (when published)
```bash
npm install -g gluestack-ui-mcp-server
```

#### Option 2: Local Development Setup
```bash
# Clone this repository
git clone https://github.com/gluestack/gluestack-ui-mcp-server
cd gluestack-ui-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

# Set your Gluestack UI path
export GLUESTACK_PATH="/path/to/your/gluestack-ui"

# Test the server
npm test
```

### Usage with Claude Desktop

#### For Published Package
Add to your Claude Desktop configuration file (`~/.config/claude/config.json`):

```json
{
  "mcpServers": {
    "gluestack-ui": {
      "command": "npx",
      "args": ["gluestack-ui-mcp-server"],
      "env": {
        "GLUESTACK_PATH": "/path/to/your/gluestack-ui"
      }
    }
  }
}
```

**Or for GitHub mode:**
```json
{
  "mcpServers": {
    "gluestack-ui": {
      "command": "npx", 
      "args": ["gluestack-ui-mcp-server"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}
```

#### For Local Development
Add to your Claude Desktop configuration file (`~/.config/claude/config.json`):

```json
{
  "mcpServers": {
    "gluestack-ui": {
      "command": "node",
      "args": ["/path/to/gluestack-ui-mcp-server/build/index.js"],
      "env": {
        "GLUESTACK_PATH": "/path/to/your/gluestack-ui"
      }
    }
  }
}
```

**Or for GitHub mode:**
```json
{
  "mcpServers": {
    "gluestack-ui": {
      "command": "node",
      "args": ["/path/to/gluestack-ui-mcp-server/build/index.js"], 
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}
```

## Available Tools

### šŸ” Component Discovery & Navigation

#### `list_components`
Get a full inventory of all 126+ available Gluestack UI components, including which variants are available for each.

#### `list_component_variants`
Compare and choose the perfect variant by getting detailed information and features for a specific component's `NativeWind`, `Themed`, and `Unstyled` versions.

#### `get_directory_structure`
Navigate the entire `gluestack-ui` monorepo from your AI assistant with a powerful directory browsing tool.

### šŸ“„ Code, Demos & Metadata

#### `get_component`
Retrieve the complete, unmodified source code for any component variant, providing perfect context for code generation.

#### `get_component_demo`
Access battle-tested usage examples directly from Storybook to understand how components are meant to be used in practice.

#### `get_component_metadata`
Go beyond the code to understand its API. This tool extracts TypeScript props, dependencies from import statements, and documentation from comments.

## Configuration Options

### Environment Variables
- `GLUESTACK_PATH`: Path to local Gluestack UI installation.
- `GITHUB_TOKEN`: GitHub Personal Access Token for API access.
- `LOG_LEVEL`: Logging level (`debug`, `info`, `warn`, `error`).

### Command Line Arguments
```bash
# Local mode
gluestack-mcp --gluestack-path /path/to/gluestack-ui --log-level debug

# GitHub mode 
gluestack-mcp --github-token ghp_xxxxxxxxxxxx --log-level debug
```

## GitHub Mode (Fetch Latest Components)

Instead of requiring a local Gluestack UI installation, you can use GitHub mode to fetch the latest components directly from the official repository.

### Setting up GitHub Mode

#### Step 1: Get a GitHub Personal Access Token
1. Go to GitHub Settings → Developer settings → Personal access tokens
2. Generate a new token (classic) with `public_repo` scope
3. Copy the token (starts with `ghp_`)

#### Step 2: Configure Your MCP Client

**For Claude Desktop:**
```json
{
  "mcpServers": {
    "gluestack-ui": {
      "command": "npx",
      "args": ["gluestack-ui-mcp-server"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}
```

**For Command Line:**
```bash
export GITHUB_TOKEN="ghp_your_token_here"
gluestack-mcp
```

### Benefits of GitHub Mode
- šŸš€ **Always Up-to-Date**: Access the latest components directly from the main branch
- šŸ“¦ **No Local Setup**: No need to clone or maintain a local Gluestack UI repository
- šŸ”„ **Automatic Updates**: Components are fetched fresh from GitHub on each request
- šŸ“Š **Rate Limit Friendly**: Authenticated requests get higher GitHub API limits (5000/hour vs 60/hour)

## Supported Components

The server provides access to 126+ Gluestack UI components including:

**Layout**: Box, Center, HStack, VStack, Grid, Divider
**Forms**: Input, Textarea, Button, Checkbox, Radio, Select, Slider, Switch  
**Feedback**: Alert, Toast, Progress, Spinner, Skeleton
**Overlay**: Modal, AlertDialog, Popover, Tooltip, ActionSheet
**Data Display**: Avatar, Badge, Card, Image, Table
**Navigation**: Tabs, Menu, Link
**Media**: Image, ImageViewer
**Utilities**: Portal, Pressable, SafeAreaView

## Testing

The server includes comprehensive tests for both local and GitHub modes:

```bash
# Run basic tests
npm test

# Test local mode (requires GLUESTACK_PATH)
npm run test:local

# Test GitHub mode (requires GITHUB_TOKEN)
npm run test:github

# Test both modes
npm run test:both

# Test component discovery
npm run test:components

# Run comprehensive test suite
npm run test:comprehensive
```

### Test Environment Setup

**For Local Mode Testing:**
```bash
export GLUESTACK_PATH=/path/to/gluestack-ui
npm run test:local
```

**For GitHub Mode Testing:**
```bash
export GITHUB_TOKEN=ghp_your_token_here
npm run test:github
```

## Requirements

- Node.js 18+
- Either:
  - Local Gluestack UI installation/clone (for local mode), OR
  - GitHub Personal Access Token (for GitHub mode)
- MCP-compatible AI client (Claude Desktop, Continue.dev, etc.)

## Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

# Gluestack UI MCP Server Implementation Summary

## šŸŽ‰ Implementation Complete

The Gluestack UI MCP Server has been successfully implemented with all planned features and capabilities.

## āœ… Completed Features

### 1. **Project Foundation**
- āœ… Complete TypeScript project setup with proper configuration
- āœ… NPM package configuration with all necessary dependencies
- āœ… Build system with TypeScript compilation
- āœ… Executable binary setup with proper shebang

### 2. **Core MCP Server Infrastructure** 
- āœ… MCP Protocol server implementation using `@modelcontextprotocol/sdk`
- āœ… STDIO transport for communication with AI clients
- āœ… Request/response handlers for tool calls
- āœ… Comprehensive error handling and logging
- āœ… Server capabilities registration

### 3. **CLI & Configuration**
- āœ… Command-line argument parsing (`--gluestack-path`, `--log-level`, `--help`)
- āœ… Environment variable support (`GLUESTACK_PATH`, `LOG_LEVEL`)
- āœ… Winston-based logging system with configurable levels
- āœ… Help system with usage examples

### 4. **Component Discovery System**
- āœ… Intelligent component detection across multiple variants
- āœ… Support for NativeWind, Themed, and Unstyled component variants
- āœ… Automatic detection of component features (demos, stories, docs)
- āœ… Metadata extraction from package.json and source files
- āœ… Component relationship analysis and dependency tracking

### 5. **MCP Tools Implementation**
- āœ… **`list_components`** - Lists all 70+ available components
- āœ… **`get_component`** - Retrieves component source code
- āœ… **`get_component_demo`** - Gets component examples and stories
- āœ… **`get_component_metadata`** - Extracts props, dependencies, examples
- āœ… **`list_component_variants`** - Shows all variants for a component

### 6. **TypeScript Integration**
- āœ… Advanced TypeScript interface parsing for component props
- āœ… Dependency extraction from import statements
- āœ… JSDoc comment extraction for component documentation
- āœ… Type-safe API with comprehensive schemas

### 7. **Multi-Variant Support**
- āœ… **NativeWind Variant** - Modern Tailwind CSS styling (primary)
- āœ… **Themed Variant** - Gluestack design system tokens
- āœ… **Unstyled Variant** - Headless components for custom styling
- āœ… Intelligent variant selection with fallbacks

### 8. **Documentation & Testing**
- āœ… Comprehensive README with usage examples
- āœ… API documentation for all tools
- āœ… Integration guides for Claude Desktop, Continue.dev, etc.
- āœ… Test scripts and validation
- āœ… MIT License and contribution guidelines

## šŸ—ļø Architecture Overview

```
gluestack-ui-mcp-server/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts                    # Entry point
│   ā”œā”€ā”€ server/                     # MCP server core
│   │   ā”œā”€ā”€ index.ts               # Server startup logic
│   │   ā”œā”€ā”€ createServer.ts        # Server instance creation
│   │   ā”œā”€ā”€ handler.ts             # Request handlers
│   │   ā”œā”€ā”€ capabilities.ts        # Server capabilities
│   │   └── version.ts             # Version management
│   ā”œā”€ā”€ tools/                      # MCP tool implementations
│   │   └── components/            # Component-related tools
│   │       ā”œā”€ā”€ list-components.ts
│   │       ā”œā”€ā”€ get-component.ts
│   │       ā”œā”€ā”€ get-component-demo.ts
│   │       ā”œā”€ā”€ get-component-metadata.ts
│   │       └── list-component-variants.ts
│   ā”œā”€ā”€ utils/                      # Utilities and helpers
│   │   ā”œā”€ā”€ component-discovery.ts  # Component detection engine
│   │   └── logger.ts              # Logging system
│   └── cli/                       # Command-line interface
│       └── args.ts                # Argument parsing
ā”œā”€ā”€ build/                          # Compiled JavaScript
└── README.md                      # Complete documentation
```

## šŸš€ Key Capabilities

### Component Library Support
- **126 Components**: Complete Gluestack UI component library coverage
- **Cross-Platform**: React Native components that work on iOS, Android, Web
- **Modern Styling**: NativeWind (Tailwind) integration
- **Design System**: Themed variant with design tokens
- **Flexibility**: Unstyled variant for complete customization

### AI Integration Features
- **Rich Context**: Provides complete component source code with TypeScript types
- **Usage Examples**: Real working examples from Storybook demos
- **Metadata Extraction**: Props interfaces, dependencies, documentation
- **Intelligent Search**: Component discovery by name or category
- **Variant Awareness**: Automatically selects best variant for use case

### Developer Experience
- **Zero Configuration**: Works with default paths and settings
- **Flexible Setup**: Supports custom Gluestack UI installations
- **Comprehensive Logging**: Detailed debugging and monitoring
- **Error Handling**: Graceful failures with helpful error messages
- **Security Hardened**: Package overrides and dependency locking for enhanced security
- **Type Safety**: Full TypeScript support throughout

## šŸŽÆ Usage Examples

### Basic Component Retrieval
```bash
# List all components
echo '{"method": "tools/call", "params": {"name": "list_components"}}' | npx gluestack-ui-mcp-server

# Get Button component source
echo '{"method": "tools/call", "params": {"name": "get_component", "arguments": {"componentName": "Button"}}}' | npx gluestack-ui-mcp-server
```

### Claude Desktop Integration
```json
{
  "mcpServers": {
    "gluestack-ui": {
      "command": "npx",
      "args": ["gluestack-ui-mcp-server"],
      "env": {
        "GLUESTACK_PATH": "/path/to/gluestack-ui"
      }
    }
  }
}
```

## šŸ”§ Technical Decisions

### Component Discovery Strategy
- **Primary Source**: `example/storybook-nativewind/src/components/` for rich examples
- **Fallback Sources**: Core packages for implementation details
- **Caching**: In-memory component registry for performance
- **Multi-Variant**: Concurrent discovery across all variant types

### TypeScript Parsing
- **Regex-Based**: Lightweight interface parsing without AST complexity
- **Prop Extraction**: Automatic detection of component props and types
- **Import Analysis**: Dependency tracking from import statements
- **JSDoc Support**: Comment extraction for documentation

### Error Handling
- **Graceful Degradation**: Continue operation even if some components fail
- **Detailed Logging**: Comprehensive error context for debugging
- **User-Friendly Messages**: Clear error messages for common issues
- **Circuit Breaker**: Prevent cascading failures in component discovery

## 🌟 Benefits for AI Development

### Accelerated Development
- **Instant Access**: Components available to AI assistants immediately
- **Best Practices**: Examples show proper component usage patterns  
- **Type Safety**: TypeScript interfaces ensure correct prop usage
- **Variant Selection**: Automatic selection of most appropriate variant

### Enhanced Code Quality
- **Consistent Styling**: Gluestack UI design system principles
- **Accessibility**: Components built with accessibility best practices
- **Cross-Platform**: Write once, run on iOS, Android, Web
- **Modern Stack**: Latest React Native and styling approaches

### Productivity Boost
- **Reduced Lookup**: No need to manually browse documentation
- **Complete Context**: Source code, examples, and metadata in one request
- **Intelligent Discovery**: Find components by functionality or name
- **Rapid Prototyping**: Quickly scaffold UI components

## šŸŽŠ Ready for Production

The Gluestack UI MCP Server is now complete and ready for:

- **AI Assistant Integration** (Claude Desktop, Continue.dev, Cursor, etc.)
- **NPM Package Publication** (`gluestack-ui-mcp-server`)
- **Community Use** (Open source with MIT license)
- **Enterprise Deployment** (Supports custom installations and configurations)

This implementation provides AI assistants with comprehensive access to the Gluestack UI ecosystem, enabling rapid development of high-quality React Native applications with modern styling and cross-platform compatibility.

## License

MIT

**Built in Melbourne with ā¤ļø for the Gluestack and AI development communities**

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct aspect: source code, demo, metadata, directory structure, list of components, and variants. No two tools overlap in purpose.

Naming Consistency5/5

All tool names use a consistent verb_noun pattern with lowercase underscores (e.g., get_component, list_components). Perfectly predictable.

Tool Count5/5

With 6 tools, the server covers the necessary operations without bloat. It is well-scoped for retrieving component information.

Completeness4/5

The tool set covers retrieval of component source, demo, metadata, variants, and directory structure. A minor gap might be a search or filter tool, but core needs are met.

Maintenance

ActivityInactive
ResponsivenessNo issues