What is the Keyline Icons MCP server?
Keyline Icons MCP is a stdio server shipping with the full Keyline Icons set: 1,507 names across stroke, two-tone, duotone and fill styles, rounded or sharp corners. An agent searches by name, reads full SVG source for a style and corner treatment, or gets the React import line, all offline with no API key.
The Keyline Icons MCP server is the package @keyline-icons/mcp. It lets an agent search the Keyline Icons set, read an icon's full SVG source and get the matching React import, so a prompt names a real icon instead of guessing one.
The whole icon set ships inside the package. There is no API key and no network call, so a search or an SVG read returns instantly and works offline.
What the set covers
- 1,507 names drawn on one 24x24 grid, each in stroke, two-tone, duotone and fill styles.
- Every drawing comes in rounded and sharp corners, for 12,056 SVGs in total.
- Containers: 64 icons also exist in a square- form and 69 in a circle- form, wrapping the base drawing.
- A glyph with nothing to fill, such as bar-chart, still returns its stroke drawing in the filled styles.
How naming and search work
Compound names read base-first, so a mail icon with a tick is mail-check, not check-mail. Search ranks exact matches over prefix, word-boundary and substring matches, and a miss falls back to edit distance, so chekc still suggests check.
Who it is for
Best for
- Projects already using shadcn/ui that want an agent to pull a verified icon name and SVG instead of inventing one.
- Teams who want a React import returned alongside the icon, including the sharp and duotone entry points.
- Anyone who wants icon search to work with no account, no key and no network round trip.
Not for
- If your job is turning an SVG into Android Vector Drawable XML, SVG to Android Vector is the better fit for that job.
- When the task is turning a folder of SVG icons into icon fonts, SVG to icon fonts is the better fit for that work.
- When you want a shadcn look without any React at all, Basecoat UI MCP is the better fit for that stack.
- When you build with shadcn-svelte and need live component docs, shadcn-svelte MCP is the better fit for that stack.
Connect Keyline Icons MCP Server for AI Coding Agents to your AI client
claude mcp add keyline-icons -- npx -y @keyline-icons/mcpAdd the server in Claude Code
Run claude mcp add keyline-icons -- npx -y @keyline-icons/mcp in your project. Claude Code starts the server over stdio on the next session.
Or configure any stdio MCP client
Add the config above to your client's MCP settings file, with command npx and args -y and @keyline-icons/mcp.
Restart and check
Restart your client and confirm the keyline-icons server shows as connected.
Try a prompt
Ask the agent to find an icon for a mail notification with a check mark, or to get the React import for the folder icon in duotone.
Client configuration
{
"mcpServers": {
"keyline-icons": {
"command": "npx",
"args": ["-y", "@keyline-icons/mcp"]
}
}
}What you can do with it
- Offline by designThe full set ships inside the package, so search and SVG reads need no API key and no network call.
- Four styles per nameEvery one of the 1,507 names exists in stroke, two-tone, duotone and fill, so the agent can match the style already in use.
- Rounded and sharp cornersEach style comes in both corner treatments, doubling the set to 12,056 SVGs an agent can pull from.
- Typo-tolerant searchA name that misses an exact match is matched by substring, then edit distance, then leading segment, so small typos still resolve.
- Honest missing stylesWhen a glyph has no fillable region, the tool says so directly rather than returning an empty result.
- React import includedget_react_usage returns the exact import path and JSX, covering the sharp and duotone entry points, so code matches the real package.
Tools it exposes
describe_set
Returns counts, the four styles and the rule deciding which icons carry which style. Worth calling first.
search_icons
Finds icons by name, ranking exact over prefix over word-boundary over substring matches, and returns which styles each has.
get_icon
Returns full SVG source for one name, in a chosen style and corner treatment, rounded or sharp.
get_react_usage
Returns the import line and JSX for a name from @keyline-icons/react, including the sharp and duotone entry points.
Frequently asked questions
What is the Keyline Icons MCP server?
It is the package @keyline-icons/mcp, an MCP server that ships the whole Keyline Icons set. An agent can search names, read full SVG source in any style and corner treatment, and get the matching React import, with no network call.
How do I install the Keyline Icons MCP server?
Run claude mcp add keyline-icons -- npx -y @keyline-icons/mcp in Claude Code, or add a stdio entry with command npx and args -y and @keyline-icons/mcp to any other MCP client's config file.
Does the Keyline Icons MCP server need an API key?
No. The whole icon set ships inside the package, so search and SVG reads run locally with no key, no account and no network round trip. A search or an SVG read returns instantly because nothing crosses the network, and it keeps working offline.
What tools does the Keyline Icons MCP server expose?
Four tools: describe_set for counts and styles, search_icons for name search, get_icon for full SVG source in a chosen style and corner, and get_react_usage for the matching React import line and JSX, sharp entry points included.
How many icons and styles does Keyline Icons cover?
1,507 names, each drawn in stroke, two-tone, duotone and fill, and each of those in rounded and sharp corners, for 12,056 SVGs that search_icons and get_icon can return. Containers add a square or circle wrap around 133 of those base names.
What happens if an icon name has a typo?
search_icons falls back from exact match to substring, then edit distance, then leading segment, so a near miss such as chekc still suggests check, and arow still suggests the arrow family even with no bare arrow icon.
Can the MCP server return icons with no fillable area?
Yes, honestly. A glyph such as bar-chart has no interior to fill, so get_icon still returns its stroke drawing for the filled styles rather than an empty result. Fill and duotone need an enclosed region, from either the glyph or a container.


