miromiro-mcp 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +162 -160
  2. package/package.json +42 -42
  3. package/src/index.mjs +665 -659
package/README.md CHANGED
@@ -1,160 +1,162 @@
1
- # miromiro-mcp
2
-
3
- [![npm version](https://img.shields.io/npm/v/miromiro-mcp)](https://www.npmjs.com/package/miromiro-mcp)
4
- [![MIT license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)
5
-
6
- MCP server for the [MiroMiro](https://miromiro.app/api) design-extraction API. Give your AI agent the real design of any live website - brand colors, fonts, design tokens, SVGs, images, Lottie animations, and paste-ready component code - so it builds from actual values instead of guessing from a screenshot.
7
-
8
- Works with Claude (web, desktop, Claude Code), ChatGPT, Cursor, Windsurf, Codex, and any MCP client.
9
-
10
- ## Claude Code plugin
11
-
12
- Install as a plugin to get the tools plus five skills that teach Claude when to reach for
13
- each one:
14
-
15
- - `elementor-section` - any site's section as an Elementor template to import into WordPress
16
- - `shopify-section` - any site's section as a Shopify theme section (`.liquid`)
17
- - `clone-section` - a section as Tailwind, HTML+CSS, React or Vue
18
- - `match-brand` - a site's colors, fonts and design tokens to build in its style
19
- - `extract-assets` - images, SVG icons, videos, audio and Lottie files
20
-
21
- ```bash
22
- claude plugin marketplace add SoraiaBarroso/miromiro-mcp
23
- claude plugin install miromiro@miromiro
24
- ```
25
-
26
- The plugin uses the remote server, so there is nothing to install and no key to paste - on
27
- first use it opens a one-click MiroMiro sign-in that links a free account (300 credits/month,
28
- no card).
29
-
30
- ## Skills for OpenClaw and other agents
31
-
32
- The same skills live in [`skills/`](skills). Each one uses the MiroMiro MCP tools when they
33
- are connected and otherwise calls the REST API with `MIROMIRO_API_KEY` (free key, 300
34
- credits a month: https://miromiro.app/api/onboarding).
35
-
36
- ## Quick start: remote server (nothing to install)
37
-
38
- A hosted server lives at:
39
-
40
- ```
41
- https://miromiro.app/mcp
42
- ```
43
-
44
- Paste that URL into any client that accepts a remote MCP server. On first use it opens a one-click MiroMiro sign-in that links a free account (300 credits/month, no card).
45
-
46
- - **Claude (web or desktop):** Settings → Connectors → Add custom connector → paste the URL. Or use the [one-click install](https://miromiro.app/api/mcp).
47
- - **ChatGPT:** Settings → Security and login → enable Developer mode, then Settings → Plugins → New Plugin with the URL (authentication: OAuth).
48
- - **Cursor (remote):** add `{ "mcpServers": { "miromiro": { "url": "https://miromiro.app/mcp" } } }` to `~/.cursor/mcp.json`.
49
- - **Claude Code:** `claude mcp add --transport http miromiro https://miromiro.app/mcp`, then `/mcp` in a session to sign in.
50
- - **Codex:** add `[mcp_servers.miromiro]` with `url = "https://miromiro.app/mcp"` to `~/.codex/config.toml`, then run `codex mcp login miromiro`.
51
- - **Grok Bot:** ask the bot "Add a custom MCP server called miromiro at https://miromiro.app/mcp", then press Authorize.
52
- - **Muse:** Settings → Connectors → Add custom connector → paste the URL.
53
- - Step-by-step pages for each agent: https://miromiro.app/api/agents/chatgpt (swap the last part for `claude`, `claude-code`, `codex`, `cursor`, `grok-bot`, `muse` or `openai-dots`).
54
- - **Raw API key instead of OAuth:** append `?access_key=mm_live_...` to the URL, or send it as an `Authorization: Bearer` header.
55
-
56
- ## Local server (npm)
57
-
58
- Prefer a local stdio process with the key in an env var? Get a free key at [miromiro.app/api/dashboard](https://miromiro.app/api/dashboard), then:
59
-
60
- **Cursor** (`~/.cursor/mcp.json`) / **Windsurf** (Settings → MCP):
61
-
62
- ```json
63
- {
64
- "mcpServers": {
65
- "miromiro": {
66
- "command": "npx",
67
- "args": ["-y", "miromiro-mcp"],
68
- "env": { "MIROMIRO_API_KEY": "mm_live_your_key" }
69
- }
70
- }
71
- }
72
- ```
73
-
74
- **Claude Code** (run in your terminal, not inside a `claude` session):
75
-
76
- ```bash
77
- claude mcp add miromiro -s user \
78
- --env MIROMIRO_API_KEY=mm_live_your_key \
79
- -- npx -y miromiro-mcp
80
- ```
81
-
82
- ## Tools
83
-
84
- | Tool | What it returns | Credits |
85
- |---|---|---|
86
- | `extract_code` | A section of a live page as a paste-ready component (Tailwind, HTML+CSS, JSX or Vue) or an importable Elementor template / Shopify section, plus the tokens it uses - start here to rebuild real UI | 25 |
87
- | `extract_brand` | Named color roles (primary/accent/background/text), palette, fonts split by role, logo, social profiles, a 0-1 confidence score, and `signals` explaining where the colors came from (declared tokens vs inferred) | 15 |
88
- | `extract_design_tokens` | Full token system with usage counts; `format: css` or `tailwind` for paste-ready output, `dtcg` for a W3C Design Tokens file (Style Dictionary / Figma variables) | 10 |
89
- | `extract_fonts` | Every font file and family the site loads, with weights, formats, and file URLs | 5 |
90
- | `extract_videos` | Video files, `og:video`, and player embeds (YouTube, Vimeo, Wistia, Loom), tagged by source; a direct video-file URL is returned as the single result, and a YouTube/Vimeo/TikTok/Dailymotion/Loom video URL returns its player embed without a fetch | 1 |
91
- | `extract_audio` | Audio files, `og:audio`, and podcast enclosures, tagged by source; a direct audio-file URL is returned as the single result | 1 |
92
- | `extract_lottie` | Lottie animation JSON files declared in the page | 3 |
93
- | `extract_svgs` | Inline SVG code (sanitized, paste-ready) plus external SVG file URLs | 1 |
94
- | `extract_assets` | Every image URL on a page, tagged by source, with alt text; a direct image-file URL is returned as the single result | 1 |
95
-
96
- All tools are read-only and retry-safe. Identical calls within 24 hours are served from cache for free, and failed calls are never billed.
97
-
98
- ### Asking for a part of the page by name
99
-
100
- `extract_code` takes `section` - one of `hero`, `header`, `footer`, `pricing`, `features`, `testimonials`, `faq`, `cta` - so the agent never has to invent a CSS selector for a page it cannot see. Every result also lists the page's other `sections` with ready selectors for follow-up calls. A selector or section that matches nothing falls back to the hero with a `note` saying what the page does have, instead of a dead-end 404.
101
-
102
- ### Prompts (slash commands)
103
-
104
- The server exposes three MCP prompts, which clients surface before the first call - Claude Code as `/mcp__miromiro__clone_section`, `/mcp__miromiro__brand_kit` and `/mcp__miromiro__design_tokens`, VS Code as `/miromiro.<name>`, Cursor in its prompt menu:
105
-
106
- | Prompt | Arguments | What it does |
107
- |---|---|---|
108
- | `clone_section` | `url`, `section?`, `framework?` | Rebuild a section of a live site as paste-ready code, with its real values, and list the other sections |
109
- | `brand_kit` | `url` | The brand colors, fonts, logo and socials, explained (declared vs inferred) |
110
- | `design_tokens` | `url`, `format?` | The complete token system as CSS, Tailwind, DTCG or JSON, with a short summary |
111
-
112
- ### Controlling output size (remote server)
113
-
114
- Remote results are trimmed by default so a big page cannot flood the chat context, and every trimmed response says exactly what was dropped. Two optional arguments loosen it per call:
115
-
116
- - `response_format: 'concise' | 'detailed'` - the one-word knob: `concise` keeps lists to 10 entries for a chat answer, `detailed` returns everything the tool has
117
- - `limit` (up to 200) - raise the item cap: "give me 80 SVGs, not 20"
118
- - `full_output: true` - complete long strings, like entire inline SVG markup
119
-
120
- Generated code is never trimmed. Results stop at roughly 20k tokens (25k for `extract_code`) so they fit the tool-result cap of Claude Code, Claude Desktop and Cursor, and the `truncation_note` says how many tokens were cut and which argument brings them back.
121
-
122
- The REST API and this local npm server always return everything untrimmed, so `limit` and
123
- `full_output` apply to the remote server only. Every tool on both servers accepts
124
- `render: true` (forces a real browser, +5 credits, on every plan; usually not needed because the server re-runs JavaScript-only or refused pages in a browser by itself - see Notes), plus two more shared arguments:
125
-
126
- - `fresh: true` - skip the 24-hour cache and re-extract the live page (charged normally); use when the site just changed
127
- - `screenshot: true` (requires `render: true`) - the result gains a `screenshot` field: a public URL of a 1440x900 capture of the page, live for 7 days, at no extra credits - show it to the user to verify an extraction. Pass `'full'` instead of `true` for the entire page height.
128
-
129
- ## Examples
130
-
131
- > "Rebuild stripe.com's pricing section in React"
132
-
133
- The agent calls `extract_code` with the URL, gets the section's real markup, colors, fonts, and spacing, and adapts actual values instead of guessing.
134
-
135
- Extraction returns a page's light styles by default, so a site you know as dark comes back light unless you ask otherwise:
136
-
137
- > "Rebuild linear.app's pricing card in its dark theme"
138
-
139
- The agent passes `theme: "dark"` and the page's `prefers-color-scheme: dark` rules and custom properties become the component itself. Every result also carries a `theme` field saying which one you actually got. Sites that switch themes with a JavaScript class toggle cannot be selected this way - you get the page default plus a hint saying so.
140
-
141
- > "Build a dashboard in the style of linear.app"
142
-
143
- The agent calls `extract_brand` and `extract_design_tokens`, gets Linear's real colors, fonts, and spacing scale, and builds to match.
144
-
145
- > "What fonts does apple.com use?"
146
-
147
- The agent calls `extract_fonts` and returns every family with its font file URLs and weights.
148
-
149
- ## Notes
150
-
151
- - `extract_code` always loads the page in a real browser and reads what it actually shows (on every plan, no extra credits), so it never needs `render: true`. The other tools read static HTML and resolve the full CSS cascade first. When that comes back as a JavaScript app shell, with styles injected by scripts, or refused by the site (401, 403 or 406, or timed out - publishers commonly turn away datacenter IPs even for a public page), the server re-runs the call in a real browser by itself at no extra cost, on every plan, and the result carries `usage.autoRender` (a sentence to read to the user).
152
- - Pass `render: true` to force the browser (+5 credits, any plan): for images, video or Lottie that only load on scroll, or when a result is still thin after the automatic pass. A 403 that says the browser was refused too means the site cannot be extracted. On extract_design_tokens, `render: true` only permits the browser: the plain read still runs first, and the 5 credits are charged only if the browser was actually needed.
153
- - Every result carries `usage` with the credits left this month. If the account holds a credit pack (one-off credits that never expire, bought at https://miromiro.app/api/pricing), `usage.packCredits` is the pack balance left; packs are drawn after the monthly credits, so a free account with a pack keeps working past its 300 credits.
154
- - Respect the sites you extract from: check their terms before reusing assets commercially.
155
-
156
- ## Links
157
-
158
- [API docs](https://miromiro.app/api/docs) · [Playground (no account)](https://miromiro.app/api/demo) · [Pricing](https://miromiro.app/api/pricing) · [Changelog](https://miromiro.app/api/changelog) · [Connect page](https://miromiro.app/api/mcp)
159
-
160
- MIT © [MiroMiro](https://miromiro.app)
1
+ # miromiro-mcp
2
+
3
+ [![npm version](https://img.shields.io/npm/v/miromiro-mcp)](https://www.npmjs.com/package/miromiro-mcp)
4
+ [![MIT license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)
5
+
6
+ MCP server for the [MiroMiro](https://miromiro.app/api) design-extraction API. Give your AI agent the real design of any live website - brand colors, fonts, design tokens, SVGs, images, Lottie animations, and paste-ready component code - so it builds from actual values instead of guessing from a screenshot.
7
+
8
+ Works with Claude (web, desktop, Claude Code), ChatGPT, Cursor, Windsurf, Codex, and any MCP client.
9
+
10
+ ## Claude Code plugin
11
+
12
+ Install as a plugin to get the tools plus five skills that teach Claude when to reach for
13
+ each one:
14
+
15
+ - `elementor-section` - any site's section as an Elementor template to import into WordPress
16
+ - `shopify-section` - any site's section as a Shopify theme section (`.liquid`)
17
+ - `clone-section` - a section as Tailwind, HTML+CSS, React or Vue
18
+ - `match-brand` - a site's colors, fonts and design tokens to build in its style
19
+ - `extract-assets` - images, SVG icons, videos, audio and Lottie files
20
+
21
+ ```bash
22
+ claude plugin marketplace add SoraiaBarroso/miromiro-mcp
23
+ claude plugin install miromiro@miromiro
24
+ ```
25
+
26
+ The plugin uses the remote server, so there is nothing to install and no key to paste - on
27
+ first use it opens a one-click MiroMiro sign-in that links a free account (300 credits/month,
28
+ no card).
29
+
30
+ ## Skills for OpenClaw and other agents
31
+
32
+ The same skills live in [`skills/`](skills). Each one uses the MiroMiro MCP tools when they
33
+ are connected and otherwise calls the REST API with `MIROMIRO_API_KEY` (free key, 300
34
+ credits a month: https://miromiro.app/api/onboarding).
35
+
36
+ ## Quick start: remote server (nothing to install)
37
+
38
+ A hosted server lives at:
39
+
40
+ ```
41
+ https://miromiro.app/mcp
42
+ ```
43
+
44
+ Paste that URL into any client that accepts a remote MCP server. On first use it opens a one-click MiroMiro sign-in that links a free account (300 credits/month, no card).
45
+
46
+ - **Claude (web or desktop):** Settings → Connectors → Add custom connector → paste the URL. Or use the [one-click install](https://miromiro.app/api/mcp).
47
+ - **ChatGPT:** Settings → Security and login → enable Developer mode, then Settings → Plugins → New Plugin with the URL (authentication: OAuth).
48
+ - **Cursor (remote):** add `{ "mcpServers": { "miromiro": { "url": "https://miromiro.app/mcp" } } }` to `~/.cursor/mcp.json`.
49
+ - **Claude Code:** `claude mcp add --transport http miromiro https://miromiro.app/mcp`, then `/mcp` in a session to sign in.
50
+ - **Codex:** add `[mcp_servers.miromiro]` with `url = "https://miromiro.app/mcp"` to `~/.codex/config.toml`, then run `codex mcp login miromiro`.
51
+ - **Grok Bot:** ask the bot "Add a custom MCP server called miromiro at https://miromiro.app/mcp", then press Authorize.
52
+ - **Muse:** Settings → Connectors → Add custom connector → paste the URL.
53
+ - Step-by-step pages for each agent: https://miromiro.app/api/agents/chatgpt (swap the last part for `claude`, `claude-code`, `codex`, `cursor`, `grok-bot`, `muse` or `openai-dots`).
54
+ - **Raw API key instead of OAuth:** append `?access_key=mm_live_...` to the URL, or send it as an `Authorization: Bearer` header.
55
+
56
+ ## Local server (npm)
57
+
58
+ Prefer a local stdio process with the key in an env var? Get a free key at [miromiro.app/api/dashboard](https://miromiro.app/api/dashboard), then:
59
+
60
+ **Cursor** (`~/.cursor/mcp.json`) / **Windsurf** (Settings → MCP):
61
+
62
+ ```json
63
+ {
64
+ "mcpServers": {
65
+ "miromiro": {
66
+ "command": "npx",
67
+ "args": ["-y", "miromiro-mcp"],
68
+ "env": { "MIROMIRO_API_KEY": "mm_live_your_key" }
69
+ }
70
+ }
71
+ }
72
+ ```
73
+
74
+ **Claude Code** (run in your terminal, not inside a `claude` session):
75
+
76
+ ```bash
77
+ claude mcp add miromiro -s user \
78
+ --env MIROMIRO_API_KEY=mm_live_your_key \
79
+ -- npx -y miromiro-mcp
80
+ ```
81
+
82
+ ## Tools
83
+
84
+ | Tool | What it returns | Credits |
85
+ |---|---|---|
86
+ | `extract_code` | A section of a live page as a paste-ready component (Tailwind, HTML+CSS, JSX or Vue) or an importable Elementor template / Shopify section, plus the tokens it uses - start here to rebuild real UI | 25 |
87
+ | `extract_brand` | Named color roles (primary/accent/background/text), palette, fonts split by role, logo, social profiles, a 0-1 confidence score, and `signals` explaining where the colors came from (declared tokens vs inferred) | 15 |
88
+ | `extract_design_tokens` | Full token system with usage counts; `format: css` or `tailwind` for paste-ready output, `dtcg` for a W3C Design Tokens file (Style Dictionary / Figma variables) | 10 |
89
+ | `extract_fonts` | Every font file and family the site loads, with weights, formats, and file URLs | 5 |
90
+ | `extract_videos` | Video files, `og:video`, and player embeds (YouTube, Vimeo, Wistia, Loom), tagged by source; a direct video-file URL is returned as the single result, and a YouTube/Vimeo/TikTok/Dailymotion/Loom video URL returns its player embed without a fetch | 1 |
91
+ | `extract_audio` | Audio files, `og:audio`, and podcast enclosures, tagged by source; a direct audio-file URL is returned as the single result | 1 |
92
+ | `extract_lottie` | Lottie animation JSON files declared in the page | 3 |
93
+ | `extract_svgs` | Inline SVG code (sanitized, paste-ready) plus external SVG file URLs | 1 |
94
+ | `extract_assets` | Every image URL on a page, tagged by source, with alt text; a direct image-file URL is returned as the single result | 1 |
95
+
96
+ All tools are read-only and retry-safe. Identical calls within 24 hours are served from cache for free, and failed calls are never billed.
97
+
98
+ ### Asking for a part of the page by name
99
+
100
+ `extract_code` takes `section` - one of `hero`, `header`, `footer`, `pricing`, `features`, `testimonials`, `faq`, `cta` - so the agent never has to invent a CSS selector for a page it cannot see. Every result also lists the page's other `sections` with ready selectors for follow-up calls. A selector or section that matches nothing falls back to the hero with a `note` saying what the page does have, instead of a dead-end 404.
101
+
102
+ Every `extract_code` result carries `previewUrl`: a page showing exactly the returned code rendered, so you can compare it with the live site even if your agent adapts the code, and `pagePreviewUrl`: every section of that page extracted so far, assembled in order. Both have a Download HTML button. Inline SVGs over 2 KB (logo walls, illustrations) come back as permanent hosted `.svg` files behind an `<img>` that keeps their classes, size and color, which keeps the code small enough for the agent to use as-is (astro.build's hero: 73 KB to 14 KB). Pass `inline_svg: true` for fully self-contained code.
103
+
104
+ ### Prompts (slash commands)
105
+
106
+ The server exposes three MCP prompts, which clients surface before the first call - Claude Code as `/mcp__miromiro__clone_section`, `/mcp__miromiro__brand_kit` and `/mcp__miromiro__design_tokens`, VS Code as `/miromiro.<name>`, Cursor in its prompt menu:
107
+
108
+ | Prompt | Arguments | What it does |
109
+ |---|---|---|
110
+ | `clone_section` | `url`, `section?`, `framework?` | Rebuild a section of a live site as paste-ready code, with its real values, and list the other sections |
111
+ | `brand_kit` | `url` | The brand colors, fonts, logo and socials, explained (declared vs inferred) |
112
+ | `design_tokens` | `url`, `format?` | The complete token system as CSS, Tailwind, DTCG or JSON, with a short summary |
113
+
114
+ ### Controlling output size (remote server)
115
+
116
+ Remote results are trimmed by default so a big page cannot flood the chat context, and every trimmed response says exactly what was dropped. Two optional arguments loosen it per call:
117
+
118
+ - `response_format: 'concise' | 'detailed'` - the one-word knob: `concise` keeps lists to 10 entries for a chat answer, `detailed` returns everything the tool has
119
+ - `limit` (up to 200) - raise the item cap: "give me 80 SVGs, not 20"
120
+ - `full_output: true` - complete long strings, like entire inline SVG markup
121
+
122
+ Generated code is never trimmed. Results stop at roughly 20k tokens (25k for `extract_code`) so they fit the tool-result cap of Claude Code, Claude Desktop and Cursor, and the `truncation_note` says how many tokens were cut and which argument brings them back.
123
+
124
+ The REST API and this local npm server always return everything untrimmed, so `limit` and
125
+ `full_output` apply to the remote server only. Every tool on both servers accepts
126
+ `render: true` (forces a real browser, +5 credits, on every plan; usually not needed because the server re-runs JavaScript-only or refused pages in a browser by itself - see Notes), plus two more shared arguments:
127
+
128
+ - `fresh: true` - skip the 24-hour cache and re-extract the live page (charged normally); use when the site just changed
129
+ - `screenshot: true` (requires `render: true`) - the result gains a `screenshot` field: a public URL of a 1440x900 capture of the page, live for 7 days, at no extra credits - show it to the user to verify an extraction. Pass `'full'` instead of `true` for the entire page height.
130
+
131
+ ## Examples
132
+
133
+ > "Rebuild stripe.com's pricing section in React"
134
+
135
+ The agent calls `extract_code` with the URL, gets the section's real markup, colors, fonts, and spacing, and adapts actual values instead of guessing.
136
+
137
+ Extraction returns a page's light styles by default, so a site you know as dark comes back light unless you ask otherwise:
138
+
139
+ > "Rebuild linear.app's pricing card in its dark theme"
140
+
141
+ The agent passes `theme: "dark"` and the page's `prefers-color-scheme: dark` rules and custom properties become the component itself. Every result also carries a `theme` field saying which one you actually got. Sites that switch themes with a JavaScript class toggle cannot be selected this way - you get the page default plus a hint saying so.
142
+
143
+ > "Build a dashboard in the style of linear.app"
144
+
145
+ The agent calls `extract_brand` and `extract_design_tokens`, gets Linear's real colors, fonts, and spacing scale, and builds to match.
146
+
147
+ > "What fonts does apple.com use?"
148
+
149
+ The agent calls `extract_fonts` and returns every family with its font file URLs and weights.
150
+
151
+ ## Notes
152
+
153
+ - `extract_code` always loads the page in a real browser and reads what it actually shows (on every plan, no extra credits), so it never needs `render: true`. The other tools read static HTML and resolve the full CSS cascade first. When that comes back as a JavaScript app shell, with styles injected by scripts, or refused by the site (401, 403 or 406, or timed out - publishers commonly turn away datacenter IPs even for a public page), the server re-runs the call in a real browser by itself at no extra cost, on every plan, and the result carries `usage.autoRender` (a sentence to read to the user).
154
+ - Pass `render: true` to force the browser (+5 credits, any plan): for images, video or Lottie that only load on scroll, or when a result is still thin after the automatic pass. A 403 that says the browser was refused too means the site cannot be extracted. On extract_design_tokens, `render: true` only permits the browser: the plain read still runs first, and the 5 credits are charged only if the browser was actually needed.
155
+ - Every result carries `usage` with the credits left this month. If the account holds a credit pack (one-off credits that never expire, bought at https://miromiro.app/api/pricing), `usage.packCredits` is the pack balance left; packs are drawn after the monthly credits, so a free account with a pack keeps working past its 300 credits.
156
+ - Respect the sites you extract from: check their terms before reusing assets commercially.
157
+
158
+ ## Links
159
+
160
+ [API docs](https://miromiro.app/api/docs) · [Playground (no account)](https://miromiro.app/api/demo) · [Pricing](https://miromiro.app/api/pricing) · [Changelog](https://miromiro.app/api/changelog) · [Connect page](https://miromiro.app/api/mcp)
161
+
162
+ MIT © [MiroMiro](https://miromiro.app)
package/package.json CHANGED
@@ -1,42 +1,42 @@
1
- {
2
- "name": "miromiro-mcp",
3
- "version": "0.9.0",
4
- "description": "MCP server for the MiroMiro design-extraction API — give your coding agent the real code, design tokens, assets, SVGs, fonts, and Lottie of any website.",
5
- "mcpName": "app.miromiro/miromiro",
6
- "type": "module",
7
- "author": "MiroMiro (https://miromiro.app)",
8
- "homepage": "https://miromiro.app/api",
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/SoraiaBarroso/miromiro-mcp.git"
12
- },
13
- "bugs": {
14
- "url": "https://github.com/SoraiaBarroso/miromiro-mcp/issues"
15
- },
16
- "bin": {
17
- "miromiro-mcp": "src/index.mjs"
18
- },
19
- "files": [
20
- "src"
21
- ],
22
- "keywords": [
23
- "mcp",
24
- "model-context-protocol",
25
- "mcp-server",
26
- "design-tokens",
27
- "design-to-code",
28
- "brand-colors",
29
- "web-scraping",
30
- "miromiro",
31
- "cursor",
32
- "claude-code",
33
- "windsurf"
34
- ],
35
- "engines": {
36
- "node": ">=18"
37
- },
38
- "dependencies": {
39
- "@modelcontextprotocol/sdk": "^1.0.0"
40
- },
41
- "license": "MIT"
42
- }
1
+ {
2
+ "name": "miromiro-mcp",
3
+ "version": "0.10.0",
4
+ "description": "MCP server for the MiroMiro design-extraction API — give your coding agent the real code, design tokens, assets, SVGs, fonts, and Lottie of any website.",
5
+ "mcpName": "app.miromiro/miromiro",
6
+ "type": "module",
7
+ "author": "MiroMiro (https://miromiro.app)",
8
+ "homepage": "https://miromiro.app/api",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/SoraiaBarroso/miromiro-mcp.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/SoraiaBarroso/miromiro-mcp/issues"
15
+ },
16
+ "bin": {
17
+ "miromiro-mcp": "src/index.mjs"
18
+ },
19
+ "files": [
20
+ "src"
21
+ ],
22
+ "keywords": [
23
+ "mcp",
24
+ "model-context-protocol",
25
+ "mcp-server",
26
+ "design-tokens",
27
+ "design-to-code",
28
+ "brand-colors",
29
+ "web-scraping",
30
+ "miromiro",
31
+ "cursor",
32
+ "claude-code",
33
+ "windsurf"
34
+ ],
35
+ "engines": {
36
+ "node": ">=18"
37
+ },
38
+ "dependencies": {
39
+ "@modelcontextprotocol/sdk": "^1.0.0"
40
+ },
41
+ "license": "MIT"
42
+ }