@kywi-software/mcp 0.1.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/LICENSE +661 -0
- package/README.md +77 -0
- package/dist/__tests__/auto-detect.test.d.ts +2 -0
- package/dist/__tests__/auto-detect.test.d.ts.map +1 -0
- package/dist/__tests__/auto-detect.test.js +134 -0
- package/dist/__tests__/auto-detect.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +72 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/developer-mutation.test.d.ts +2 -0
- package/dist/__tests__/developer-mutation.test.d.ts.map +1 -0
- package/dist/__tests__/developer-mutation.test.js +511 -0
- package/dist/__tests__/developer-mutation.test.js.map +1 -0
- package/dist/__tests__/developer-read-only.test.d.ts +2 -0
- package/dist/__tests__/developer-read-only.test.d.ts.map +1 -0
- package/dist/__tests__/developer-read-only.test.js +192 -0
- package/dist/__tests__/developer-read-only.test.js.map +1 -0
- package/dist/__tests__/site-content-tools.test.d.ts +2 -0
- package/dist/__tests__/site-content-tools.test.d.ts.map +1 -0
- package/dist/__tests__/site-content-tools.test.js +446 -0
- package/dist/__tests__/site-content-tools.test.js.map +1 -0
- package/dist/__tests__/site-layout-tools.test.d.ts +2 -0
- package/dist/__tests__/site-layout-tools.test.d.ts.map +1 -0
- package/dist/__tests__/site-layout-tools.test.js +316 -0
- package/dist/__tests__/site-layout-tools.test.js.map +1 -0
- package/dist/__tests__/site-other-tools.test.d.ts +2 -0
- package/dist/__tests__/site-other-tools.test.d.ts.map +1 -0
- package/dist/__tests__/site-other-tools.test.js +318 -0
- package/dist/__tests__/site-other-tools.test.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -0
- package/dist/developer/auto-detect.d.ts +17 -0
- package/dist/developer/auto-detect.d.ts.map +1 -0
- package/dist/developer/auto-detect.js +54 -0
- package/dist/developer/auto-detect.js.map +1 -0
- package/dist/developer/cli.d.ts +3 -0
- package/dist/developer/cli.d.ts.map +1 -0
- package/dist/developer/cli.js +14 -0
- package/dist/developer/cli.js.map +1 -0
- package/dist/developer/index.d.ts +4 -0
- package/dist/developer/index.d.ts.map +1 -0
- package/dist/developer/index.js +9 -0
- package/dist/developer/index.js.map +1 -0
- package/dist/developer/server.d.ts +4 -0
- package/dist/developer/server.d.ts.map +1 -0
- package/dist/developer/server.js +29 -0
- package/dist/developer/server.js.map +1 -0
- package/dist/developer/tools/api-keys.d.ts +48 -0
- package/dist/developer/tools/api-keys.d.ts.map +1 -0
- package/dist/developer/tools/api-keys.js +51 -0
- package/dist/developer/tools/api-keys.js.map +1 -0
- package/dist/developer/tools/config-mutation.d.ts +139 -0
- package/dist/developer/tools/config-mutation.d.ts.map +1 -0
- package/dist/developer/tools/config-mutation.js +277 -0
- package/dist/developer/tools/config-mutation.js.map +1 -0
- package/dist/developer/tools/content-type-tools.d.ts +32 -0
- package/dist/developer/tools/content-type-tools.d.ts.map +1 -0
- package/dist/developer/tools/content-type-tools.js +92 -0
- package/dist/developer/tools/content-type-tools.js.map +1 -0
- package/dist/developer/tools/read-only.d.ts +86 -0
- package/dist/developer/tools/read-only.d.ts.map +1 -0
- package/dist/developer/tools/read-only.js +235 -0
- package/dist/developer/tools/read-only.js.map +1 -0
- package/dist/developer/tools/scaffolding.d.ts +67 -0
- package/dist/developer/tools/scaffolding.d.ts.map +1 -0
- package/dist/developer/tools/scaffolding.js +207 -0
- package/dist/developer/tools/scaffolding.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/shared.d.ts +15 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +7 -0
- package/dist/shared.js.map +1 -0
- package/dist/site/cli.d.ts +3 -0
- package/dist/site/cli.d.ts.map +1 -0
- package/dist/site/cli.js +12 -0
- package/dist/site/cli.js.map +1 -0
- package/dist/site/index.d.ts +4 -0
- package/dist/site/index.d.ts.map +1 -0
- package/dist/site/index.js +9 -0
- package/dist/site/index.js.map +1 -0
- package/dist/site/server.d.ts +10 -0
- package/dist/site/server.d.ts.map +1 -0
- package/dist/site/server.js +73 -0
- package/dist/site/server.js.map +1 -0
- package/dist/site/tools/content.d.ts +250 -0
- package/dist/site/tools/content.d.ts.map +1 -0
- package/dist/site/tools/content.js +329 -0
- package/dist/site/tools/content.js.map +1 -0
- package/dist/site/tools/feeds.d.ts +62 -0
- package/dist/site/tools/feeds.d.ts.map +1 -0
- package/dist/site/tools/feeds.js +97 -0
- package/dist/site/tools/feeds.js.map +1 -0
- package/dist/site/tools/layout.d.ts +163 -0
- package/dist/site/tools/layout.d.ts.map +1 -0
- package/dist/site/tools/layout.js +226 -0
- package/dist/site/tools/layout.js.map +1 -0
- package/dist/site/tools/media.d.ts +38 -0
- package/dist/site/tools/media.d.ts.map +1 -0
- package/dist/site/tools/media.js +52 -0
- package/dist/site/tools/media.js.map +1 -0
- package/dist/site/tools/search.d.ts +40 -0
- package/dist/site/tools/search.d.ts.map +1 -0
- package/dist/site/tools/search.js +60 -0
- package/dist/site/tools/search.js.map +1 -0
- package/dist/site/tools/users.d.ts +60 -0
- package/dist/site/tools/users.d.ts.map +1 -0
- package/dist/site/tools/users.js +71 -0
- package/dist/site/tools/users.js.map +1 -0
- package/dist/site/tools/webhooks.d.ts +34 -0
- package/dist/site/tools/webhooks.d.ts.map +1 -0
- package/dist/site/tools/webhooks.js +44 -0
- package/dist/site/tools/webhooks.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { KywiHttpClient } from '@kywi-software/sdk';
|
|
3
|
+
import { textResult, errorResult } from '../../shared.js';
|
|
4
|
+
// ─── Exported handler functions (testable without server) ───────────────────
|
|
5
|
+
export async function handleGetContent(sdk, args) {
|
|
6
|
+
if (args.id) {
|
|
7
|
+
const item = await sdk.content.getById(args.id);
|
|
8
|
+
return item ? textResult(item) : errorResult('Content not found');
|
|
9
|
+
}
|
|
10
|
+
if (args.slug) {
|
|
11
|
+
const item = await sdk.content.getBySlug(args.slug);
|
|
12
|
+
return item ? textResult(item) : errorResult('Content not found');
|
|
13
|
+
}
|
|
14
|
+
return errorResult('Either id or slug must be provided');
|
|
15
|
+
}
|
|
16
|
+
export async function handleListContent(sdk, args) {
|
|
17
|
+
const { type, ...opts } = args;
|
|
18
|
+
const result = await sdk.content.list(type, undefined, opts);
|
|
19
|
+
return textResult({ rows: result.rows, total: result.total });
|
|
20
|
+
}
|
|
21
|
+
export async function handleCreateContent(sdk, args) {
|
|
22
|
+
const merged = { ...args.fields };
|
|
23
|
+
if (args.parentId !== undefined)
|
|
24
|
+
merged.parentId = args.parentId;
|
|
25
|
+
if (args.isNav !== undefined)
|
|
26
|
+
merged.isNav = args.isNav;
|
|
27
|
+
if (args.sortOrder !== undefined)
|
|
28
|
+
merged.sortOrder = args.sortOrder;
|
|
29
|
+
const item = await sdk.content.create(args.type, merged);
|
|
30
|
+
return textResult(item);
|
|
31
|
+
}
|
|
32
|
+
export async function handleUpdateContent(sdk, args) {
|
|
33
|
+
const item = await sdk.content.update(args.type, args.id, args.fields);
|
|
34
|
+
return item ? textResult(item) : errorResult('Content not found');
|
|
35
|
+
}
|
|
36
|
+
export async function handleDeleteContent(sdk, args) {
|
|
37
|
+
const deleted = await sdk.content.delete(args.id);
|
|
38
|
+
return deleted ? textResult({ deleted: true, id: args.id }) : errorResult('Content not found or could not be deleted');
|
|
39
|
+
}
|
|
40
|
+
export async function handlePublishContent(sdk, args) {
|
|
41
|
+
const item = await sdk.content.publish(args.id);
|
|
42
|
+
return item ? textResult(item) : errorResult('Content not found');
|
|
43
|
+
}
|
|
44
|
+
export async function handleUnpublishContent(sdk, args) {
|
|
45
|
+
const item = await sdk.content.unpublish(args.id);
|
|
46
|
+
return item ? textResult(item) : errorResult('Content not found');
|
|
47
|
+
}
|
|
48
|
+
export async function handleSubmitForReview(sdk, args) {
|
|
49
|
+
const item = await sdk.content.update(args.type, args.id, { status: 'pending_review' });
|
|
50
|
+
if (!item) {
|
|
51
|
+
return errorResult('Content not found');
|
|
52
|
+
}
|
|
53
|
+
return textResult({ submitted: true, id: args.id });
|
|
54
|
+
}
|
|
55
|
+
export async function handleApproveContent(sdk, args) {
|
|
56
|
+
const item = await sdk.content.update(args.type, args.id, { status: 'approved' });
|
|
57
|
+
if (!item) {
|
|
58
|
+
return errorResult('Content not found');
|
|
59
|
+
}
|
|
60
|
+
return textResult({ approved: true, id: args.id });
|
|
61
|
+
}
|
|
62
|
+
export async function handleRejectContent(sdk, args) {
|
|
63
|
+
const item = await sdk.content.update(args.type, args.id, { status: 'rejected', rejectionReason: args.reason });
|
|
64
|
+
if (!item) {
|
|
65
|
+
return errorResult('Content not found');
|
|
66
|
+
}
|
|
67
|
+
return textResult({ rejected: true, id: args.id, reason: args.reason });
|
|
68
|
+
}
|
|
69
|
+
export async function handleRestoreVersion(sdk, args) {
|
|
70
|
+
const item = await sdk.content.update(args.type, args.id, { restoreVersion: args.versionId });
|
|
71
|
+
if (!item) {
|
|
72
|
+
return errorResult('Content not found');
|
|
73
|
+
}
|
|
74
|
+
return textResult({ restored: true, id: args.id, versionId: args.versionId });
|
|
75
|
+
}
|
|
76
|
+
export async function handleMoveContent(sdk, args) {
|
|
77
|
+
const data = { parentId: args.parentId };
|
|
78
|
+
if (args.sortOrder !== undefined) {
|
|
79
|
+
data.sortOrder = args.sortOrder;
|
|
80
|
+
}
|
|
81
|
+
const item = await sdk.content.update(args.type, args.id, data);
|
|
82
|
+
return item ? textResult(item) : errorResult('Content not found');
|
|
83
|
+
}
|
|
84
|
+
export async function handleCopyContent(sdk, args) {
|
|
85
|
+
const source = await sdk.content.getById(args.id);
|
|
86
|
+
if (!source) {
|
|
87
|
+
return errorResult('Source content not found');
|
|
88
|
+
}
|
|
89
|
+
const { id: _id, createdAt: _created, updatedAt: _updated, publishedAt: _pub, ...fields } = source;
|
|
90
|
+
fields.parentId = args.parentId;
|
|
91
|
+
fields.status = 'draft';
|
|
92
|
+
const copy = await sdk.content.create(args.type, fields);
|
|
93
|
+
if (args.deep) {
|
|
94
|
+
let childrenCopied = 0;
|
|
95
|
+
async function copyChildren(sourceParentId, newParentId) {
|
|
96
|
+
const children = await sdk.content.getChildren(sourceParentId);
|
|
97
|
+
if (!children || !Array.isArray(children) || children.length === 0)
|
|
98
|
+
return;
|
|
99
|
+
for (const child of children) {
|
|
100
|
+
const childSource = await sdk.content.getById(child.id);
|
|
101
|
+
if (!childSource)
|
|
102
|
+
continue;
|
|
103
|
+
const { id: _cid, createdAt: _cc, updatedAt: _cu, publishedAt: _cp, ...childFields } = childSource;
|
|
104
|
+
childFields.parentId = newParentId;
|
|
105
|
+
childFields.status = 'draft';
|
|
106
|
+
const childCopy = await sdk.content.create(args.type, childFields);
|
|
107
|
+
childrenCopied++;
|
|
108
|
+
// Recurse into grandchildren
|
|
109
|
+
await copyChildren(child.id, childCopy.id);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
await copyChildren(args.id, copy.id);
|
|
113
|
+
return textResult({ ...copy, childrenCopied });
|
|
114
|
+
}
|
|
115
|
+
return textResult(copy);
|
|
116
|
+
}
|
|
117
|
+
export async function handleBulkCreate(sdk, args) {
|
|
118
|
+
const results = [];
|
|
119
|
+
const errors = [];
|
|
120
|
+
for (let i = 0; i < args.items.length; i++) {
|
|
121
|
+
try {
|
|
122
|
+
const item = await sdk.content.create(args.type, args.items[i] ?? {});
|
|
123
|
+
results.push(item);
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
errors.push({ index: i, error: err instanceof Error ? err.message : String(err) });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return textResult({ created: results, errors });
|
|
130
|
+
}
|
|
131
|
+
export async function handleBulkPublish(sdk, args) {
|
|
132
|
+
const published = [];
|
|
133
|
+
const errors = [];
|
|
134
|
+
for (const id of args.ids) {
|
|
135
|
+
try {
|
|
136
|
+
const item = await sdk.content.publish(id);
|
|
137
|
+
if (item) {
|
|
138
|
+
published.push(item);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
errors.push({ id, error: 'Content not found' });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
errors.push({ id, error: err instanceof Error ? err.message : String(err) });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return textResult({ published, errors });
|
|
149
|
+
}
|
|
150
|
+
export async function handleListPendingContent(sdk, args) {
|
|
151
|
+
const opts = { status: 'pending_review' };
|
|
152
|
+
if (args.siteId) {
|
|
153
|
+
opts.siteId = args.siteId;
|
|
154
|
+
}
|
|
155
|
+
const result = await sdk.content.list('page', undefined, opts);
|
|
156
|
+
return textResult({ items: result.rows, total: result.total });
|
|
157
|
+
}
|
|
158
|
+
export function getBuiltInContentTypes() {
|
|
159
|
+
return [
|
|
160
|
+
{ name: 'page', label: 'Page', isDefault: true, fields: [] },
|
|
161
|
+
{ name: 'folder', label: 'Folder', isDefault: true, fields: [] },
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
// ─── Registration ───────────────────────────────────────────────────────────
|
|
165
|
+
export function registerContentTools(server, sdk, baseUrl, apiKey) {
|
|
166
|
+
const http = baseUrl ? new KywiHttpClient({ baseUrl, apiKey }) : null;
|
|
167
|
+
server.registerTool('get_content', {
|
|
168
|
+
description: 'Get a content node by ID or slug',
|
|
169
|
+
inputSchema: {
|
|
170
|
+
id: z.string().optional().describe('Content ID'),
|
|
171
|
+
slug: z.string().optional().describe('Content slug'),
|
|
172
|
+
},
|
|
173
|
+
}, async (args) => handleGetContent(sdk, args));
|
|
174
|
+
server.registerTool('list_content', {
|
|
175
|
+
description: 'List content nodes by type with optional filtering, pagination, and sorting',
|
|
176
|
+
inputSchema: {
|
|
177
|
+
type: z.string().describe('Content type name'),
|
|
178
|
+
status: z.string().optional().describe('Filter by status (e.g. draft, published)'),
|
|
179
|
+
search: z.string().optional().describe('Search query'),
|
|
180
|
+
page: z.number().optional().describe('Page number'),
|
|
181
|
+
limit: z.number().optional().describe('Items per page'),
|
|
182
|
+
sort: z.string().optional().describe('Sort field'),
|
|
183
|
+
dir: z.enum(['asc', 'desc']).optional().describe('Sort direction'),
|
|
184
|
+
},
|
|
185
|
+
}, async (args) => handleListContent(sdk, args));
|
|
186
|
+
server.registerTool('create_content', {
|
|
187
|
+
description: 'Create a new content node. Use parentId to place it in the site tree.',
|
|
188
|
+
inputSchema: {
|
|
189
|
+
type: z.string().describe('Content type name (e.g. page, folder, blogPost)'),
|
|
190
|
+
fields: z.record(z.unknown()).describe('Content field values'),
|
|
191
|
+
parentId: z.string().optional().describe('Parent node ID — omit to create a root-level node'),
|
|
192
|
+
isNav: z.boolean().optional().describe('Whether this node appears in site navigation'),
|
|
193
|
+
sortOrder: z.number().optional().describe('Position among siblings (lower = earlier)'),
|
|
194
|
+
},
|
|
195
|
+
}, async (args) => handleCreateContent(sdk, args));
|
|
196
|
+
server.registerTool('update_content', {
|
|
197
|
+
description: 'Update an existing content node',
|
|
198
|
+
inputSchema: {
|
|
199
|
+
type: z.string().describe('Content type name'),
|
|
200
|
+
id: z.string().describe('Content ID'),
|
|
201
|
+
fields: z.record(z.unknown()).describe('Fields to update'),
|
|
202
|
+
},
|
|
203
|
+
}, async (args) => handleUpdateContent(sdk, args));
|
|
204
|
+
server.registerTool('delete_content', {
|
|
205
|
+
description: 'Delete a content node',
|
|
206
|
+
inputSchema: {
|
|
207
|
+
type: z.string().describe('Content type name'),
|
|
208
|
+
id: z.string().describe('Content ID'),
|
|
209
|
+
},
|
|
210
|
+
}, async (args) => handleDeleteContent(sdk, args));
|
|
211
|
+
server.registerTool('publish_content', {
|
|
212
|
+
description: 'Publish a content node',
|
|
213
|
+
inputSchema: {
|
|
214
|
+
type: z.string().describe('Content type name'),
|
|
215
|
+
id: z.string().describe('Content ID'),
|
|
216
|
+
},
|
|
217
|
+
}, async (args) => handlePublishContent(sdk, args));
|
|
218
|
+
server.registerTool('unpublish_content', {
|
|
219
|
+
description: 'Unpublish a content node (revert to draft)',
|
|
220
|
+
inputSchema: {
|
|
221
|
+
type: z.string().describe('Content type name'),
|
|
222
|
+
id: z.string().describe('Content ID'),
|
|
223
|
+
},
|
|
224
|
+
}, async (args) => handleUnpublishContent(sdk, args));
|
|
225
|
+
server.registerTool('submit_for_review', {
|
|
226
|
+
description: 'Submit a content node for editorial review',
|
|
227
|
+
inputSchema: {
|
|
228
|
+
type: z.string().describe('Content type name'),
|
|
229
|
+
id: z.string().describe('Content ID'),
|
|
230
|
+
},
|
|
231
|
+
}, async (args) => handleSubmitForReview(sdk, args));
|
|
232
|
+
server.registerTool('approve_content', {
|
|
233
|
+
description: 'Approve a content node that was submitted for review',
|
|
234
|
+
inputSchema: {
|
|
235
|
+
type: z.string().describe('Content type name'),
|
|
236
|
+
id: z.string().describe('Content ID'),
|
|
237
|
+
},
|
|
238
|
+
}, async (args) => handleApproveContent(sdk, args));
|
|
239
|
+
server.registerTool('reject_content', {
|
|
240
|
+
description: 'Reject a content node that was submitted for review',
|
|
241
|
+
inputSchema: {
|
|
242
|
+
type: z.string().describe('Content type name'),
|
|
243
|
+
id: z.string().describe('Content ID'),
|
|
244
|
+
reason: z.string().describe('Reason for rejection'),
|
|
245
|
+
},
|
|
246
|
+
}, async (args) => handleRejectContent(sdk, args));
|
|
247
|
+
server.registerTool('restore_version', {
|
|
248
|
+
description: 'Restore a content node to a previous version',
|
|
249
|
+
inputSchema: {
|
|
250
|
+
type: z.string().describe('Content type name'),
|
|
251
|
+
id: z.string().describe('Content ID'),
|
|
252
|
+
versionId: z.string().describe('Version ID to restore'),
|
|
253
|
+
},
|
|
254
|
+
}, async (args) => handleRestoreVersion(sdk, args));
|
|
255
|
+
server.registerTool('move_content', {
|
|
256
|
+
description: 'Move a content node to a new parent and optionally reorder',
|
|
257
|
+
inputSchema: {
|
|
258
|
+
type: z.string().describe('Content type name'),
|
|
259
|
+
id: z.string().describe('Content ID'),
|
|
260
|
+
parentId: z.string().describe('New parent ID'),
|
|
261
|
+
sortOrder: z.number().optional().describe('Sort order within the new parent'),
|
|
262
|
+
},
|
|
263
|
+
}, async (args) => handleMoveContent(sdk, args));
|
|
264
|
+
server.registerTool('copy_content', {
|
|
265
|
+
description: 'Copy a content node to a new parent as a draft. Use deep=true to also copy child content items.',
|
|
266
|
+
inputSchema: {
|
|
267
|
+
type: z.string().describe('Content type name'),
|
|
268
|
+
id: z.string().describe('Source content ID'),
|
|
269
|
+
parentId: z.string().describe('Target parent ID'),
|
|
270
|
+
deep: z.boolean().optional().describe('If true, recursively copy child content items'),
|
|
271
|
+
},
|
|
272
|
+
}, async (args) => handleCopyContent(sdk, args));
|
|
273
|
+
server.registerTool('bulk_create_content', {
|
|
274
|
+
description: 'Create multiple content nodes in a batch',
|
|
275
|
+
inputSchema: {
|
|
276
|
+
type: z.string().describe('Content type name'),
|
|
277
|
+
items: z.array(z.record(z.unknown())).describe('Array of field objects to create'),
|
|
278
|
+
},
|
|
279
|
+
}, async (args) => handleBulkCreate(sdk, args));
|
|
280
|
+
server.registerTool('bulk_publish', {
|
|
281
|
+
description: 'Publish multiple content nodes in a batch',
|
|
282
|
+
inputSchema: {
|
|
283
|
+
type: z.string().describe('Content type name'),
|
|
284
|
+
ids: z.array(z.string()).describe('Array of content IDs to publish'),
|
|
285
|
+
},
|
|
286
|
+
}, async (args) => handleBulkPublish(sdk, args));
|
|
287
|
+
server.registerTool('list_pending_content', {
|
|
288
|
+
description: 'List content nodes pending editorial review',
|
|
289
|
+
inputSchema: {
|
|
290
|
+
siteId: z.string().optional().describe('Filter by site ID'),
|
|
291
|
+
},
|
|
292
|
+
}, async (args) => handleListPendingContent(sdk, args));
|
|
293
|
+
// get_tree — full site content hierarchy
|
|
294
|
+
server.registerTool('get_tree', {
|
|
295
|
+
description: 'Get the full site content tree as a nested hierarchy. Use this to understand site structure before creating or moving content.',
|
|
296
|
+
inputSchema: {
|
|
297
|
+
siteId: z.string().optional().describe('Site ID — uses the default site if omitted'),
|
|
298
|
+
},
|
|
299
|
+
}, async (args) => {
|
|
300
|
+
if (!http)
|
|
301
|
+
return errorResult('get_tree requires baseUrl — configure the MCP server with baseUrl');
|
|
302
|
+
const path = args.siteId ? `/tree?siteId=${encodeURIComponent(args.siteId)}` : '/tree';
|
|
303
|
+
try {
|
|
304
|
+
const res = await http.get(path);
|
|
305
|
+
return textResult(res.data);
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
return errorResult(`get_tree: ${err instanceof Error ? err.message : String(err)}`);
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
// list_content_types — built-in defaults + custom types
|
|
312
|
+
server.registerTool('list_content_types', {
|
|
313
|
+
description: 'List all available content types including built-in defaults (page, folder) and custom types defined in kywi.config.ts.',
|
|
314
|
+
inputSchema: {},
|
|
315
|
+
}, async () => {
|
|
316
|
+
const builtIns = getBuiltInContentTypes();
|
|
317
|
+
if (!http)
|
|
318
|
+
return textResult({ types: builtIns });
|
|
319
|
+
try {
|
|
320
|
+
const res = await http.get('/config/content-types');
|
|
321
|
+
const customTypes = (res.data ?? []).map((ct) => ({ ...ct, isDefault: false }));
|
|
322
|
+
return textResult({ types: [...builtIns, ...customTypes] });
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
return textResult({ types: builtIns });
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/site/tools/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { KywiSdkScope } from '@kywi-software/sdk';
|
|
3
|
+
export declare function handleExecuteFeed(sdk: KywiSdkScope, args: {
|
|
4
|
+
slug?: string | undefined;
|
|
5
|
+
query?: {
|
|
6
|
+
contentType: string;
|
|
7
|
+
search?: string | undefined;
|
|
8
|
+
status?: string | undefined;
|
|
9
|
+
sort?: string | undefined;
|
|
10
|
+
limit?: number | undefined;
|
|
11
|
+
page?: number | undefined;
|
|
12
|
+
} | undefined;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
content: [{
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}];
|
|
18
|
+
isError?: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
content: [{
|
|
21
|
+
type: "text";
|
|
22
|
+
text: string;
|
|
23
|
+
}];
|
|
24
|
+
isError: true;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function handleCreateFeed(sdk: KywiSdkScope, args: {
|
|
27
|
+
name: string;
|
|
28
|
+
slug: string;
|
|
29
|
+
siteId?: string | undefined;
|
|
30
|
+
query: Record<string, unknown>;
|
|
31
|
+
cacheTtl?: number | undefined;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
content: [{
|
|
34
|
+
type: "text";
|
|
35
|
+
text: string;
|
|
36
|
+
}];
|
|
37
|
+
isError?: undefined;
|
|
38
|
+
}>;
|
|
39
|
+
export declare function handleUpdateFeed(sdk: KywiSdkScope, args: {
|
|
40
|
+
slug: string;
|
|
41
|
+
siteId?: string | undefined;
|
|
42
|
+
name?: string | undefined;
|
|
43
|
+
query?: Record<string, unknown> | undefined;
|
|
44
|
+
cacheTtl?: number | undefined;
|
|
45
|
+
}): Promise<{
|
|
46
|
+
content: [{
|
|
47
|
+
type: "text";
|
|
48
|
+
text: string;
|
|
49
|
+
}];
|
|
50
|
+
isError?: undefined;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function handleListFeeds(sdk: KywiSdkScope, args: {
|
|
53
|
+
siteId?: string | undefined;
|
|
54
|
+
}): Promise<{
|
|
55
|
+
content: [{
|
|
56
|
+
type: "text";
|
|
57
|
+
text: string;
|
|
58
|
+
}];
|
|
59
|
+
isError?: undefined;
|
|
60
|
+
}>;
|
|
61
|
+
export declare function registerFeedTools(server: McpServer, sdk: KywiSdkScope): void;
|
|
62
|
+
//# sourceMappingURL=feeds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../src/site/tools/feeds.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAA;AAKjE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC1B,GAAG,SAAS,CAAA;CACd;;;;;;;;;;;;GAiBF;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE;;;;;;GAWjI;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE;;;;;;GAS3J;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE;;;;;;GAItC;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CA4C5E"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { textResult, errorResult } from '../../shared.js';
|
|
3
|
+
// ─── Exported handler functions (testable without server) ───────────────────
|
|
4
|
+
export async function handleExecuteFeed(sdk, args) {
|
|
5
|
+
if (args.slug) {
|
|
6
|
+
const result = await sdk.feeds.get(args.slug);
|
|
7
|
+
return textResult(result);
|
|
8
|
+
}
|
|
9
|
+
if (args.query) {
|
|
10
|
+
const q = { contentType: args.query.contentType };
|
|
11
|
+
if (args.query.search)
|
|
12
|
+
q.search = args.query.search;
|
|
13
|
+
if (args.query.status)
|
|
14
|
+
q.status = args.query.status;
|
|
15
|
+
if (args.query.sort)
|
|
16
|
+
q.sort = { field: args.query.sort, direction: 'asc' };
|
|
17
|
+
if (args.query.limit !== undefined)
|
|
18
|
+
q.limit = args.query.limit;
|
|
19
|
+
if (args.query.page !== undefined)
|
|
20
|
+
q.page = args.query.page;
|
|
21
|
+
const result = await sdk.feeds.query(q);
|
|
22
|
+
return textResult(result);
|
|
23
|
+
}
|
|
24
|
+
return errorResult('Either slug or query must be provided');
|
|
25
|
+
}
|
|
26
|
+
export async function handleCreateFeed(sdk, args) {
|
|
27
|
+
const feedQuery = args.query;
|
|
28
|
+
const feed = await sdk.feeds.create({
|
|
29
|
+
name: args.name,
|
|
30
|
+
slug: args.slug,
|
|
31
|
+
...(args.siteId ? { siteId: args.siteId } : {}),
|
|
32
|
+
query: feedQuery,
|
|
33
|
+
...(args.cacheTtl !== undefined ? { cacheTtl: args.cacheTtl } : {}),
|
|
34
|
+
});
|
|
35
|
+
return textResult(feed);
|
|
36
|
+
}
|
|
37
|
+
export async function handleUpdateFeed(sdk, args) {
|
|
38
|
+
const updateData = {};
|
|
39
|
+
if (args.name !== undefined)
|
|
40
|
+
updateData.name = args.name;
|
|
41
|
+
if (args.query !== undefined)
|
|
42
|
+
updateData.query = args.query;
|
|
43
|
+
if (args.cacheTtl !== undefined)
|
|
44
|
+
updateData.cacheTtl = args.cacheTtl;
|
|
45
|
+
if (args.siteId !== undefined)
|
|
46
|
+
updateData.siteId = args.siteId;
|
|
47
|
+
const feed = await sdk.feeds.update(args.slug, updateData);
|
|
48
|
+
return textResult(feed);
|
|
49
|
+
}
|
|
50
|
+
export async function handleListFeeds(sdk, args) {
|
|
51
|
+
const feeds = await sdk.feeds.list({ siteId: args.siteId });
|
|
52
|
+
return textResult({ feeds, total: feeds.length });
|
|
53
|
+
}
|
|
54
|
+
// ─── Registration ───────────────────────────────────────────────────────────
|
|
55
|
+
export function registerFeedTools(server, sdk) {
|
|
56
|
+
server.registerTool('execute_feed', {
|
|
57
|
+
description: 'Execute a saved feed by slug or run an ad-hoc feed query',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
slug: z.string().optional().describe('Saved feed slug'),
|
|
60
|
+
query: z.object({
|
|
61
|
+
contentType: z.string().describe('Content type to query'),
|
|
62
|
+
search: z.string().optional().describe('Search query'),
|
|
63
|
+
status: z.string().optional().describe('Filter by status'),
|
|
64
|
+
sort: z.string().optional().describe('Sort field'),
|
|
65
|
+
limit: z.number().optional().describe('Items per page'),
|
|
66
|
+
page: z.number().optional().describe('Page number'),
|
|
67
|
+
}).optional().describe('Ad-hoc feed query'),
|
|
68
|
+
},
|
|
69
|
+
}, async (args) => handleExecuteFeed(sdk, args));
|
|
70
|
+
server.registerTool('create_feed', {
|
|
71
|
+
description: 'Create a saved feed definition',
|
|
72
|
+
inputSchema: {
|
|
73
|
+
name: z.string().describe('Feed name'),
|
|
74
|
+
slug: z.string().describe('Feed slug'),
|
|
75
|
+
siteId: z.string().optional().describe('Site ID (uses default if omitted)'),
|
|
76
|
+
query: z.record(z.unknown()).describe('Feed query definition (contentType required)'),
|
|
77
|
+
cacheTtl: z.number().optional().describe('Cache TTL in seconds'),
|
|
78
|
+
},
|
|
79
|
+
}, async (args) => handleCreateFeed(sdk, args));
|
|
80
|
+
server.registerTool('update_feed', {
|
|
81
|
+
description: 'Update a saved feed definition',
|
|
82
|
+
inputSchema: {
|
|
83
|
+
slug: z.string().describe('Feed slug'),
|
|
84
|
+
siteId: z.string().optional().describe('Site ID (uses default if omitted)'),
|
|
85
|
+
name: z.string().optional().describe('New feed name'),
|
|
86
|
+
query: z.record(z.unknown()).optional().describe('Updated feed query'),
|
|
87
|
+
cacheTtl: z.number().optional().describe('Cache TTL in seconds'),
|
|
88
|
+
},
|
|
89
|
+
}, async (args) => handleUpdateFeed(sdk, args));
|
|
90
|
+
server.registerTool('list_feeds', {
|
|
91
|
+
description: 'List saved feed definitions for a site',
|
|
92
|
+
inputSchema: {
|
|
93
|
+
siteId: z.string().optional().describe('Filter by site ID'),
|
|
94
|
+
},
|
|
95
|
+
}, async (args) => handleListFeeds(sdk, args));
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=feeds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feeds.js","sourceRoot":"","sources":["../../../src/site/tools/feeds.ts"],"names":[],"mappings":"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"}
|