Skip to main content
Glama

SVG Canvas MCP

Claude Code에서 포토샵 수준의 SVG 그래픽을 생성할 수 있는 MCP(Model Context Protocol) 서버입니다.

주요 기능

  • 캔버스 관리: 생성, 열기, 저장, 리사이즈

  • 도형 그리기: 사각형, 원, 타원, 선, 다각형, 별, 하트, 둥근 모서리 사각형

  • 패스 빌더: 베지어 곡선, 호(arc), 직선을 조합한 복잡한 경로 생성

  • 텍스트/이미지: 다양한 스타일의 텍스트, 이미지 삽입

  • 레이어 시스템: 레이어 생성, 삭제, 순서 변경, 가시성, 잠금, 블렌드 모드

  • 객체 조작: 이동, 회전, 스케일, 복제, 그룹화, Z-순서

  • 스타일링: 채우기, 선, 그라디언트(선형/원형), 패턴, 필터(블러, 그림자 등)

  • 애니메이션: CSS 키프레임, SMIL 애니메이션 지원

  • 심볼: 재사용 가능한 심볼 정의 및 인스턴스 배치

  • 템플릿: 캔버스를 템플릿으로 저장/불러오기

  • 히스토리: Undo/Redo 지원

  • 내보내기: SVG, PNG, Data URI

  • AI 기능: 색상 팔레트 추천, 색상 분석, 객체 정렬 제안, 레이아웃 추천

  • 블로그 운영 기능:

    • OG 이미지 프리셋 (10개 플랫폼, 6개 테마)

    • 2D/3D 차트 생성 (bar, line, pie, donut, pyramid)

    • 2D/3D 다이어그램 (flowchart, mindmap, sequence, isometric)

    • QR 코드 생성 (순수 SVG 기반)

    • 워터마크 오버레이

  • 이미지 트레이싱: 비트맵 이미지를 벡터 패스로 변환 (potrace 기반)

Related MCP server: icogenie-mcp

설치

의존성

npm install

패키지

버전

용도

@modelcontextprotocol/sdk

^1.0.0

MCP 프로토콜 SDK

@anthropic-ai/sdk

^0.39.0

Anthropic API (AI 기능)

svgson

^5.3.1

SVG 파싱/직렬화

svg-path-commander

^2.0.8

SVG 패스 조작

uuid

^10.0.0

고유 ID 생성

zod

^3.23.0

스키마 검증

potrace

^2.1.8

이미지 트레이싱 (비트맵→벡터)

빌드

npm run build

Claude Code 설정

1. .mcp.json 파일 생성

프로젝트 루트 또는 ~/.claude/ 디렉토리에 .mcp.json 파일을 생성합니다:

{
  "mcpServers": {
    "svg-canvas": {
      "command": "node",
      "args": ["/path/to/svg-canvas-mcp/build/index.js"]
    }
  }
}

2. 활성화

~/.claude/settings.local.json에서 활성화:

{
  "enabledMcpjsonServers": ["svg-canvas"]
}

사용 예시

기본 캔버스 생성

SVG 캔버스 MCP를 사용해서 1200x630 크기의 썸네일을 만들어줘

도형 그리기

빨간색 원과 파란색 사각형을 그려줘

그라디언트 적용

배경에 보라색에서 파란색으로 가는 그라디언트를 적용해줘

애니메이션 추가

로고에 회전 애니메이션을 추가해줘

도구 목록

캔버스

도구

설명

svg_create

새 캔버스 생성

svg_open

SVG 파일 열기

svg_save

파일로 저장

svg_info

캔버스 정보 조회

svg_resize

크기 변경

svg_set_background

배경색 설정

도형 그리기

도구

설명

draw_rect

사각형

draw_circle

원

draw_ellipse

타원

draw_line

직선

draw_polyline

연결선

draw_polygon

다각형

draw_text

텍스트

draw_image

이미지

draw_path

SVG 패스

draw_regular_polygon

정다각형

draw_star

별

draw_heart

하트

draw_rounded_rect_path

둥근 모서리 사각형

패스 빌더

도구

설명

path_create

패스 시작

path_lineto

직선 추가

path_curveto

베지어 곡선

path_arcto

호(arc) 추가

path_close

패스 닫기

path_finish

패스 완료

path_cancel

패스 취소

레이어

도구

설명

layer_create

레이어 생성

layer_delete

레이어 삭제

layer_rename

이름 변경

layer_reorder

순서 변경

layer_visibility

표시/숨김

layer_lock

잠금

layer_opacity

불투명도

layer_blend_mode

블렌드 모드

layer_list

목록 조회

layer_select

레이어 선택

layer_merge

레이어 병합

layer_duplicate

레이어 복제

객체 조작

도구

설명

object_select

객체 선택

object_list

객체 목록

object_move

이동

object_scale

크기 조절

object_rotate

회전

object_delete

삭제

object_duplicate

복제

object_group

그룹화

object_ungroup

그룹 해제

object_order

Z-순서 변경

스타일

도구

설명

style_fill

채우기

style_stroke

선 스타일

style_opacity

불투명도

style_gradient

그라디언트 정의

style_pattern

패턴 정의

style_filter

필터 적용

style_remove_filter

필터 제거

애니메이션

도구

설명

anim_css_add

CSS 애니메이션

anim_smil_add

SMIL 애니메이션

anim_remove

애니메이션 제거

anim_list

애니메이션 목록

심볼 & 템플릿

도구

설명

symbol_define

심볼 정의

symbol_use

심볼 사용

template_save

템플릿 저장

template_load

템플릿 불러오기

template_list

템플릿 목록

template_delete

템플릿 삭제

히스토리

도구

설명

history_undo

실행 취소

history_redo

다시 실행

history_list

히스토리 목록

history_goto

특정 시점으로 이동

history_clear

히스토리 삭제

내보내기

도구

설명

export_svg

SVG 파일로 저장

export_code

SVG 코드 반환

export_png

PNG 파일로 저장

export_data_uri

Data URI 변환

preview_browser

브라우저 미리보기

AI 기능

도구

설명

ai_suggest_colors

색상 팔레트 추천

ai_analyze_colors

색상 분석

ai_align_objects

객체 정렬 제안

ai_suggest_layout

레이아웃 추천

OG 이미지 프리셋

도구

설명

preset_list

사용 가능한 플랫폼/테마 목록

preset_create_og

플랫폼별 OG 이미지 생성

preset_create_thumbnail

간편 썸네일 생성

지원 플랫폼: og, naver_blog, naver_search, twitter, youtube, instagram, instagram_story, tistory, pinterest, linkedin

지원 테마: modern, dark, gradient_blue, gradient_sunset, minimal, nature

차트

도구

설명

chart_bar

막대 차트

chart_line

선 차트

chart_pie

파이 차트

chart_donut

도넛 차트

chart_3d_bar

3D 막대 차트

chart_3d_pie

3D 파이 차트

chart_3d_pyramid

3D 피라미드 차트

다이어그램

도구

설명

diagram_flowchart

플로우차트

diagram_mindmap

마인드맵

diagram_sequence

시퀀스 다이어그램

diagram_isometric

아이소메트릭 블록 다이어그램

diagram_3d_architecture

3D 인프라 아키텍처

QR 코드

도구

설명

qrcode_generate

QR 코드 생성

qrcode_batch

다량 QR 코드 생성

워터마크

도구

설명

watermark_text

텍스트 워터마크

watermark_image

이미지 워터마크

watermark_copyright

저작권 표시

watermark_diagonal

대각선 반복 워터마크

watermark_remove

워터마크 제거

이미지 트레이싱

도구

설명

trace_image

이미지를 벡터 패스로 변환 (흑백)

trace_color

컬러 이미지를 다색 벡터로 변환

trace_outline

외곽선만 추출

trace_silhouette

실루엣(단색 형태) 추출

프로젝트 구조

svg-canvas-mcp/
├── src/
│   ├── index.ts          # 엔트리포인트
│   ├── server.ts         # MCP 서버 설정
│   ├── core/             # 핵심 모듈
│   │   ├── document.ts   # SVG 문서 관리
│   │   ├── element.ts    # SVG 요소 조작
│   │   ├── history-manager.ts  # Undo/Redo
│   │   ├── layer-manager.ts    # 레이어 관리
│   │   └── template-manager.ts # 템플릿 관리
│   ├── tools/            # MCP 도구 정의
│   │   ├── canvas.ts     # 캔버스 도구
│   │   ├── drawing.ts    # 그리기 도구
│   │   ├── path.ts       # 패스 빌더
│   │   ├── layer.ts      # 레이어 도구
│   │   ├── object.ts     # 객체 조작
│   │   ├── style.ts      # 스타일링
│   │   ├── animation.ts  # 애니메이션
│   │   ├── symbol.ts     # 심볼
│   │   ├── history.ts    # 히스토리
│   │   ├── export.ts     # 내보내기
│   │   ├── ai.ts         # AI 기능
│   │   ├── preset.ts     # OG 이미지 프리셋
│   │   ├── chart.ts      # 2D/3D 차트
│   │   ├── diagram.ts    # 2D/3D 다이어그램
│   │   ├── qrcode.ts     # QR 코드
│   │   ├── watermark.ts  # 워터마크
│   │   └── trace.ts      # 이미지 트레이싱
│   ├── types/            # TypeScript 타입
│   └── utils/            # 유틸리티
│       ├── color-utils.ts
│       ├── path-utils.ts
│       ├── svg-parser.ts
│       ├── transform-utils.ts
│       └── validation.ts
├── build/                # 빌드 출력
├── package.json
└── tsconfig.json

개발

# 개발 모드 (빌드 + 실행)
npm run dev

# 빌드만
npm run build

# 감시 모드
npm run watch

라이선스

MIT License

Available Tools

79 tools
ai_align_objectsC

선택한 객체들의 정렬 방법을 제안합니다.

Inputs: objectIds (required), mode.

ai_analyze_colorsB

현재 캔버스에서 사용된 색상을 분석합니다.

Inputs: no named parameters.

ai_suggest_colorsC

기준 색상을 바탕으로 조화로운 색상 팔레트를 추천합니다.

Inputs: baseColor (required), harmony (required), includeShades.

ai_suggest_layoutC

캔버스 크기에 맞는 레이아웃을 제안합니다.

Inputs: contentType (required), elementCount.

anim_css_addC

객체에 CSS 애니메이션을 추가합니다.

Inputs: objectId (required), keyframes (required), duration (required), timingFunction, +4 more.

anim_listC

정의된 애니메이션 목록을 조회합니다.

Inputs: objectId.

anim_removeC

객체의 애니메이션을 제거합니다.

Inputs: objectId (required), animId.

anim_smil_addC

객체에 SMIL 애니메이션을 추가합니다. (SVG 내장 애니메이션)

Inputs: objectId (required), attributeName (required), dur (required), from, +8 more.

draw_circleC

원을 그립니다.

Inputs: cx (required), cy (required), r (required), fill, +5 more.

draw_ellipseC

타원을 그립니다.

Inputs: cx (required), cy (required), rx (required), ry (required), +6 more.

draw_heartB

하트 모양을 그립니다.

Inputs: cx (required), cy (required), size (required), fill, +4 more.

draw_imageC

이미지를 삽입합니다.

Inputs: href (required), x (required), y (required), width (required), +5 more.

draw_lineC

직선을 그립니다.

Inputs: x1 (required), y1 (required), x2 (required), y2 (required), +5 more.

draw_pathC

SVG 패스 데이터(d 속성)로 직접 경로를 그립니다.

Inputs: d (required), fill, stroke, strokeWidth, +3 more.

draw_polygonD

다각형을 그립니다.

Inputs: points (required), fill, stroke, strokeWidth, +3 more.

draw_polylineC

여러 점을 연결하는 선을 그립니다.

Inputs: points (required), stroke, strokeWidth, fill, +3 more.

draw_rectC

사각형을 그립니다.

Inputs: x (required), y (required), width (required), height (required), +8 more.

draw_regular_polygonC

정다각형을 그립니다.

Inputs: cx (required), cy (required), radius (required), sides (required), +6 more.

draw_rounded_rect_pathC

둥근 모서리 사각형을 패스로 그립니다 (모서리별 다른 반경 가능).

Inputs: x (required), y (required), width (required), height (required), +6 more.

draw_starC

별 모양을 그립니다.

Inputs: cx (required), cy (required), outerRadius (required), innerRadius (required), +7 more.

draw_textC

텍스트를 추가합니다.

Inputs: x (required), y (required), text (required), fontFamily, +10 more.

export_codeC

현재 캔버스의 SVG 코드를 반환합니다.

Inputs: format.

export_data_uriA

SVG를 Data URI 형식으로 변환합니다. (이미지 태그에 직접 사용 가능)

Inputs: encode.

export_pngA

PNG 파일로 내보냅니다. (참고: 현재는 SVG를 저장하고 별도 변환 도구 사용 권장)

Inputs: filePath (required), scale, background.

export_svgC

SVG 파일로 내보냅니다.

Inputs: filePath (required), minify.

history_clearA

모든 히스토리를 삭제합니다. (주의: 되돌릴 수 없음)

Inputs: no named parameters.

history_gotoC

히스토리의 특정 시점으로 이동합니다.

Inputs: historyIndex (required).

history_listC

작업 히스토리를 조회합니다.

Inputs: limit.

history_redoC

취소한 작업을 다시 실행합니다.

Inputs: steps.

history_undoC

마지막 작업을 취소합니다.

Inputs: steps.

layer_blend_modeC

레이어의 블렌드 모드를 설정합니다.

Inputs: layerId (required), blendMode (required).

layer_createC

새 레이어를 생성합니다.

Inputs: name, insertAt.

layer_deleteC

레이어를 삭제합니다.

Inputs: layerId (required).

layer_duplicateC

레이어를 복제합니다.

Inputs: layerId (required).

layer_listB

모든 레이어 목록을 조회합니다.

Inputs: no named parameters.

layer_lockC

레이어의 잠금 상태를 설정합니다.

Inputs: layerId (required), locked (required).

layer_mergeC

두 레이어를 병합합니다.

Inputs: sourceLayerId (required), targetLayerId (required).

layer_opacityC

레이어의 불투명도를 설정합니다.

Inputs: layerId (required), opacity (required).

layer_renameC

레이어 이름을 변경합니다.

Inputs: layerId (required), newName (required).

layer_reorderC

레이어 순서를 변경합니다.

Inputs: layerId (required), newIndex (required).

layer_selectC

활성 레이어를 선택합니다.

Inputs: layerId (required).

layer_visibilityC

레이어의 표시/숨김 상태를 설정합니다.

Inputs: layerId (required), visible (required).

object_deleteC

객체를 삭제합니다.

Inputs: objectId (required).

object_duplicateC

객체를 복제합니다.

Inputs: objectId (required), offsetX, offsetY.

object_groupC

여러 객체를 그룹으로 묶습니다.

Inputs: objectIds (required), groupId.

object_listC

캔버스의 모든 객체 목록을 조회합니다.

Inputs: layerId.

object_moveC

객체를 이동합니다.

Inputs: objectId (required), dx (required), dy (required).

object_orderC

객체의 Z 순서를 변경합니다.

Inputs: objectId (required), direction (required).

object_rotateC

객체를 회전합니다.

Inputs: objectId (required), angle (required), originX, originY.

object_scaleC

객체 크기를 조절합니다.

Inputs: objectId (required), scaleX (required), scaleY, originX, +1 more.

object_selectC

객체를 ID로 선택하고 정보를 조회합니다.

Inputs: objectId (required).

object_ungroupC

그룹을 해제합니다.

Inputs: groupId (required).

path_arctoC

현재 패스에 호(arc)를 추가합니다.

Inputs: rx (required), ry (required), x (required), y (required), +4 more.

path_cancelC

현재 패스 빌더를 취소합니다.

Inputs: no named parameters.

path_closeB

현재 패스를 닫습니다 (시작점으로 연결).

Inputs: no named parameters.

path_createA

새 패스 빌더를 시작합니다. path_lineto, path_curveto 등으로 경로를 추가한 후 path_finish로 완료합니다.

Inputs: startX (required), startY (required).

path_curvetoC

현재 패스에 베지어 곡선을 추가합니다.

Inputs: type (required), controlPoints (required), endX (required), endY (required), +1 more.

path_finishC

패스 빌더를 완료하고 SVG 요소로 추가합니다.

Inputs: fill, stroke, strokeWidth, opacity, +3 more.

path_linetoC

현재 패스에 직선을 추가합니다.

Inputs: x (required), y (required), relative.

preview_browserC

현재 캔버스를 브라우저에서 미리봅니다. (Playwright MCP 연동)

Inputs: openBrowser.

style_fillC

객체의 채우기를 설정합니다.

Inputs: objectId (required), fill (required).

style_filterC

객체에 필터를 적용합니다.

Inputs: objectId (required), filterType (required), params (required).

style_gradientC

그라디언트를 정의합니다. fill에 url(#id)로 사용합니다.

Inputs: type (required), stops (required), id, x1, +8 more.

style_opacityC

객체의 불투명도를 설정합니다.

Inputs: objectId (required), opacity (required).

style_patternC

패턴을 정의합니다.

Inputs: width (required), height (required), content (required), id.

style_remove_filterC

객체에서 필터를 제거합니다.

Inputs: objectId (required).

style_strokeC

객체의 선 스타일을 설정합니다.

Inputs: objectId (required), color, width, dasharray, +2 more.

svg_createB

새 SVG 캔버스를 생성합니다.

Inputs: width (required), height (required), viewBox, background, +1 more.

svg_infoB

현재 캔버스의 정보를 조회합니다.

Inputs: no named parameters.

svg_openC

기존 SVG 파일을 엽니다.

Inputs: filePath (required).

svg_resizeC

캔버스 크기를 변경합니다.

Inputs: width (required), height (required), scaleContent.

svg_saveC

현재 캔버스를 SVG 파일로 저장합니다.

Inputs: filePath.

svg_set_backgroundB

캔버스 배경색을 설정합니다.

Inputs: color.

symbol_defineC

객체를 재사용 가능한 심볼로 정의합니다.

Inputs: objectId (required), symbolId, viewBox.

symbol_useC

정의된 심볼을 배치합니다.

Inputs: symbolId (required), x (required), y (required), width, +3 more.

template_deleteC

저장된 템플릿을 삭제합니다.

Inputs: templateId (required).

template_listC

저장된 템플릿 목록을 조회합니다.

Inputs: category, tags, search.

template_loadC

저장된 템플릿을 불러옵니다.

Inputs: templateName (required).

template_saveC

현재 캔버스를 템플릿으로 저장합니다.

Inputs: name (required), description, tags, category.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 79 tools

    Disambiguation4/5

    Most tools have distinct purposes with clear boundaries, such as draw_circle vs. draw_rect or layer_create vs. layer_delete. However, some overlap exists in AI suggestion tools (e.g., ai_align_objects and ai_suggest_layout might be confused for layout-related tasks), and path creation tools (path_create, path_lineto, etc.) could be ambiguous without careful reading of descriptions.

    Naming Consistency5/5

    Tool names follow a highly consistent snake_case pattern with clear verb_noun or category_verb_noun structures throughout, such as draw_circle, layer_create, and export_png. All tools adhere to this convention, making them predictable and easy to parse for agents.

    Tool Count2/5

    With 79 tools, the count is excessive for a single server, likely overwhelming for agents and leading to confusion or inefficiency. While SVG editing is a broad domain, this many tools suggests over-fragmentation, such as separate tools for each shape type or path command, rather than consolidation.

    Completeness5/5

    The tool set provides comprehensive coverage for SVG canvas operations, including drawing, styling, layering, animation, export, history, and templates. It supports full CRUD/lifecycle management for objects, layers, and symbols, with no obvious gaps in core functionality for the domain.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      F
      maintenance
      An MCP server that integrates with Recraft AI to enable generation and manipulation of high-quality raster and vector images through tools like image generation, editing, vectorization, background removal, and upscaling.
      9
      275 npm
      60
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      AI-powered SVG icon generation MCP server. Generate production-ready SVG icons from text descriptions with customizable styles, sizes, and themes.
      93 npm
      8
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An MCP server that turns Claude into a full image production studio, enabling creation, editing, resizing, and brand-consistent asset generation across multiple platforms.
      6
      MIT