# MCP Chart Server

A Model Context Protocol (MCP) server that provides comprehensive chart generation capabilities. This server offers a wide variety of chart types with comprehensive Zod schema validation for type-safe chart configuration.

## Claude.AI Integration (Free Running Version)

For immediate use with Claude.AI without local setup, use these public endpoints:

- **Streamable HTTP**: `https://chart.mcp.cloudcertainty.com/mcp`
- **Server-Sent Events**: `https://chart.mcp.cloudcertainty.com/sse`

Simply add either endpoint to your Claude.AI MCP configuration to start generating charts immediately.

![Claude AI](screenshot/image.png)

## Features

- 🎯 **15+ Chart Types** - Comprehensive chart library covering all major visualization needs
- 🔒 **Type Safety** - Full Zod schema validation for all chart configurations
- 🌐 **Multiple Deployment Options** - Local server, HTTP streaming, and SSE endpoints
- 🚀 **Claude.AI Integration** - Ready-to-use endpoints for Claude.AI integration
- 📊 **Professional Charts** - Support for financial, statistical, and business visualizations

## Chart Types Supported

### Basic Charts
- **Bar Chart** - Traditional bar charts with multiple datasets
- **Line Chart** - Line charts with customizable styling and fill options
- **Pie Chart** - Pie charts with hover effects and custom colors
- **Radar Chart** - Multi-axis radar charts for comparative analysis
- **Polar Area Chart** - Radial area charts for cyclical data

### Advanced Charts
- **Doughnut Chart** - Enhanced pie charts with center labels and semi-circle support
- **Scatter Plot** - X/Y coordinate plotting with optional trend lines
- **Bubble Chart** - Three-dimensional data visualization with bubble sizes
- **OHLC Chart** - Financial candlestick charts with volume and indicators

### Specialized Charts
- **Violin Plot** - Statistical distribution visualization
- **Gauge Chart** - Customizable gauge meters with thresholds
- **Radial Gauge** - Simple radial progress indicators
- **Progress Bar** - Linear progress indicators
- **Sparkline** - Minimal trend visualization
- **Sankey Diagram** - Flow and process visualization

## Quick Start

### Local Development

1. **Clone the repository**
   ```bash
   git clone https://github.com/KamranBiglari/mcp-server-chart.git
   cd mcp-server-chart
   ```

2. **Install dependencies**
   ```bash
   npm install
   ```

3. **Build the project**
   ```bash
   npm run build
   ```

4. **Run the server**
   ```bash
   npm start
   ```

## Usage Examples

### Basic Bar Chart
```json
{
  "type": "bar",
  "data": {
    "labels": ["January", "February", "March", "April", "May"],
    "datasets": [
      { "label": "Sales", "data": [50, 60, 70, 180, 190] },
      { "label": "Expenses", "data": [100, 200, 300, 400, 500] }
    ]
  }
}
```

### Financial OHLC Chart
```json
{
  "type": "ohlc",
  "data": {
    "datasets": [
      {
        "label": "MSFT",
        "data": [
          {"x": 1459468800000, "o": 18.23, "h": 19.36, "l": 18.18, "c": 19.31}
        ],
        "color": {"up": "#26a69a", "down": "#ef5350", "unchanged": "#999"}
      }
    ]
  }
}
```

### Advanced Doughnut Chart
```json
{
  "type": "doughnut",
  "data": {
    "labels": ["Complete", "Remaining"],
    "datasets": [{"data": [75, 25], "backgroundColor": ["#4CAF50", "#E0E0E0"]}]
  },
  "options": {
    "circumference": 3.14159,
    "rotation": 3.14159,
    "plugins": {
      "doughnutlabel": {
        "labels": [{"text": "75%", "font": {"size": 24}}]
      }
    }
  }
}
```

### Scatter Plot
```json
{
  "type": "scatter",
  "data": {
    "datasets": [
      {
        "label": "Dataset 1",
        "data": [
          {"x": 2, "y": 4},
          {"x": 3, "y": 3},
          {"x": 5, "y": 8}
        ]
      }
    ]
  }
}
```

## Configuration

### MCP Client Configuration

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "chart-server": {
      "command": "node",
      "args": ["path/to/mcp-server-chart/dist/index.js"]
    }
  }
}
```

### Claude.AI Configuration

For Claude.AI integration, add one of these endpoints:

```json
{
  "mcpServers": {
    "chart-server": {
      "url": "https://chart.mcp.cloudcertainty.com/mcp"
    }
  }
}
```

## Development

### Project Structure
```
src/
├── charts/           # Chart type definitions
│   ├── bar.ts       # Bar chart schema
│   ├── line.ts      # Line chart schema
│   ├── ohlc.ts      # OHLC chart schema
│   └── ...          # Other chart types
├── utils/           # Utility functions
│   ├── index.ts     # Zod to JSON schema conversion
│   └── schema.ts    # Common schema definitions
└── index.ts         # Main MCP server
```

### Building
```bash
npm run build      # Build TypeScript
npm run dev        # Development mode with watch
npm run lint       # Run linting
```

### Testing
```bash
npm test           # Run test suite
npm run test:watch # Watch mode testing
```

## Chart Type Reference

| Chart Type | Use Case | Data Format |
|------------|----------|-------------|
| `bar` | Categorical comparisons | `{labels: string[], datasets: {data: number[]}[]}` |
| `line` | Trends over time | `{labels: string[], datasets: {data: number[]}[]}` |
| `pie` | Part-to-whole relationships | `{labels: string[], datasets: {data: number[]}[]}` |
| `doughnut` | Enhanced pie charts | `{labels: string[], datasets: {data: number[]}[]}` |
| `radar` | Multi-variable comparison | `{labels: string[], datasets: {data: number[]}[]}` |
| `polarArea` | Cyclical data | `{labels: string[], datasets: {data: number[]}[]}` |
| `scatter` | Correlation analysis | `{datasets: {data: {x: number, y: number}[]}[]}` |
| `bubble` | Three-dimensional data | `{datasets: {data: {x: number, y: number, r: number}[]}[]}` |
| `ohlc` | Financial data | `{datasets: {data: {x: number, o: number, h: number, l: number, c: number}[]}[]}` |
| `violin` | Statistical distributions | `{labels: string[], datasets: {data: number[][]}[]}` |
| `gauge` | KPI dashboards | `{datasets: {value: number, data: number[]}[]}` |
| `sankey` | Process flows | `{datasets: {data: {from: string, to: string, flow: number}[]}[]}` |

## API Reference

### Tools Available

All chart types are available as MCP tools with the following pattern:
- Tool name matches chart type (e.g., `bar`, `line`, `ohlc`)
- Input schema validates chart configuration
- Returns generated chart data

### Schema Validation

Every chart type includes comprehensive Zod schemas that validate:
- Chart type and structure
- Data format and types
- Styling options
- Chart-specific configurations

## Contributing

1. Fork the repository
2. Create a feature branch
3. Add your chart type or improvement
4. Include tests and documentation
5. Submit a pull request

## License

MIT License - see LICENSE file for details

## Support

- 📚 Documentation: Check the inline schema documentation
- 🐛 Issues: Report bugs via GitHub Issues
- 💬 Discussions: Use GitHub Discussions for questions
- 🌐 Live Demo: Try the public endpoints with Claude.AI

## Roadmap

- [ ] Real-time data binding
- [ ] Custom theme support
- [ ] Export formats (PNG, SVG, PDF)
- [ ] Animation and interaction options
- [ ] Dashboard layout compositions
