Skip to main content
Glama
README.md
# SVGR MCP Server

A Model Context Protocol (MCP) server that exposes [SVGR](https://react-svgr.com/) functionality to convert SVG content into React components.

## Features

- **SVG to React Conversion**: Transforms raw SVG strings into valid React components.
- **Configurable Output**: Supports extensive SVGR configuration options including TypeScript generation, React Native support, and Prettier formatting.
- **Optimization**: Optional SVGO integration for optimizing SVG content before conversion.

```json
{
  "mcpServers": {
    "svgr": {
      "command": "npx",
      "args": ["svgr-mcp@latest"],
      "type": "stdio"
    }
  }
}
```

## API Reference

### Tools

#### `convert_svg_to_react`

Converts an SVG string into a React component.

**Input Schema:**

| Parameter       | Type     | Description                                   | Default         |
| :-------------- | :------- | :-------------------------------------------- | :-------------- |
| `svg`           | `string` | **Required**. The raw SVG content to convert. | -               |
| `componentName` | `string` | Name for the generated React component.       | `"MyComponent"` |
| `options`       | `object` | Configuration options for SVGR.               | `{}`            |

**Options Object:**

The `options` parameter supports the following keys:

- **`icon`** (`boolean | string | number`): Replace SVG width and height with a custom value.
- **`native`** (`boolean`): Modify all SVG nodes for React Native.
- **`typescript`** (`boolean`): Generate TypeScript component.
- **`dimensions`** (`boolean`): Keep width and height attributes from the root SVG tag.
- **`expandProps`** (`"start" | "end" | boolean`): Forward properties to the SVG tag.
- **`prettier`** (`boolean`): Format output with Prettier.
- **`prettierConfig`** (`object`): Specify custom Prettier configuration.
- **`svgo`** (`boolean`): Use SVGO to optimize SVG code.
- **`ref`** (`boolean`): Add ref support to the component.
- **`memo`** (`boolean`): Wrap component with `React.memo`.
- **`replaceAttrValues`** (`object`): Map of attribute values to replace.
- **`svgProps`** (`object`): Add props to the root SVG tag.
- **`titleProp`** (`boolean`): Add title prop support.
- **`descProp`** (`boolean`): Add description prop support.
- **`jsxRuntime`** (`"classic" | "automatic" | "classic-preact"`): Specify the JSX runtime to use.
- **`exportType`** (`"named" | "default"`): Specify export type (named or default).

**Return Value:**

Returns a text content block containing the generated React component code.

**Example Usage:**

```json
{
  "name": "convert_svg_to_react",
  "arguments": {
    "svg": "<svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\"><circle cx=\"24\" cy=\"24\" r=\"20\"/></svg>",
    "componentName": "CircleIcon",
    "options": {
      "typescript": true,
      "icon": true
    }
  }
}
```

### Prompts

#### `svg_to_react_native`

A convenience prompt that converts SVG to a React Native component with recommended settings.

**Title:** SVG to React Native Component

**Description:** Convert SVG to React Native component with TypeScript and named export

**Arguments:**

| Parameter | Type     | Description                                   |
| :-------- | :------- | :-------------------------------------------- |
| `svg`     | `string` | **Required**. SVG content or file path to SVG |

**Preset Options:**

This prompt automatically applies the following options:

- `native: true` - Generates React Native compatible components
- `typescript: true` - Outputs TypeScript code
- `jsxRuntime: automatic` - Uses the automatic JSX runtime
- `exportType: named` - Uses named exports

**Usage:**

This prompt guides the assistant to use the `convert_svg_to_react` tool with React Native-specific configurations, making it easier to generate mobile-ready components without manually specifying all options.

TDQS

A3.5/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no possibility of confusion between tools. The tool's purpose is singular and well-defined.

Naming Consistency5/5

The single tool name follows a clear verb_noun pattern (convert_svg_to_react) and is descriptive of its function.

Tool Count3/5

With only one tool, the server feels minimally scoped. While the tool is not trivial, the server would benefit from additional tools (e.g., for configuration or batch processing) to better serve its domain.

Completeness4/5

The tool covers the core conversion task for both SVG content and files, but lacks options for customizing SVGR parameters or handling complex workflows. Minor gap in configurability.

Maintenance

ActivityInactive
ResponsivenessNo issues