@shadsapp/mcp 0.1.4 → 0.2.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.
- package/README.md +75 -0
- package/dist/api-client.d.ts +46 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +96 -0
- package/dist/api-client.js.map +1 -0
- package/dist/index.js +79 -5
- package/dist/index.js.map +1 -1
- package/dist/premium-tools.d.ts +43 -0
- package/dist/premium-tools.d.ts.map +1 -0
- package/dist/premium-tools.js +161 -0
- package/dist/premium-tools.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@ The server uses the MCP **stdio transport**. It runs as a child process started
|
|
|
9
9
|
- Node.js 18 or newer
|
|
10
10
|
- Internet access for registry tools (`resolve_share`, `get_theme_package`, `get_skill`, and `install_plan`)
|
|
11
11
|
- A project using the shadcn CLI for generated install commands
|
|
12
|
+
- A Pro shads.app API key for the Pro tools (optional)
|
|
12
13
|
|
|
13
14
|
`list_themes`, `get_theme`, `validate_theme`, `theme_schema`, and `list_starters` work from the installed package without a network request.
|
|
14
15
|
|
|
@@ -93,6 +94,8 @@ If the client supports an explicit working directory, set it to the project wher
|
|
|
93
94
|
|
|
94
95
|
## Available tools
|
|
95
96
|
|
|
97
|
+
### Public tools
|
|
98
|
+
|
|
96
99
|
| Tool | Input | Purpose |
|
|
97
100
|
| -------------------- | ------------------------------------------- | ---------------------------------------------------- |
|
|
98
101
|
| `list_themes` | `{}` | List bundled starter theme metadata. |
|
|
@@ -106,6 +109,54 @@ If the client supports an explicit working directory, set it to the project wher
|
|
|
106
109
|
| `get_skill` | `{ "id": "workspace" }` | Return the theme-specific skill markdown. |
|
|
107
110
|
| `install_plan` | `{ "id": "workspace", "mode": "existing" }` | Return validated install commands and notes. |
|
|
108
111
|
|
|
112
|
+
### Pro tools (require `SHADS_API_KEY`)
|
|
113
|
+
|
|
114
|
+
Add a `SHADS_API_KEY` env var and the server unlocks account tools that talk to
|
|
115
|
+
shads.app on your behalf. All premium logic and data stays on the shads.app
|
|
116
|
+
server — the key only authorizes requests, nothing is baked into this package.
|
|
117
|
+
|
|
118
|
+
| Tool | Input | Purpose |
|
|
119
|
+
| -------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
|
|
120
|
+
| `list_my_themes` | `{}` | List your saved cloud themes. |
|
|
121
|
+
| `get_my_theme` | `{ "id": "<theme id>" }` | Return one theme as `theme.json` + a single stylesheet. |
|
|
122
|
+
| `save_theme` | `{ "name": "...", "document": "..." }` | Save a theme document to your account. |
|
|
123
|
+
| `update_theme` | `{ "id": "...", "name?": "...", "document?": "..." }` | Rename and/or update a saved theme. |
|
|
124
|
+
| `generate_theme` | `{ "description": "..." }` | Hosted AI generation (uses your monthly quota). |
|
|
125
|
+
| `check_subscription` | `{}` | Show plan, MCP access, AI quota, and theme count. |
|
|
126
|
+
|
|
127
|
+
`get_my_theme` returns `themeCss` as one self-contained stylesheet — the tokens,
|
|
128
|
+
the `[data-slot]` adapters, and the `@theme inline` wiring — so it works as a
|
|
129
|
+
single `<link>` without the ZIP's `index.css` merge step.
|
|
130
|
+
|
|
131
|
+
When no key is set, the server advertises a single `authenticate` tool that
|
|
132
|
+
returns the setup instructions above instead of the premium tools.
|
|
133
|
+
|
|
134
|
+
#### Connecting a Pro key
|
|
135
|
+
|
|
136
|
+
1. Sign in at [shads.app](https://shads.app) on a Pro plan.
|
|
137
|
+
2. Open **Account settings → API keys** and create a key.
|
|
138
|
+
3. Copy it immediately — it is shown once and stored only as a hash.
|
|
139
|
+
4. Add it to the **server** env in your MCP client config:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"mcpServers": {
|
|
144
|
+
"shads": {
|
|
145
|
+
"command": "npx",
|
|
146
|
+
"args": ["-y", "@shadsapp/mcp"],
|
|
147
|
+
"env": { "SHADS_API_KEY": "shads_live_..." }
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Restart the client; the Pro tools appear in the tool list. Keys inherit the plan:
|
|
154
|
+
if the subscription lapses, the tools return a 402 until it is restored (the key
|
|
155
|
+
itself stays valid). Revoke keys from the same settings page at any time.
|
|
156
|
+
|
|
157
|
+
Set `SHADS_API_BASE` to point at a non-production host (for example a preview
|
|
158
|
+
deployment) instead of `https://shads.app`.
|
|
159
|
+
|
|
109
160
|
Starter names such as `workspace` are converted to registry item ids such as `workspace-theme`. You may also provide a theme item id, a share id, or a registry URL such as `https://shads.app/r/workspace-theme.json`.
|
|
110
161
|
|
|
111
162
|
Registry item ids accept only letters, numbers, hyphens, and underscores. This keeps generated shell commands safe to review and execute.
|
|
@@ -165,6 +216,30 @@ The remote registry tools require network access to `https://shads.app`. Check t
|
|
|
165
216
|
|
|
166
217
|
The server only returns commands. Run them from the target shadcn project, or configure the MCP host's working directory when supported.
|
|
167
218
|
|
|
219
|
+
### Pro tools are missing from the tool list
|
|
220
|
+
|
|
221
|
+
`SHADS_API_KEY` is read from the **server** process env. Put it in the `env` block
|
|
222
|
+
of the server entry (see above) — not in a `.env` file inside the project you are
|
|
223
|
+
editing. Only keys starting with `shads_live_` are accepted; anything else is
|
|
224
|
+
ignored, and the server falls back to advertising `authenticate`.
|
|
225
|
+
|
|
226
|
+
### Pro tool returns 401
|
|
227
|
+
|
|
228
|
+
No key, a revoked key, or a malformed `Authorization` header. Public tools keep
|
|
229
|
+
working, which distinguishes this from a network problem. Create a new key in
|
|
230
|
+
Account settings → API keys.
|
|
231
|
+
|
|
232
|
+
### Pro tool returns 402
|
|
233
|
+
|
|
234
|
+
The key is valid but the account's plan no longer includes MCP access. Restore
|
|
235
|
+
the subscription and the same key starts working again — keys are not deleted on
|
|
236
|
+
downgrade.
|
|
237
|
+
|
|
238
|
+
### Pro tool returns 429
|
|
239
|
+
|
|
240
|
+
Rate limited. Hosted AI (`generate_theme`) shares the account's monthly quota and
|
|
241
|
+
an hourly request limit; key creation is capped at 5 per user per 24 hours.
|
|
242
|
+
|
|
168
243
|
## Development
|
|
169
244
|
|
|
170
245
|
From the repository root:
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const API_BASE: string;
|
|
2
|
+
export declare function readApiKey(): string | null;
|
|
3
|
+
export declare class ShadsApiError extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
constructor(status: number, message: string);
|
|
6
|
+
}
|
|
7
|
+
export type CloudThemeSummary = {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
};
|
|
12
|
+
export type CloudThemeDetail = {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
config: Record<string, unknown>;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
updatedAt: string;
|
|
18
|
+
/** Full theme.json document (shads-theme/v1). */
|
|
19
|
+
themeDocumentJson: string;
|
|
20
|
+
/** Single stylesheet: tokens, adapters, and the @theme wiring. */
|
|
21
|
+
themeCss: string;
|
|
22
|
+
};
|
|
23
|
+
export type GenerateThemeResult = {
|
|
24
|
+
documents: Array<Record<string, unknown>>;
|
|
25
|
+
usage: number;
|
|
26
|
+
};
|
|
27
|
+
export type SubscriptionStatus = {
|
|
28
|
+
plan: string;
|
|
29
|
+
mcpAccess: boolean;
|
|
30
|
+
aiGenerations: {
|
|
31
|
+
used: number;
|
|
32
|
+
limit: number | null;
|
|
33
|
+
};
|
|
34
|
+
savedThemes: number;
|
|
35
|
+
entitlements: Record<string, unknown>;
|
|
36
|
+
};
|
|
37
|
+
export declare function listMyThemes(): Promise<CloudThemeSummary[]>;
|
|
38
|
+
export declare function getMyTheme(id: string): Promise<CloudThemeDetail>;
|
|
39
|
+
export declare function saveTheme(name: string, config: Record<string, unknown>): Promise<CloudThemeSummary>;
|
|
40
|
+
export declare function updateTheme(id: string, patch: {
|
|
41
|
+
name?: string;
|
|
42
|
+
config?: Record<string, unknown>;
|
|
43
|
+
}): Promise<CloudThemeDetail>;
|
|
44
|
+
export declare function generateTheme(description: string): Promise<GenerateThemeResult>;
|
|
45
|
+
export declare function checkSubscription(): Promise<SubscriptionStatus>;
|
|
46
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,EAAE,MAEF,CAAA;AAKrB,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAG1C;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAyED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAA;IACzB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC,CAAA;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CASjE;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAItE;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAO5B;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACzD,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAErE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { REGISTRY_HOMEPAGE } from "./install-prompt.js";
|
|
2
|
+
export const API_BASE = (process.env.SHADS_API_BASE ?? REGISTRY_HOMEPAGE).replace(/\/+$/, "");
|
|
3
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
4
|
+
const GENERATE_TIMEOUT_MS = 90_000;
|
|
5
|
+
export function readApiKey() {
|
|
6
|
+
const key = process.env.SHADS_API_KEY?.trim();
|
|
7
|
+
return key && key.startsWith("shads_live_") ? key : null;
|
|
8
|
+
}
|
|
9
|
+
export class ShadsApiError extends Error {
|
|
10
|
+
status;
|
|
11
|
+
constructor(status, message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "ShadsApiError";
|
|
14
|
+
this.status = status;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function friendlyError(status, payloadError) {
|
|
18
|
+
if (status === 401) {
|
|
19
|
+
return (payloadError ??
|
|
20
|
+
"Your shads.app API key is invalid or revoked. Create a new one in Account settings > API keys (shads.app).");
|
|
21
|
+
}
|
|
22
|
+
if (status === 402) {
|
|
23
|
+
return (payloadError ??
|
|
24
|
+
"This feature requires a Pro plan. Upgrade: https://shads.app/pricing");
|
|
25
|
+
}
|
|
26
|
+
if (status === 429) {
|
|
27
|
+
return (payloadError ??
|
|
28
|
+
"Rate limited by shads.app (too many requests). Wait a moment and retry.");
|
|
29
|
+
}
|
|
30
|
+
return payloadError ?? `shads.app request failed (${status})`;
|
|
31
|
+
}
|
|
32
|
+
async function request(path, init = {}) {
|
|
33
|
+
const apiKey = readApiKey();
|
|
34
|
+
if (!apiKey) {
|
|
35
|
+
throw new ShadsApiError(401, "No shads.app API key configured. Set SHADS_API_KEY in your MCP server env (Pro feature: https://shads.app/pricing).");
|
|
36
|
+
}
|
|
37
|
+
let response;
|
|
38
|
+
try {
|
|
39
|
+
response = await fetch(`${API_BASE}${path}`, {
|
|
40
|
+
method: init.method ?? "GET",
|
|
41
|
+
headers: {
|
|
42
|
+
Accept: "application/json",
|
|
43
|
+
Authorization: `Bearer ${apiKey}`,
|
|
44
|
+
...(init.body === undefined
|
|
45
|
+
? {}
|
|
46
|
+
: { "Content-Type": "application/json" }),
|
|
47
|
+
},
|
|
48
|
+
body: init.body === undefined ? undefined : JSON.stringify(init.body),
|
|
49
|
+
signal: AbortSignal.timeout(init.timeoutMs ?? REQUEST_TIMEOUT_MS),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (cause) {
|
|
53
|
+
if (cause instanceof Error && cause.name === "TimeoutError") {
|
|
54
|
+
throw new ShadsApiError(504, "shads.app request timed out. Retry.");
|
|
55
|
+
}
|
|
56
|
+
throw new ShadsApiError(0, `Could not reach shads.app at ${API_BASE}. Check your network.`);
|
|
57
|
+
}
|
|
58
|
+
const payload = (await response
|
|
59
|
+
.json()
|
|
60
|
+
.catch(() => null));
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
const payloadError = payload && typeof payload.error === "string" ? payload.error : null;
|
|
63
|
+
throw new ShadsApiError(response.status, friendlyError(response.status, payloadError));
|
|
64
|
+
}
|
|
65
|
+
return payload;
|
|
66
|
+
}
|
|
67
|
+
export async function listMyThemes() {
|
|
68
|
+
const data = await request("/api/themes");
|
|
69
|
+
return data.items.map((item) => ({
|
|
70
|
+
id: item.id,
|
|
71
|
+
name: item.name,
|
|
72
|
+
updatedAt: item.updatedAt,
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
export async function getMyTheme(id) {
|
|
76
|
+
return request(`/api/themes/${encodeURIComponent(id)}?format=bundle`);
|
|
77
|
+
}
|
|
78
|
+
export async function saveTheme(name, config) {
|
|
79
|
+
const created = await request("/api/themes", { method: "POST", body: { name, config } });
|
|
80
|
+
return { id: created.id, name: created.name, updatedAt: created.updatedAt };
|
|
81
|
+
}
|
|
82
|
+
export async function updateTheme(id, patch) {
|
|
83
|
+
const updated = await request(`/api/themes/${encodeURIComponent(id)}`, { method: "PATCH", body: patch });
|
|
84
|
+
return updated;
|
|
85
|
+
}
|
|
86
|
+
export async function generateTheme(description) {
|
|
87
|
+
return request("/api/ai/generate", {
|
|
88
|
+
method: "POST",
|
|
89
|
+
body: { description },
|
|
90
|
+
timeoutMs: GENERATE_TIMEOUT_MS,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
export async function checkSubscription() {
|
|
94
|
+
return request("/api/mcp/status");
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,16 +5,18 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
|
|
|
5
5
|
import { parseThemeDocumentInput, THEME_SCHEMA } from "@shadsapp/schema";
|
|
6
6
|
import { getTheme, listThemes } from "@shadsapp/themes";
|
|
7
7
|
import { buildAgentInstallPrompt, buildInstallPlan, listStarterInstallEntries, REGISTRY_HOMEPAGE, resolveSafeItemId, systemSkillItemId, } from "./install-prompt.js";
|
|
8
|
+
import { checkSubscription, generateTheme, getMyTheme, listMyThemes, saveTheme, updateTheme, } from "./api-client.js";
|
|
9
|
+
import { AUTHENTICATE_TOOL, AUTH_SETUP_MESSAGE, DESCRIPTION_MAX_LENGTH, DESCRIPTION_MIN_LENGTH, PREMIUM_TOOL_DEFINITIONS, hasApiKeyConfigured, parseThemeConfigDocument, premiumCall, textResult, } from "./premium-tools.js";
|
|
8
10
|
const server = new Server({
|
|
9
11
|
name: "shads",
|
|
10
|
-
version: "0.
|
|
12
|
+
version: "0.2.0",
|
|
11
13
|
}, {
|
|
12
14
|
capabilities: {
|
|
13
15
|
tools: {},
|
|
14
16
|
},
|
|
15
17
|
});
|
|
16
|
-
server.setRequestHandler(ListToolsRequestSchema, async () =>
|
|
17
|
-
tools
|
|
18
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
19
|
+
const tools = [
|
|
18
20
|
{
|
|
19
21
|
name: "list_themes",
|
|
20
22
|
description: "List curated public shads starter themes",
|
|
@@ -157,8 +159,15 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
157
159
|
additionalProperties: false,
|
|
158
160
|
},
|
|
159
161
|
},
|
|
160
|
-
]
|
|
161
|
-
|
|
162
|
+
];
|
|
163
|
+
if (hasApiKeyConfigured()) {
|
|
164
|
+
tools.push(...PREMIUM_TOOL_DEFINITIONS);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
tools.push(AUTHENTICATE_TOOL);
|
|
168
|
+
}
|
|
169
|
+
return { tools };
|
|
170
|
+
});
|
|
162
171
|
const REGISTRY_FETCH_TIMEOUT_MS = 10_000;
|
|
163
172
|
async function fetchRegistryItem(itemId) {
|
|
164
173
|
try {
|
|
@@ -404,6 +413,71 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
404
413
|
],
|
|
405
414
|
};
|
|
406
415
|
}
|
|
416
|
+
case "authenticate": {
|
|
417
|
+
// Guidance, not a failure: the agent asked how to connect, and this is
|
|
418
|
+
// the answer. isError is reserved for genuinely broken calls.
|
|
419
|
+
return {
|
|
420
|
+
content: [{ type: "text", text: AUTH_SETUP_MESSAGE }],
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
case "list_my_themes": {
|
|
424
|
+
return premiumCall(() => listMyThemes().then((items) => ({ items })));
|
|
425
|
+
}
|
|
426
|
+
case "get_my_theme": {
|
|
427
|
+
const id = String(request.params.arguments?.id ?? "");
|
|
428
|
+
if (!id) {
|
|
429
|
+
return textResult({ error: "Theme id is required" }, true);
|
|
430
|
+
}
|
|
431
|
+
return premiumCall(() => getMyTheme(id));
|
|
432
|
+
}
|
|
433
|
+
case "save_theme": {
|
|
434
|
+
const name = String(request.params.arguments?.name ?? "").trim();
|
|
435
|
+
const source = String(request.params.arguments?.document ?? "");
|
|
436
|
+
const parsed = parseThemeConfigDocument(source);
|
|
437
|
+
if (!parsed.ok) {
|
|
438
|
+
return textResult({ errors: parsed.errors }, true);
|
|
439
|
+
}
|
|
440
|
+
if (!name) {
|
|
441
|
+
return textResult({ error: "Theme name is required" }, true);
|
|
442
|
+
}
|
|
443
|
+
return premiumCall(() => saveTheme(name, parsed.config));
|
|
444
|
+
}
|
|
445
|
+
case "update_theme": {
|
|
446
|
+
const id = String(request.params.arguments?.id ?? "");
|
|
447
|
+
if (!id) {
|
|
448
|
+
return textResult({ error: "Theme id is required" }, true);
|
|
449
|
+
}
|
|
450
|
+
const nameArg = request.params.arguments?.name;
|
|
451
|
+
const name = typeof nameArg === "string" && nameArg.trim()
|
|
452
|
+
? nameArg.trim()
|
|
453
|
+
: undefined;
|
|
454
|
+
const source = request.params.arguments?.document;
|
|
455
|
+
let config;
|
|
456
|
+
if (typeof source === "string" && source.trim()) {
|
|
457
|
+
const parsed = parseThemeConfigDocument(source);
|
|
458
|
+
if (!parsed.ok) {
|
|
459
|
+
return textResult({ errors: parsed.errors }, true);
|
|
460
|
+
}
|
|
461
|
+
config = parsed.config;
|
|
462
|
+
}
|
|
463
|
+
if (name === undefined && config === undefined) {
|
|
464
|
+
return textResult({ error: "Provide a name and/or document to update" }, true);
|
|
465
|
+
}
|
|
466
|
+
return premiumCall(() => updateTheme(id, { name, config }));
|
|
467
|
+
}
|
|
468
|
+
case "generate_theme": {
|
|
469
|
+
const description = String(request.params.arguments?.description ?? "").trim();
|
|
470
|
+
if (description.length < DESCRIPTION_MIN_LENGTH) {
|
|
471
|
+
return textResult({ error: `description must be at least ${DESCRIPTION_MIN_LENGTH} characters` }, true);
|
|
472
|
+
}
|
|
473
|
+
if (description.length > DESCRIPTION_MAX_LENGTH) {
|
|
474
|
+
return textResult({ error: `description must be ${DESCRIPTION_MAX_LENGTH} characters or fewer` }, true);
|
|
475
|
+
}
|
|
476
|
+
return premiumCall(() => generateTheme(description));
|
|
477
|
+
}
|
|
478
|
+
case "check_subscription": {
|
|
479
|
+
return premiumCall(() => checkSubscription());
|
|
480
|
+
}
|
|
407
481
|
default:
|
|
408
482
|
throw new Error(`Unknown tool: ${request.params.name}`);
|
|
409
483
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const AUTH_SETUP_MESSAGE = "shads.app premium tools need a Pro API key. Create one at https://shads.app (Account settings > API keys), then add it to your MCP client config: env { \"SHADS_API_KEY\": \"shads_live_...\" } for the @shadsapp/mcp server. Docs: https://shads.app/docs/mcp";
|
|
2
|
+
/**
|
|
3
|
+
* Mirrors modules/config/src/ai/limits.ts. This package is published standalone
|
|
4
|
+
* and cannot depend on the private `@modules/*` workspace, so the bounds are
|
|
5
|
+
* repeated here rather than imported.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DESCRIPTION_MIN_LENGTH = 10;
|
|
8
|
+
export declare const DESCRIPTION_MAX_LENGTH = 400;
|
|
9
|
+
export type ToolDefinition = {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
inputSchema: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
export declare const PREMIUM_TOOL_DEFINITIONS: ToolDefinition[];
|
|
15
|
+
export declare const AUTHENTICATE_TOOL: ToolDefinition;
|
|
16
|
+
export declare function hasApiKeyConfigured(): boolean;
|
|
17
|
+
export type ToolResult = {
|
|
18
|
+
content: {
|
|
19
|
+
type: "text";
|
|
20
|
+
text: string;
|
|
21
|
+
}[];
|
|
22
|
+
isError?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare function textResult(data: unknown, isError?: boolean): ToolResult;
|
|
25
|
+
/**
|
|
26
|
+
* Runs a premium API call and normalizes errors into MCP tool results so the
|
|
27
|
+
* agent sees actionable text (invalid key, upgrade prompt, rate limit) rather
|
|
28
|
+
* than a thrown error.
|
|
29
|
+
*/
|
|
30
|
+
export declare function premiumCall(run: () => Promise<unknown>): Promise<ToolResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Accepts either a full theme.json document (with `$schema`/`config`) or a
|
|
33
|
+
* bare config object, validates via @shadsapp/schema, and returns the config
|
|
34
|
+
* payload the API expects.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseThemeConfigDocument(source: string): {
|
|
37
|
+
ok: true;
|
|
38
|
+
config: Record<string, unknown>;
|
|
39
|
+
} | {
|
|
40
|
+
ok: false;
|
|
41
|
+
errors: string[];
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=premium-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premium-tools.d.ts","sourceRoot":"","sources":["../src/premium-tools.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,mQACmO,CAAA;AAElQ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAA;AACxC,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,cAAc,EA6FpD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,cAS/B,CAAA;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,UAAU,CAKrE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,CAUrB;AAMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GAEZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAoBlC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { extractJsonFromText, parseThemeDocumentInput, } from "@shadsapp/schema";
|
|
2
|
+
import { ShadsApiError, readApiKey } from "./api-client.js";
|
|
3
|
+
export const AUTH_SETUP_MESSAGE = "shads.app premium tools need a Pro API key. Create one at https://shads.app (Account settings > API keys), then add it to your MCP client config: env { \"SHADS_API_KEY\": \"shads_live_...\" } for the @shadsapp/mcp server. Docs: https://shads.app/docs/mcp";
|
|
4
|
+
/**
|
|
5
|
+
* Mirrors modules/config/src/ai/limits.ts. This package is published standalone
|
|
6
|
+
* and cannot depend on the private `@modules/*` workspace, so the bounds are
|
|
7
|
+
* repeated here rather than imported.
|
|
8
|
+
*/
|
|
9
|
+
export const DESCRIPTION_MIN_LENGTH = 10;
|
|
10
|
+
export const DESCRIPTION_MAX_LENGTH = 400;
|
|
11
|
+
export const PREMIUM_TOOL_DEFINITIONS = [
|
|
12
|
+
{
|
|
13
|
+
name: "list_my_themes",
|
|
14
|
+
description: "List the signed-in user's saved cloud themes from shads.app (Pro)",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {},
|
|
18
|
+
additionalProperties: false,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "get_my_theme",
|
|
23
|
+
description: "Fetch one saved theme as a theme.json document plus a single standalone theme.css (Pro)",
|
|
24
|
+
inputSchema: {
|
|
25
|
+
type: "object",
|
|
26
|
+
properties: {
|
|
27
|
+
id: {
|
|
28
|
+
type: "string",
|
|
29
|
+
description: "Saved theme id (from list_my_themes)",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
required: ["id"],
|
|
33
|
+
additionalProperties: false,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "save_theme",
|
|
38
|
+
description: "Save a validated theme document to the user's shads.app account (Pro)",
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: "object",
|
|
41
|
+
properties: {
|
|
42
|
+
name: {
|
|
43
|
+
type: "string",
|
|
44
|
+
description: "Theme display name",
|
|
45
|
+
},
|
|
46
|
+
document: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "theme.json text (with $schema shads-theme/v1) or raw config object as JSON",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
required: ["name", "document"],
|
|
52
|
+
additionalProperties: false,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "update_theme",
|
|
57
|
+
description: "Update the name and/or config of a saved theme (Pro). Snapshots history on Pro accounts.",
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: "object",
|
|
60
|
+
properties: {
|
|
61
|
+
id: { type: "string", description: "Saved theme id" },
|
|
62
|
+
name: { type: "string", description: "New display name (optional)" },
|
|
63
|
+
document: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "New theme.json text or raw config JSON (optional; omit to rename only)",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
required: ["id"],
|
|
69
|
+
additionalProperties: false,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: "generate_theme",
|
|
74
|
+
description: "Generate theme variations from a text description using shads.app hosted AI (Pro, counts against monthly AI quota)",
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: "object",
|
|
77
|
+
properties: {
|
|
78
|
+
description: {
|
|
79
|
+
type: "string",
|
|
80
|
+
description: `Visual brief, ${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars, e.g. 'calm journaling app, sage green, serif headings'`,
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
required: ["description"],
|
|
84
|
+
additionalProperties: false,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: "check_subscription",
|
|
89
|
+
description: "Check the connected shads.app plan, MCP access, AI quota usage, and saved theme count",
|
|
90
|
+
inputSchema: {
|
|
91
|
+
type: "object",
|
|
92
|
+
properties: {},
|
|
93
|
+
additionalProperties: false,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
export const AUTHENTICATE_TOOL = {
|
|
98
|
+
name: "authenticate",
|
|
99
|
+
description: "Returns setup guidance for connecting a shads.app Pro API key to unlock saved-theme access and AI generation",
|
|
100
|
+
inputSchema: {
|
|
101
|
+
type: "object",
|
|
102
|
+
properties: {},
|
|
103
|
+
additionalProperties: false,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
export function hasApiKeyConfigured() {
|
|
107
|
+
return readApiKey() !== null;
|
|
108
|
+
}
|
|
109
|
+
export function textResult(data, isError = false) {
|
|
110
|
+
return {
|
|
111
|
+
content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
|
|
112
|
+
isError,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Runs a premium API call and normalizes errors into MCP tool results so the
|
|
117
|
+
* agent sees actionable text (invalid key, upgrade prompt, rate limit) rather
|
|
118
|
+
* than a thrown error.
|
|
119
|
+
*/
|
|
120
|
+
export async function premiumCall(run) {
|
|
121
|
+
try {
|
|
122
|
+
return textResult(await run());
|
|
123
|
+
}
|
|
124
|
+
catch (cause) {
|
|
125
|
+
if (cause instanceof ShadsApiError) {
|
|
126
|
+
return textResult({ error: cause.message, status: cause.status }, true);
|
|
127
|
+
}
|
|
128
|
+
const message = cause instanceof Error ? cause.message : String(cause);
|
|
129
|
+
return textResult({ error: message }, true);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function extractJsonObject(source) {
|
|
133
|
+
return extractJsonFromText(source.trim());
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Accepts either a full theme.json document (with `$schema`/`config`) or a
|
|
137
|
+
* bare config object, validates via @shadsapp/schema, and returns the config
|
|
138
|
+
* payload the API expects.
|
|
139
|
+
*/
|
|
140
|
+
export function parseThemeConfigDocument(source) {
|
|
141
|
+
const result = parseThemeDocumentInput(source);
|
|
142
|
+
if (result.ok) {
|
|
143
|
+
return { ok: true, config: result.document.config };
|
|
144
|
+
}
|
|
145
|
+
// A bare config object (no $schema/config wrapper) fails document
|
|
146
|
+
// validation; retry treating the whole payload as config.
|
|
147
|
+
const jsonText = extractJsonObject(source);
|
|
148
|
+
if (jsonText) {
|
|
149
|
+
try {
|
|
150
|
+
const raw = JSON.parse(jsonText);
|
|
151
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
152
|
+
return { ok: true, config: raw };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// fall through to the original errors
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return { ok: false, errors: result.errors };
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=premium-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premium-tools.js","sourceRoot":"","sources":["../src/premium-tools.ts"],"names":[],"mappings":"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"}
|