@freevectoricons/mcp 0.1.0 → 0.1.2
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.
- package/LICENSE +21 -0
- package/README.md +111 -0
- package/dist/mcp-server.mjs +1 -1
- package/package.json +25 -7
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 FreeVectorIcons
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# fvi-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for [FreeVectorIcons](https://freevectoricons.com) design collections.
|
|
4
|
+
|
|
5
|
+
Connects Cursor, Claude Desktop, and other MCP clients to one FVI collection — icons, uploaded SVGs, strategy briefs, DESIGN.md, and related project files. Scoped to a single collection token.
|
|
6
|
+
|
|
7
|
+
npm: [`@freevectoricons/mcp`](https://www.npmjs.com/package/@freevectoricons/mcp)
|
|
8
|
+
|
|
9
|
+
## Why this exists
|
|
10
|
+
|
|
11
|
+
The usual agent workflow for icons is: prompt → inline SVG → paste into code. That breaks down quickly — inconsistent paths, missing `viewBox`, made-up attribution, different output on every retry.
|
|
12
|
+
|
|
13
|
+
FVI stores assets in a collection with stable ids, tags, and license fields. This server lets agents **search and fetch what's already approved** instead of generating new SVG from scratch.
|
|
14
|
+
|
|
15
|
+
It's a stdio MCP wrapper over the FVI HTTP API. Responses are metadata-first JSON; file bytes are fetched only when a tool asks for content or a download URL.
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
You need a FreeVectorIcons account and an MCP token for a design collection.
|
|
20
|
+
|
|
21
|
+
1. Open a collection at [freevectoricons.com](https://freevectoricons.com)
|
|
22
|
+
2. **Integrations** → **Setup MCP**
|
|
23
|
+
3. Create a token; copy the collection ID and secret
|
|
24
|
+
|
|
25
|
+
Add to `.cursor/mcp.json` (or your client's MCP config):
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"mcpServers": {
|
|
30
|
+
"freevectoricons": {
|
|
31
|
+
"command": "npx",
|
|
32
|
+
"args": ["-y", "@freevectoricons/mcp"],
|
|
33
|
+
"env": {
|
|
34
|
+
"FVI_API_URL": "https://freevectoricons.com/api",
|
|
35
|
+
"FVI_COLLECTION_ID": "<collection-id>",
|
|
36
|
+
"FVI_TOKEN": "<collection-token>"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Use `npx`, not `pnpm run`. Package managers print lifecycle text to stdout, which breaks MCP stdio transport.
|
|
44
|
+
|
|
45
|
+
See [`mcp.json.example`](./mcp.json.example) for a copy-paste template.
|
|
46
|
+
|
|
47
|
+
## Environment variables
|
|
48
|
+
|
|
49
|
+
| Variable | Required | Default | Description |
|
|
50
|
+
|----------|----------|---------|-------------|
|
|
51
|
+
| `FVI_TOKEN` | yes | — | Collection-scoped MCP token |
|
|
52
|
+
| `FVI_COLLECTION_ID` | yes | — | Collection id |
|
|
53
|
+
| `FVI_API_URL` | no | `http://localhost:5001/api` | API base URL (include `/api`) |
|
|
54
|
+
|
|
55
|
+
For production: `FVI_API_URL=https://freevectoricons.com/api`
|
|
56
|
+
|
|
57
|
+
## Tools
|
|
58
|
+
|
|
59
|
+
### Read
|
|
60
|
+
|
|
61
|
+
| Tool | What it does |
|
|
62
|
+
|------|----------------|
|
|
63
|
+
| `get_design_collection_context` | Collection metadata, strategy brief, asset summary |
|
|
64
|
+
| `list_design_collection_assets` | All assets (metadata only) |
|
|
65
|
+
| `search_design_collection_assets` | Search by name, tag, category, or style |
|
|
66
|
+
| `get_design_asset` | One asset by id |
|
|
67
|
+
| `get_design_asset_content` | Inline UTF-8 for catalog SVGs, uploaded SVGs, Markdown |
|
|
68
|
+
| `get_design_asset_download_url` | Short-lived URL for PNG, PDF, and other binaries |
|
|
69
|
+
|
|
70
|
+
### Write
|
|
71
|
+
|
|
72
|
+
| Tool | What it does |
|
|
73
|
+
|------|----------------|
|
|
74
|
+
| `create_design_asset_upload` | Create asset record + signed upload target |
|
|
75
|
+
| `park_design_asset` | Upload inline text or base64 into the collection |
|
|
76
|
+
| `create_design_asset_version` | Upload a new version of an existing asset |
|
|
77
|
+
|
|
78
|
+
Binary files are not embedded in MCP responses. Agents should use metadata + download URLs for images and PDFs.
|
|
79
|
+
|
|
80
|
+
Optional write metadata: `drlProjectId`, `drlAssetType`, `documentType`, `tags`.
|
|
81
|
+
|
|
82
|
+
## Development
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npm install
|
|
86
|
+
npm run build
|
|
87
|
+
node dist/mcp-server.mjs
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
To run from a local checkout in Cursor:
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
"args": ["-y", "file:/absolute/path/to/fvi-mcp"]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Build first (`npm run build`). The bundled entry is `dist/mcp-server.mjs`.
|
|
97
|
+
|
|
98
|
+
## What this is not
|
|
99
|
+
|
|
100
|
+
- **Not a global icon search API.** One token, one collection.
|
|
101
|
+
- **Not a guarantee of pixel-perfect icons.** Catalog SVGs are AI-generated and refined on a schedule; check assets before production use.
|
|
102
|
+
- **Not a replacement for your design review.** It moves files and metadata; it doesn't judge brand fit.
|
|
103
|
+
|
|
104
|
+
## Related
|
|
105
|
+
|
|
106
|
+
- [freevectoricons.com/mcp](https://freevectoricons.com/mcp) — product docs
|
|
107
|
+
- [ai-icon-generator](https://github.com/FreeVectorIcons/ai-icon-generator) — open pipeline that produces catalog icons
|
|
108
|
+
|
|
109
|
+
## License
|
|
110
|
+
|
|
111
|
+
MIT — see [LICENSE](./LICENSE).
|
package/dist/mcp-server.mjs
CHANGED
|
@@ -21116,7 +21116,7 @@ function withDrlMetadata(input) {
|
|
|
21116
21116
|
}
|
|
21117
21117
|
var server = new McpServer({
|
|
21118
21118
|
name: "freevectoricons",
|
|
21119
|
-
version: "0.1.
|
|
21119
|
+
version: "0.1.2"
|
|
21120
21120
|
});
|
|
21121
21121
|
server.registerTool(
|
|
21122
21122
|
"get_design_collection_context",
|
package/package.json
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@freevectoricons/mcp",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "MCP server for FreeVectorIcons design collections",
|
|
5
|
+
"author": "Hemanta Sapkota <hemanta@freevectoricons.com>",
|
|
5
6
|
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/FreeVectorIcons/fvi-mcp.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://freevectoricons.com/mcp",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/FreeVectorIcons/fvi-mcp/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"mcp",
|
|
17
|
+
"model-context-protocol",
|
|
18
|
+
"freevectoricons",
|
|
19
|
+
"svg",
|
|
20
|
+
"icons",
|
|
21
|
+
"cursor"
|
|
22
|
+
],
|
|
6
23
|
"type": "module",
|
|
7
24
|
"bin": {
|
|
8
25
|
"fvi-mcp": "./dist/mcp-server.mjs"
|
|
@@ -10,6 +27,11 @@
|
|
|
10
27
|
"files": [
|
|
11
28
|
"dist"
|
|
12
29
|
],
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "node ./build.mjs",
|
|
32
|
+
"prepublishOnly": "pnpm run build",
|
|
33
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
34
|
+
},
|
|
13
35
|
"dependencies": {
|
|
14
36
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
15
37
|
"zod": "^3.25.76"
|
|
@@ -24,9 +46,5 @@
|
|
|
24
46
|
},
|
|
25
47
|
"publishConfig": {
|
|
26
48
|
"access": "public"
|
|
27
|
-
},
|
|
28
|
-
"scripts": {
|
|
29
|
-
"build": "node ./build.mjs",
|
|
30
|
-
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
31
49
|
}
|
|
32
|
-
}
|
|
50
|
+
}
|