Svg/icons MCP
320K+ open-source SVG icons: 12 tools, anonymous metadata search; SVG, exports, collections via Pro.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"mcp": {
"url": "https://svgicons.com/mcp"
}
}
}リモートエンドポイント
https://svgicons.com/mcpstreamable-httpできること
ツール一覧
ツール(12)
🟢search_icons(query, category, iconSetPrefix, limit, offset, ...)
Search svgicons.com icons and return icon metadata. Raw SVG requires a Pro API token with icons:read and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Icon search query, such as \"arrow left\", \"settings\", or \"github\"."
},
"category": {
"type": "string",
"description": "Optional icon set category, including New."
},
"iconSetPrefix": {
"type": "string",
"description": "Optional icon set prefix to limit the search."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Max results, 1-50. Default 10 (20 with a Pro token); capped at 10 anonymous, 20 member, 50 Pro."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Zero-based result offset for pagination. Default 0."
},
"includeSvg": {
"type": "boolean",
"description": "Include wrapped SVG markup. Requires Pro token icons:read."
}
},
"required": [
"query"
]
}🟢search_icon_sets(query, category, limit, page)
Search icon sets by name, prefix, author, category, or description.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search text matched against icon set name, prefix, author, category, and description."
},
"category": {
"type": "string",
"description": "Optional category, including New."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Icon sets per page, 1-50. Default 20."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "One-based page number. Default 1."
}
}
}🟢get_icon(id, includeSvg, format)
Return one icon by ID. Metadata is public; raw SVG requires a Pro API token with icons:read and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "The catalog icon ID, as shown in search results and icon page URLs."
},
"includeSvg": {
"type": "boolean",
"description": "Include the raw body and wrapped SVG markup. Requires a Pro token with icons:read. Default false."
},
"format": {
"type": "string",
"enum": [
"metadata",
"svg"
],
"description": "svg is an alias for includeSvg=true; metadata (default) returns metadata only."
}
},
"required": [
"id"
]
}⚪export_icon_png(id, iconName, sizes, densities, backgroundType, ...)
Render one icon as PNG or a ZIP of PNG variants. Requires the Pro Plan and an MCP token with icons:read and exports:create scopes.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "The catalog icon ID."
},
"iconName": {
"type": "string",
"description": "The icon slug/name from the URL. Required to prevent ID-only bulk export."
},
"sizes": {
"type": "array",
"items": {
"type": "integer",
"enum": [
16,
24,
32,
48,
96,
128,
256,
512,
1024
],
"description": "Square canvas size in pixels."
},
"maxItems": 4,
"description": "Canvas sizes to render, up to 4 of the allowed pixel values. Default [512]."
},
"densities": {
"type": "array",
"items": {
"type": "integer",
"enum": [
1,
2,
3,
4
],
"description": "Device-pixel-ratio multiplier."
},
"maxItems": 2,
"description": "Density multipliers to render, up to 2. Default [1]."
},
"backgroundType": {
"type": "string",
"enum": [
"transparent",
"solid"
],
"description": "Background fill. Default transparent."
},
"backgroundColor": {
"type": "string",
"description": "Hex background color used when backgroundType is solid. Default #ffffff."
},
"iconColorMode": {
"type": "string",
"enum": [
"preserve",
"black",
"white",
"custom"
],
"description": "preserve (default) keeps source colors; black, white, or custom recolor the icon."
},
"iconColor": {
"type": "string",
"description": "Hex icon color used when iconColorMode is custom. Default #000000."
},
"padding": {
"type": "integer",
"minimum": 0,
"maximum": 256,
"description": "Padding around the icon in pixels, 0-256. Default 48."
},
"filename": {
"type": "string",
"description": "Base filename for the generated file. Defaults to the icon name."
},
"zip": {
"type": "boolean",
"description": "Return a ZIP of all size and density variants instead of a single PNG. Default false."
}
},
"required": [
"id",
"iconName"
]
}🟢recommend_icons_for_ui(uiDescription, concepts, category, limit)
Recommend icon candidates for a UI description using svgicons.com search metadata.
入力スキーマ
{
"type": "object",
"properties": {
"uiDescription": {
"type": "string",
"description": "Product UI, screen, or feature description."
},
"concepts": {
"type": "array",
"items": {
"type": "string",
"description": "One concept keyword, such as settings or invoice."
},
"description": "Optional explicit concept keywords, merged with concepts extracted from the description."
},
"category": {
"type": "string",
"description": "Optional icon set category filter, including New."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "Max recommendations, 1-30 with a Pro token (1-10 otherwise). Default 8."
}
},
"required": [
"uiDescription"
]
}🟡create_icon_kit(name, description, iconIds, framework, colorPolicy, ...)
Create a persistent Pro Icon Collection and optionally add icon IDs. Requires Pro API token with collections:write and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Collection name, up to 120 characters."
},
"description": {
"type": "string",
"description": "Optional collection description, up to 600 characters."
},
"iconIds": {
"type": "array",
"items": {
"type": "integer",
"description": "A catalog icon ID."
},
"description": "Catalog icon IDs to add at creation; up to 200, duplicates ignored."
},
"framework": {
"type": "string",
"enum": [
"svg",
"react-ts",
"vue",
"sprite"
],
"description": "Default export framework stored on the collection. Default svg."
},
"colorPolicy": {
"type": "string",
"enum": [
"currentColor",
"preserve",
"strip"
],
"description": "Stored color policy: currentColor rewrites fills, preserve keeps them, strip removes them. Default currentColor."
},
"namingPolicy": {
"type": "string",
"enum": [
"kebab",
"pascal",
"camel"
],
"description": "File and component naming: kebab (default), pascal, or camel."
}
},
"required": [
"name"
]
}⚪generate_icon_kit_for_project(projectName, projectDescription, screens, requiredConcepts, category, ...)
Recommend and persist an Icon Collection for a project brief. Requires Pro API token with collections:write and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"projectName": {
"type": "string",
"description": "Optional collection name; derived from the description when omitted."
},
"projectDescription": {
"type": "string",
"description": "Project brief used to extract icon concepts, up to 1500 characters."
},
"screens": {
"type": "array",
"items": {
"type": "string",
"description": "A screen or page name, such as Billing settings."
},
"description": "Optional screen or page names that contribute extra concepts."
},
"requiredConcepts": {
"type": "array",
"items": {
"type": "string",
"description": "One concept keyword."
},
"description": "Concepts that must be searched, merged with concepts extracted from the brief."
},
"category": {
"type": "string",
"description": "Optional icon set category filter, including New."
},
"maxIcons": {
"type": "integer",
"minimum": 1,
"maximum": 64,
"description": "Maximum icons in the generated collection, 1-64. Default 16."
},
"framework": {
"type": "string",
"enum": [
"svg",
"react-ts",
"vue",
"sprite"
],
"description": "Default export framework stored on the collection. Default svg."
},
"colorPolicy": {
"type": "string",
"enum": [
"currentColor",
"preserve",
"strip"
],
"description": "Stored color policy: currentColor rewrites fills, preserve keeps them, strip removes them. Default currentColor."
},
"namingPolicy": {
"type": "string",
"enum": [
"kebab",
"pascal",
"camel"
],
"description": "File and component naming: kebab (default), pascal, or camel."
}
},
"required": [
"projectDescription"
]
}⚪export_icon_collection(collectionId, formats, colorPolicy, namingPolicy, sizeProps, ...)
Queue a Pro Icon Collection export, including optional PNG packs. Requires an MCP token with exports:create.
入力スキーマ
{
"type": "object",
"properties": {
"collectionId": {
"type": [
"integer",
"string"
],
"description": "Numeric ID of the collection (integer or numeric string)."
},
"formats": {
"type": "array",
"items": {
"type": "string",
"enum": [
"svg-folder",
"svg-sprite",
"json-manifest",
"license-manifest",
"react-ts",
"vue",
"svelte",
"solid",
"blade",
"storybook",
"npm-package",
"png-pack",
"iconify-json",
"png"
],
"description": "An export format identifier; png is shorthand for png-pack."
},
"description": "Formats to build. Defaults to the basic set: SVG folder, SVG sprite, JSON manifest, license manifest."
},
"colorPolicy": {
"type": "string",
"enum": [
"currentColor",
"preserve",
"strip"
],
"description": "currentColor rewrites fills, preserve keeps them, strip removes them. When omitted, collections carrying styling (applied style or custom icons) default to preserve; plain collections use the collection's stored policy (currentColor unless changed)."
},
"namingPolicy": {
"type": "string",
"enum": [
"kebab",
"pascal",
"camel"
],
"description": "File and component naming: kebab, pascal, or camel. When omitted, uses the collection's stored policy (kebab unless changed)."
},
"sizeProps": {
"type": "boolean",
"description": "Emit size props on framework components. Default true."
},
"typescript": {
"type": "boolean",
"description": "Emit TypeScript where the format supports it. Default true."
},
"defaultSize": {
"type": "integer",
"minimum": 1,
"maximum": 1024,
"description": "Default component render size in pixels, 1-1024. Default 24."
},
"titleProp": {
"type": "boolean",
"description": "Include an accessible title prop on components. Default true."
},
"decorative": {
"type": "boolean",
"description": "Mark components decorative (aria-hidden) by default. Default true."
},
"componentSuffix": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]{0,31}$",
"description": "Component name suffix, 1-32 letters or digits starting with a letter. Default Icon."
},
"packageName": {
"type": "string",
"maxLength": 214,
"pattern": "^(?:@[a-z0-9][a-z0-9._-]*/[a-z0-9][a-z0-9._-]*|[a-z0-9][a-z0-9._-]*)$",
"description": "npm package name for npm-package exports, lowercase, optionally scoped."
},
"packageVersion": {
"type": "string",
"maxLength": 64,
"pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$",
"description": "Semver version for npm-package exports, such as 1.0.0. Default 0.1.0."
},
"png": {
"type": "object",
"description": "PNG pack options: sizes (up to 6 allowed pixel values, default [512]), densities (1-3, default [1]), backgroundType and backgroundColor, iconColorMode and iconColor, padding 0-256 pixels (default 48)."
}
},
"required": [
"collectionId"
]
}🟢list_icon_collections(query, limit, page)
List your persistent Icon Collections with icon counts. Requires a Pro API token with collections:read and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional name or slug filter."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Collections per page, 1-50. Default 20."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "One-based page number. Default 1."
}
}
}🟢get_icon_collection(collectionId, page, perPage)
Read one Icon Collection with its paginated entries. Custom-icon entries include entryId, customEditId, customName, and their customized SVG snapshot as the body. Requires a Pro API token with collections:read and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"collectionId": {
"type": [
"integer",
"string"
],
"description": "Numeric ID of the collection (integer or numeric string)."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "One-based page number. Default 1."
},
"perPage": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Entries per page, 1-100. Default 50."
}
},
"required": [
"collectionId"
]
}🟡add_icons_to_collection(collectionId, iconIds)
Add catalog icons to an existing Icon Collection as plain entries (idempotent). Requires a Pro API token with collections:write and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"collectionId": {
"type": [
"integer",
"string"
],
"description": "Numeric ID of the collection (integer or numeric string)."
},
"iconIds": {
"type": "array",
"items": {
"type": "integer",
"description": "A catalog icon ID."
},
"maxItems": 200,
"description": "Catalog icon IDs to add as plain entries; up to 200 per call, existing entries skipped."
}
},
"required": [
"collectionId",
"iconIds"
]
}🔴remove_icon_from_collection(collectionId, iconId, allVariants)
Remove an icon from an Icon Collection. Entry-precise by default: only the plain entry is removed and custom variants survive; set allVariants true to remove every entry of the icon. Requires a Pro API token with collections:write and mcp:use scopes.
入力スキーマ
{
"type": "object",
"properties": {
"collectionId": {
"type": [
"integer",
"string"
],
"description": "Numeric ID of the collection (integer or numeric string)."
},
"iconId": {
"type": "integer",
"minimum": 1,
"description": "Numeric ID of the catalog icon whose entry should be removed."
},
"allVariants": {
"type": "boolean",
"default": false,
"description": "true removes every entry of the icon, including custom variants. Default false: entry-precise, only the plain entry is removed and custom variants survive."
}
},
"required": [
"collectionId",
"iconId"
]
}コミュニティ
エビデンス