svg-MCP-TN
by rthaithem
README.md
> ⚠️ **NOTICE: PROJECT UNDER ACTIVE DEVELOPMENT & CURRENTLY UNSTABLE**
> **This project is in active development and is considered experimental and unstable.** Architectural interfaces, JSON-RPC tool contracts, API endpoint payloads, and vector data representations are subject to breaking changes without prior notice. Use in production environments at your own risk.
<div align="center">
# svg-MCP-TN
### Modern Vector SVG Emoji Library & Model Context Protocol (MCP) Server
[](https://github.com)
[](https://modelcontextprotocol.io)
[](https://pages.cloudflare.com)
[](https://www.typescriptlang.org)
[](LICENSE)
<p align="center">
<strong>Empower your AI coding agents (Cursor, Claude Desktop, Windsurf) to search, inspect, and generate clean, standardized vector SVG emojis directly into your codebases.</strong>
</p>
</div>
---
## 📋 Table of Contents
1. [Executive Overview](#executive-overview)
2. [Why svg-MCP-TN? (The Problem We Solve)](#why-svg-mcp-tn-the-problem-we-solve)
3. [System Architecture](#system-architecture)
4. [Model Context Protocol (MCP) Specifications](#model-context-protocol-mcp-specifications)
- [Protocol Transport](#protocol-transport)
- [Exposed Tool Signatures](#exposed-tool-signatures)
5. [AI Assistant Integration Guide](#ai-assistant-integration-guide)
- [Cursor IDE](#1-cursor-ide)
- [Claude Desktop](#2-claude-desktop)
- [Windsurf Editor](#3-windsurf-editor)
- [Cline / Roo-Code Extension](#4-cline--roo-code)
- [Direct JSON-RPC 2.0 (cURL / HTTP)](#5-direct-json-rpc-20-curl--http)
6. [Supported Export Targets](#supported-export-targets)
7. [Edge Runtime & Cloudflare Deployment](#edge-runtime--cloudflare-deployment)
8. [Local Development & Contribution Guidelines](#local-development--contribution-guidelines)
9. [Stability Status & Development Roadmap](#stability-status--development-roadmap)
10. [License & Community](#license--community)
---
## 🏢 Executive Overview
**`svg-MCP-TN`** is an open-source, enterprise-grade vector emoji library and high-speed **Model Context Protocol (MCP)** server. It provides developers and autonomous AI coding agents with a structured, queryable index of handcrafted SVG vector graphics.
Instead of relying on native operating system fonts (which render inconsistently across Apple, Windows, and Linux environments) or prompting LLMs to generate ad-hoc, broken inline SVG markup, `svg-MCP-TN` allows AI assistants to retrieve mathematically clean, viewBox-normalized SVG paths, React (TSX) components, and Vue 3 Single File Components (SFC) in sub-millisecond roundtrips.
---
## 🎯 Why svg-MCP-TN? (The Problem We Solve)
| Common Industry Dilemma | The `svg-MCP-TN` Solution |
| :--- | :--- |
| **Hallucinated Vector Markup:** AI assistants often output malformed, clipping, or unoptimized SVG paths when asked to code icons from scratch. | **Deterministic Tooling:** AI calls verified MCP tools that return peer-reviewed, optimized vector nodes. |
| **Cross-Platform OS Fragmentation:** Unicode emojis look radically different on Apple macOS, Windows 11, Google Android, and Ubuntu Linux. | **100% Visual Parity:** Pure vector `<svg>` geometry ensures exact pixel-matched rendering across all target platforms. |
| **Bloated Webfont Bundles:** Heavy font icon sheets add blocking network latency and render-tree layout shifts. | **Zero Font Overhead:** Tree-shakeable individual SVG files, inline code snippets, and tiny payload footprints. |
| **Manual Developer Asset Hunting:** Engineers waste time browsing external asset galleries, copying raw files, and refactoring props. | **In-Editor Context:** AI agents query and paste complete typed components directly into current workspace files. |
---
## 🏗️ System Architecture
```
+-----------------------------+
| AI Developer Assistants |
| (Cursor, Claude, Windsurf) |
+--------------+--------------+
|
JSON-RPC 2.0 (HTTP / SSE)
|
v
+-------------------------------------------------+
| svg-MCP-TN Edge Gateway |
| (Cloudflare Pages / V8 Edge Runtime) |
+-------------------------+-----------------------+
|
+-------------------------+-----------------------+
| |
v v
+---------------------------+ +---------------------------+
| MCP Server Engine | | Interactive Web App |
| - search_emoji | | - Live Emoji Catalog |
| - get_emoji_svg | | - Playground & Tester |
| - get_emoji_component | | - One-Click Integration |
+---------------------------+ +---------------------------+
```
### Technical Highlights
- **Edge Native:** Runs on the Cloudflare Workers / Pages V8 Edge Runtime via `export const runtime = 'edge';`.
- **JSON-RPC 2.0 Compliance:** Strictly adheres to the [Model Context Protocol Specification](https://modelcontextprotocol.io) with error schemas and parameter validation.
- **Strict Typing:** 100% end-to-end TypeScript codebase with zero runtime dependencies for the vector core.
- **Microsecond Latency:** Global CDN distribution ensures instant response times for developer IDE workflows worldwide.
---
## 📡 Model Context Protocol (MCP) Specifications
### Protocol Transport
- **Protocol Version:** MCP `2024-11-05`
- **Default RPC Endpoint:** `/api/mcp`
- **Accepted Request Format:** `application/json`
- **JSON-RPC Version:** `2.0`
### Exposed Tool Signatures
The server exposes three core functions via `tools/list` and `tools/call`:
#### 1. `search_emoji`
Searches the emoji catalog by natural language keywords, emotional sentiment, semantic tags, or categorization.
*Input Schema:*
```json
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Keyword, mood, or name to search (e.g. 'rocket', 'celebrate', 'heart', 'code')"
},
"category": {
"type": "string",
"enum": ["all", "smileys", "gestures", "tech", "activities", "symbols", "objects"],
"description": "Optional category filter"
},
"limit": {
"type": "number",
"description": "Maximum number of results to return (default: 10, max: 50)"
}
},
"required": ["query"]
}
```
*Sample Response:*
```json
{
"total": 1,
"results": [
{
"id": "rocket",
"name": "Rocket",
"category": "tech",
"tags": ["launch", "speed", "startup", "deploy", "fast"]
}
]
}
```
---
#### 2. `get_emoji_svg`
Returns clean, standalone SVG source code ready for embedding or saving to `.svg` files.
*Input Schema:*
```json
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique emoji identifier (e.g. 'rocket', 'fire', 'heart')"
},
"size": {
"type": "number",
"description": "Desired width and height dimension in pixels (default: 64)"
}
},
"required": ["id"]
}
```
*Sample Response Content:*
```xml
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" fill="none">
<!-- Optimized vector path data -->
</svg>
```
---
#### 3. `get_emoji_component`
Generates a production-ready, fully typed frontend component in the requested framework.
*Input Schema:*
```json
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique emoji identifier"
},
"framework": {
"type": "string",
"enum": ["react", "vue", "html"],
"description": "Frontend framework syntax: 'react' (TSX), 'vue' (SFC), or 'html' (inline web component)"
},
"size": {
"type": "number",
"description": "Default render size in pixels (default: 32)"
}
},
"required": ["id", "framework"]
}
```
*Sample React (TSX) Output:*
```tsx
import React from 'react';
export interface RocketEmojiProps extends React.SVGProps<SVGSVGElement> {
size?: number;
className?: string;
}
export const RocketEmoji: React.FC<RocketEmojiProps> = ({
size = 32,
className = '',
...props
}) => (
<svg
viewBox="0 0 64 64"
width={size}
height={size}
fill="none"
className={className}
{...props}
>
{/* Clean vector paths */}
</svg>
);
```
---
## 🤖 AI Assistant Integration Guide
### 1. Cursor IDE
To enable direct emoji lookups and component generation within your Cursor workspace, add the MCP server definition to your workspace configuration file:
**Location:** `.cursor/mcp.json`
```json
{
"mcpServers": {
"svg-emojis": {
"url": "https://your-domain.pages.dev/api/mcp",
"transport": "http"
}
}
}
```
*Once configured, you can prompt Cursor:*
> *"Add a celebratory vector emoji component to our checkout page using the `svg-emojis` MCP tool."*
---
### 2. Claude Desktop
Connect Claude Desktop to `svg-MCP-TN` using the standard desktop configuration:
**Location:**
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"svg-emojis": {
"command": "npx",
"args": [
"-y",
"mcp-proxy",
"https://your-domain.pages.dev/api/mcp"
]
}
}
}
```
---
### 3. Windsurf Editor
Add the server in your Windsurf workspace settings:
**Location:** `~/.codeium/windsurf/mcp_config.json`
```json
{
"mcpServers": {
"svg-emojis": {
"serverUrl": "https://your-domain.pages.dev/api/mcp"
}
}
}
```
---
### 4. Cline / Roo-Code
In your VS Code extension settings for Cline:
```json
{
"mcpServers": {
"svg-emojis": {
"type": "stream",
"url": "https://your-domain.pages.dev/api/mcp"
}
}
}
```
---
### 5. Direct JSON-RPC 2.0 (cURL / HTTP)
Execute a raw JSON-RPC call from any terminal or automated test pipeline:
```bash
curl -X POST https://your-domain.pages.dev/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_emoji",
"arguments": {
"query": "fire"
}
}
}'
```
---
## 🎨 Supported Export Targets
| Format | Output Description | Ideal Usage |
| :--- | :--- | :--- |
| **Raw SVG** | Standalone `<svg ...>` node with explicit viewBox and clean path data | Static asset pipelines, Figma imports, `.svg` files |
| **React TSX** | Typed functional React component with standard SVG attributes | Next.js, Vite React, Remix, Gatsby |
| **Vue 3 SFC** | Single File Component with `<template>` and `<script setup lang="ts">` | Nuxt 3, Vite Vue 3 applications |
| **Inline Web Markup** | Minified, accessible HTML SVG snippet with `role="img"` | Vanilla JavaScript, Hugo, Astro, Static HTML |
---
## ⚡ Edge Runtime & Cloudflare Deployment
`svg-MCP-TN` is built specifically to deploy to Cloudflare Pages using Edge runtime workers for zero cold starts and ultra-low latency worldwide.
### Deployment Prerequisites
Ensure the Wrangler CLI is authenticated:
```bash
npm install -g wrangler
wrangler login
```
### Production Build & Deploy
```bash
# 1. Build client-side assets & compile edge routes
npm run build
# 2. Deploy bundle to Cloudflare Pages
npx @cloudflare/next-on-pages
wrangler pages deploy dist --project-name=svg-mcp-tn
```
---
## 💻 Local Development & Contribution Guidelines
### Prerequisites
- Node.js `v18.0.0` or higher
- npm / pnpm / bun
### Getting Started
```bash
# Clone the repository
git clone https://github.com/your-username/svg-MCP-TN.git
cd svg-MCP-TN
# Install project dependencies
npm install
# Start local development server (binds to http://localhost:3000)
npm run dev
# Run TypeScript linter & static analysis
npm run lint
# Compile production bundle
npm run build
```
### Vector Contribution Standards
1. **ViewBox:** All vector graphics must use a standardized `viewBox="0 0 64 64"`.
2. **No Font Glyphs:** Never use `<text>` elements or system font references. Every shape must be composed of clean `<path>`, `<circle>`, `<rect>`, or `<polygon>` vector data.
3. **Palette Consistency:** Utilize curated gradient and flat color tokens matching modern accessible standards.
4. **Id Uniqueness:** Ensure emoji identifier names follow `kebab-case` (e.g. `party-popper`, `rocket`, `sparkles`).
---
## 🚦 Stability Status & Development Roadmap
> ⚠️ **Project Status: ALPHA / EXPERIMENTAL (Pre-1.0)**
> The internal API schema and MCP endpoints are under rapid development.
| Milestone | Status | Description |
| :--- | :---: | :--- |
| **Core Vector Catalog** | 🟡 In Progress | Expanding baseline icon set across 6 core categories |
| **MCP JSON-RPC 2.0 Gateway** | 🟢 Operational | Full support for `tools/list` and `tools/call` |
| **Interactive Developer Playground** | 🟢 Operational | In-browser testing suite for real-time JSON-RPC payload debugging |
| **SSE (Server-Sent Events) Stream** | 🟡 Under Evaluation | Adding real-time streaming capability for dynamic updates |
| **Figma Plugin Integration** | ⚪ Planned | Direct import from Figma design tokens |
| **v1.0.0 Specification Freeze** | ⚪ Planned | Permanent API stabilization & semantic versioning enforcement |
---
## 📄 License & Community
Distributed under the **MIT License**. See `LICENSE` for more information.
- **Issue Tracker:** Submit bug reports, schema suggestions, or icon requests via GitHub Issues.
- **Community Standards:** Please adhere to our Code of Conduct in all discussions and pull requests.
- **Commercial Inquiries & Sponsorship:** Contact the maintainers for custom enterprise icon collections.
<div align="center">
<sub>Engineered with precision for modern developers and AI agents.</sub>
</div>
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues