MCP.md

# 🤖 MCP Server for AI Tools

> **Model Context Protocol (MCP)** integration for Mishka Chelekom - Connect your favorite AI tools directly to the component library.

Mishka Chelekom includes a built-in MCP server that enables AI assistants like **Claude Code**, **Cursor**, and **Claude Desktop** to browse components, generate code, and access documentation seamlessly.

---

## 🚀 Quick Start

### Option 1: Standalone Server

Start the MCP server independently:

```bash
mix mishka.mcp.server
```

> 📍 Server runs at `http://localhost:4003/mcp`

**Options:**

| Option | Alias | Description | Default |
|:-------|:------|:------------|:--------|
| `--port` | `-p` | HTTP port to listen on | `4003` |

**Example:**

```bash
mix mishka.mcp.server --port 5000
```

---

### Option 2: Integrate with Phoenix

Add the MCP endpoint directly to your Phoenix router:

```bash
mix mishka.mcp.setup
```

> 📍 Adds endpoint at `/mcp` on your **Phoenix port** (default `http://localhost:4000/mcp`)

**Options:**

| Option | Alias | Description | Default |
|:-------|:------|:------------|:--------|
| `--path` | `-p` | Custom MCP endpoint path | `/mcp` |
| `--dev-only` | | Only enable in development | `true` |
| `--yes` | | Skip confirmation prompts | `false` |

**Examples:**

```bash
# Custom path
mix mishka.mcp.setup --path /api/mcp

# Enable in all environments
mix mishka.mcp.setup --dev-only=false

# Skip prompts
mix mishka.mcp.setup --yes
```

---

## 🔌 Connect Your AI Tools

> **Important:** Use the correct URL based on your setup:
> - **Standalone server:** `http://localhost:4003/mcp`
> - **Phoenix integration:** `http://localhost:4000/mcp` (your Phoenix port)

### Claude Code

```bash
# For standalone server
claude mcp add --transport http mishka-chelekom http://localhost:4003/mcp

# For Phoenix integration
claude mcp add --transport http mishka-chelekom http://localhost:4000/mcp
```

### Cursor / VS Code

Create `.mcp.json` in your project root:

```json
{
  "mcpServers": {
    "mishka-chelekom": {
      "type": "http",
      "url": "http://localhost:4003/mcp"
    }
  }
}
```

> For Phoenix integration, change port to `4000` (or your Phoenix port).

### Cursor / VS Code (via MCP Proxy)

If your editor doesn't support HTTP transport directly, use [mcp_proxy_rust](https://github.com/tidewave-ai/mcp_proxy_rust) to bridge stdio and HTTP:

```json
{
  "mcpServers": {
    "mishka-chelekom": {
      "command": "mcp-proxy",
      "args": ["--transport", "http", "http://localhost:4003/mcp"]
    }
  }
}
```

> 💡 Install the proxy with: `cargo install mcp-proxy` or download from [releases](https://github.com/tidewave-ai/mcp_proxy_rust/releases)

### Claude Desktop

Add to your Claude Desktop configuration:

```json
{
  "mcpServers": {
    "mishka-chelekom": {
      "type": "http",
      "url": "http://localhost:4003/mcp"
    }
  }
}
```

> For Phoenix integration, change port to `4000` (or your Phoenix port).

---

## 🛠️ Available Tools (11)

> Tools are actions the AI can perform on your behalf.

| Tool | Description |
|:-----|:------------|
| `generate_component` | Generate mix command for a single component |
| `generate_components` | Generate mix command for multiple components |
| `get_component_info` | Get component configuration options (variants, colors, sizes) |
| `get_example` | Get HEEx code examples with usage patterns |
| `get_js_hook_info` | Get JavaScript hook documentation |
| `get_mix_task_info` | Get mix task documentation |
| `search_components` | Search components by name or functionality |
| `uninstall_component` | Generate uninstall command |
| `update_config` | Update project configuration settings |
| `validate_config` | Validate configuration file for errors |
| `get_docs` | Fetch documentation from mishka.tools |

---

## 📚 Available Resources (9)

> Resources are read-only data the AI can access.

| Resource | Description |
|:---------|:------------|
| `list_components` | List all available components with categories |
| `list_colors` | List color variants with CSS variables |
| `list_variants` | List style variants (default, outline, shadow, etc.) |
| `list_sizes` | List size options (small, medium, large, etc.) |
| `list_spaces` | List spacing options |
| `list_scripts` | List JavaScript hooks (Carousel, Clipboard, etc.) |
| `list_dependencies` | List component dependencies |
| `list_css_variables` | List all CSS custom properties |
| `get_config` | Get current project configuration |

---

## 💡 Example Usage

Once connected, you can ask your AI assistant things like:

- *"Show me all available button variants"*
- *"Generate a modal component with primary color"*
- *"What JavaScript hooks does the carousel need?"*
- *"Search for form-related components"*
- *"Show me an example of the alert component"*

---

## ⚠️ Note for AI Tools

AI assistants may initially try incorrect resource URIs before discovering the correct ones. This is normal behavior - the AI will automatically recover by listing available resources and using the correct URIs.

---

## 📖 Learn More

- [Mishka Chelekom Documentation](https://mishka.tools/chelekom/docs)
- [CLI Documentation](https://mishka.tools/chelekom/docs/cli)
- [GitHub Repository](https://github.com/mishka-group/mishka_chelekom)