mcp-wordpress 1.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.
Files changed (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +568 -0
  3. package/bin/mcp-wordpress.js +12 -0
  4. package/bin/setup.js +302 -0
  5. package/bin/status.js +359 -0
  6. package/dist/client/WordPressClient.d.ts +81 -0
  7. package/dist/client/WordPressClient.d.ts.map +1 -0
  8. package/dist/client/WordPressClient.js +354 -0
  9. package/dist/client/WordPressClient.js.map +1 -0
  10. package/dist/client/api.d.ts +140 -0
  11. package/dist/client/api.d.ts.map +1 -0
  12. package/dist/client/api.js +727 -0
  13. package/dist/client/api.js.map +1 -0
  14. package/dist/client/auth.d.ts +121 -0
  15. package/dist/client/auth.d.ts.map +1 -0
  16. package/dist/client/auth.js +430 -0
  17. package/dist/client/auth.js.map +1 -0
  18. package/dist/client/managers/AuthenticationManager.d.ts +39 -0
  19. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -0
  20. package/dist/client/managers/AuthenticationManager.js +159 -0
  21. package/dist/client/managers/AuthenticationManager.js.map +1 -0
  22. package/dist/client/managers/BaseManager.d.ts +22 -0
  23. package/dist/client/managers/BaseManager.d.ts.map +1 -0
  24. package/dist/client/managers/BaseManager.js +47 -0
  25. package/dist/client/managers/BaseManager.js.map +1 -0
  26. package/dist/client/managers/RequestManager.d.ts +45 -0
  27. package/dist/client/managers/RequestManager.d.ts.map +1 -0
  28. package/dist/client/managers/RequestManager.js +161 -0
  29. package/dist/client/managers/RequestManager.js.map +1 -0
  30. package/dist/client/managers/index.d.ts +8 -0
  31. package/dist/client/managers/index.d.ts.map +1 -0
  32. package/dist/client/managers/index.js +8 -0
  33. package/dist/client/managers/index.js.map +1 -0
  34. package/dist/index.d.ts +19 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +264 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/server.d.ts +7 -0
  39. package/dist/server.d.ts.map +1 -0
  40. package/dist/server.js +7 -0
  41. package/dist/server.js.map +1 -0
  42. package/dist/tools/auth.d.ts +44 -0
  43. package/dist/tools/auth.d.ts.map +1 -0
  44. package/dist/tools/auth.js +126 -0
  45. package/dist/tools/auth.js.map +1 -0
  46. package/dist/tools/base.d.ts +37 -0
  47. package/dist/tools/base.d.ts.map +1 -0
  48. package/dist/tools/base.js +60 -0
  49. package/dist/tools/base.js.map +1 -0
  50. package/dist/tools/comments.d.ts +33 -0
  51. package/dist/tools/comments.d.ts.map +1 -0
  52. package/dist/tools/comments.js +228 -0
  53. package/dist/tools/comments.js.map +1 -0
  54. package/dist/tools/index.d.ts +9 -0
  55. package/dist/tools/index.d.ts.map +1 -0
  56. package/dist/tools/index.js +9 -0
  57. package/dist/tools/index.js.map +1 -0
  58. package/dist/tools/media.d.ts +29 -0
  59. package/dist/tools/media.d.ts.map +1 -0
  60. package/dist/tools/media.js +208 -0
  61. package/dist/tools/media.js.map +1 -0
  62. package/dist/tools/pages.d.ts +30 -0
  63. package/dist/tools/pages.d.ts.map +1 -0
  64. package/dist/tools/pages.js +211 -0
  65. package/dist/tools/pages.js.map +1 -0
  66. package/dist/tools/posts.d.ts +30 -0
  67. package/dist/tools/posts.d.ts.map +1 -0
  68. package/dist/tools/posts.js +240 -0
  69. package/dist/tools/posts.js.map +1 -0
  70. package/dist/tools/site.d.ts +31 -0
  71. package/dist/tools/site.d.ts.map +1 -0
  72. package/dist/tools/site.js +192 -0
  73. package/dist/tools/site.js.map +1 -0
  74. package/dist/tools/taxonomies.d.ts +37 -0
  75. package/dist/tools/taxonomies.d.ts.map +1 -0
  76. package/dist/tools/taxonomies.js +280 -0
  77. package/dist/tools/taxonomies.js.map +1 -0
  78. package/dist/tools/users.d.ts +28 -0
  79. package/dist/tools/users.d.ts.map +1 -0
  80. package/dist/tools/users.js +201 -0
  81. package/dist/tools/users.js.map +1 -0
  82. package/dist/types/client.d.ts +215 -0
  83. package/dist/types/client.d.ts.map +1 -0
  84. package/dist/types/client.js +72 -0
  85. package/dist/types/client.js.map +1 -0
  86. package/dist/types/index.d.ts +157 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/index.js +12 -0
  89. package/dist/types/index.js.map +1 -0
  90. package/dist/types/mcp.d.ts +178 -0
  91. package/dist/types/mcp.d.ts.map +1 -0
  92. package/dist/types/mcp.js +7 -0
  93. package/dist/types/mcp.js.map +1 -0
  94. package/dist/types/wordpress.d.ts +443 -0
  95. package/dist/types/wordpress.d.ts.map +1 -0
  96. package/dist/types/wordpress.js +7 -0
  97. package/dist/types/wordpress.js.map +1 -0
  98. package/dist/utils/debug.d.ts +63 -0
  99. package/dist/utils/debug.d.ts.map +1 -0
  100. package/dist/utils/debug.js +195 -0
  101. package/dist/utils/debug.js.map +1 -0
  102. package/dist/utils/error.d.ts +19 -0
  103. package/dist/utils/error.d.ts.map +1 -0
  104. package/dist/utils/error.js +71 -0
  105. package/dist/utils/error.js.map +1 -0
  106. package/dist/utils/toolWrapper.d.ts +36 -0
  107. package/dist/utils/toolWrapper.d.ts.map +1 -0
  108. package/dist/utils/toolWrapper.js +90 -0
  109. package/dist/utils/toolWrapper.js.map +1 -0
  110. package/package.json +115 -0
  111. package/src/client/api.ts +1043 -0
  112. package/src/client/auth.ts +527 -0
  113. package/src/client/managers/AuthenticationManager.ts +190 -0
  114. package/src/client/managers/BaseManager.ts +73 -0
  115. package/src/client/managers/RequestManager.ts +214 -0
  116. package/src/client/managers/index.ts +8 -0
  117. package/src/index.ts +337 -0
  118. package/src/server.ts +7 -0
  119. package/src/tools/auth.ts +153 -0
  120. package/src/tools/comments.ts +263 -0
  121. package/src/tools/index.ts +8 -0
  122. package/src/tools/media.ts +240 -0
  123. package/src/tools/pages.ts +246 -0
  124. package/src/tools/posts.ts +277 -0
  125. package/src/tools/site.ts +227 -0
  126. package/src/tools/taxonomies.ts +322 -0
  127. package/src/tools/users.ts +233 -0
  128. package/src/types/client.ts +304 -0
  129. package/src/types/index.ts +207 -0
  130. package/src/types/mcp.ts +247 -0
  131. package/src/types/wordpress.ts +491 -0
  132. package/src/utils/debug.ts +258 -0
  133. package/src/utils/error.ts +88 -0
  134. package/src/utils/toolWrapper.ts +105 -0
@@ -0,0 +1,491 @@
1
+ /**
2
+ * Core WordPress REST API Types
3
+ *
4
+ * Comprehensive TypeScript definitions for WordPress REST API v2 responses
5
+ */
6
+
7
+ // Common WordPress API response patterns
8
+ export interface WordPressRendered {
9
+ rendered: string;
10
+ protected?: boolean;
11
+ }
12
+
13
+ export interface WordPressLink {
14
+ href: string;
15
+ embeddable?: boolean;
16
+ templated?: boolean;
17
+ }
18
+
19
+ export interface WordPressLinks {
20
+ self?: WordPressLink[];
21
+ collection?: WordPressLink[];
22
+ about?: WordPressLink[];
23
+ author?: WordPressLink[];
24
+ replies?: WordPressLink[];
25
+ 'version-history'?: WordPressLink[];
26
+ 'predecessor-version'?: WordPressLink[];
27
+ 'wp:attachment'?: WordPressLink[];
28
+ 'wp:term'?: WordPressLink[];
29
+ 'wp:featuredmedia'?: WordPressLink[];
30
+ curies?: WordPressLink[];
31
+ }
32
+
33
+ // Post Types
34
+ export type PostStatus = 'publish' | 'future' | 'draft' | 'pending' | 'private' | 'trash' | 'auto-draft' | 'inherit';
35
+ export type PostFormat = 'standard' | 'aside' | 'chat' | 'gallery' | 'link' | 'image' | 'quote' | 'status' | 'video' | 'audio';
36
+ export type CommentStatus = 'open' | 'closed';
37
+ export type PingStatus = 'open' | 'closed';
38
+
39
+ export interface WordPressPost {
40
+ id: number;
41
+ date: string;
42
+ date_gmt: string;
43
+ guid: WordPressRendered;
44
+ modified: string;
45
+ modified_gmt: string;
46
+ slug: string;
47
+ status: PostStatus;
48
+ type: string;
49
+ link: string;
50
+ title: WordPressRendered;
51
+ content: WordPressRendered;
52
+ excerpt: WordPressRendered;
53
+ author: number;
54
+ featured_media: number;
55
+ comment_status: CommentStatus;
56
+ ping_status: PingStatus;
57
+ sticky: boolean;
58
+ template: string;
59
+ format: PostFormat;
60
+ meta: Record<string, any>;
61
+ categories: number[];
62
+ tags: number[];
63
+ _links?: WordPressLinks;
64
+ }
65
+
66
+ export interface WordPressPage {
67
+ id: number;
68
+ date: string;
69
+ date_gmt: string;
70
+ guid: WordPressRendered;
71
+ modified: string;
72
+ modified_gmt: string;
73
+ slug: string;
74
+ status: PostStatus;
75
+ type: string;
76
+ link: string;
77
+ title: WordPressRendered;
78
+ content: WordPressRendered;
79
+ author: number;
80
+ excerpt: WordPressRendered;
81
+ featured_media: number;
82
+ comment_status: CommentStatus;
83
+ ping_status: PingStatus;
84
+ menu_order: number;
85
+ meta: Record<string, any>;
86
+ template: string;
87
+ parent: number;
88
+ _links?: WordPressLinks;
89
+ }
90
+
91
+ // Media Types
92
+ export type MediaType = 'image' | 'video' | 'text' | 'application' | 'audio';
93
+
94
+ export interface MediaDetails {
95
+ width?: number;
96
+ height?: number;
97
+ file?: string;
98
+ filesize?: number;
99
+ sizes?: Record<string, {
100
+ file: string;
101
+ width: number;
102
+ height: number;
103
+ mime_type: string;
104
+ source_url: string;
105
+ }>;
106
+ image_meta?: {
107
+ aperture?: string;
108
+ credit?: string;
109
+ camera?: string;
110
+ caption?: string;
111
+ created_timestamp?: string;
112
+ copyright?: string;
113
+ focal_length?: string;
114
+ iso?: string;
115
+ shutter_speed?: string;
116
+ title?: string;
117
+ orientation?: string;
118
+ keywords?: string[];
119
+ };
120
+ }
121
+
122
+ export interface WordPressMedia {
123
+ id: number;
124
+ date: string;
125
+ date_gmt: string;
126
+ guid: WordPressRendered;
127
+ modified: string;
128
+ modified_gmt: string;
129
+ slug: string;
130
+ status: PostStatus;
131
+ type: string;
132
+ link: string;
133
+ title: WordPressRendered;
134
+ author: number;
135
+ comment_status: CommentStatus;
136
+ ping_status: PingStatus;
137
+ template: string;
138
+ meta: Record<string, any>;
139
+ description: WordPressRendered;
140
+ caption: WordPressRendered;
141
+ alt_text: string;
142
+ media_type: MediaType;
143
+ mime_type: string;
144
+ media_details: MediaDetails;
145
+ post: number | null;
146
+ source_url: string;
147
+ _links?: WordPressLinks;
148
+ }
149
+
150
+ // User Types
151
+ export type UserRole = 'administrator' | 'editor' | 'author' | 'contributor' | 'subscriber';
152
+
153
+ export interface WordPressUser {
154
+ id: number;
155
+ username: string;
156
+ name: string;
157
+ first_name: string;
158
+ last_name: string;
159
+ email: string;
160
+ url: string;
161
+ description: string;
162
+ link: string;
163
+ locale: string;
164
+ nickname: string;
165
+ slug: string;
166
+ roles: UserRole[];
167
+ registered_date: string;
168
+ capabilities: Record<string, boolean>;
169
+ extra_capabilities: Record<string, boolean>;
170
+ avatar_urls: Record<string, string>;
171
+ meta: Record<string, any>;
172
+ _links?: WordPressLinks;
173
+ }
174
+
175
+ // Comment Types
176
+ export type CommentType = 'comment' | 'trackback' | 'pingback';
177
+
178
+ export interface WordPressComment {
179
+ id: number;
180
+ post: number;
181
+ parent: number;
182
+ author: number;
183
+ author_name: string;
184
+ author_email: string;
185
+ author_url: string;
186
+ author_ip: string;
187
+ author_user_agent: string;
188
+ date: string;
189
+ date_gmt: string;
190
+ content: WordPressRendered;
191
+ link: string;
192
+ status: 'approved' | 'unapproved' | 'spam' | 'trash';
193
+ type: CommentType;
194
+ author_avatar_urls: Record<string, string>;
195
+ meta: Record<string, any>;
196
+ _links?: WordPressLinks;
197
+ }
198
+
199
+ // Taxonomy Types
200
+ export interface WordPressCategory {
201
+ id: number;
202
+ count: number;
203
+ description: string;
204
+ link: string;
205
+ name: string;
206
+ slug: string;
207
+ taxonomy: string;
208
+ parent: number;
209
+ meta: Record<string, any>;
210
+ _links?: WordPressLinks;
211
+ }
212
+
213
+ export interface WordPressTag {
214
+ id: number;
215
+ count: number;
216
+ description: string;
217
+ link: string;
218
+ name: string;
219
+ slug: string;
220
+ taxonomy: string;
221
+ meta: Record<string, any>;
222
+ _links?: WordPressLinks;
223
+ }
224
+
225
+ export interface WordPressTaxonomy {
226
+ name: string;
227
+ slug: string;
228
+ description: string;
229
+ types: string[];
230
+ hierarchical: boolean;
231
+ rest_base: string;
232
+ rest_namespace: string;
233
+ visibility: {
234
+ public: boolean;
235
+ publicly_queryable: boolean;
236
+ show_ui: boolean;
237
+ show_admin_column: boolean;
238
+ show_in_nav_menus: boolean;
239
+ show_cloud: boolean;
240
+ show_in_quick_edit: boolean;
241
+ };
242
+ _links?: WordPressLinks;
243
+ }
244
+
245
+ // Site Settings Types
246
+ export interface WordPressSiteSettings {
247
+ title: string;
248
+ description: string;
249
+ url: string;
250
+ email: string;
251
+ timezone: string;
252
+ date_format: string;
253
+ time_format: string;
254
+ start_of_week: number;
255
+ language: string;
256
+ use_smilies: boolean;
257
+ default_category: number;
258
+ default_post_format: string;
259
+ posts_per_page: number;
260
+ default_ping_status: PingStatus;
261
+ default_comment_status: CommentStatus;
262
+ }
263
+
264
+ // Application Password Types
265
+ export interface WordPressApplicationPassword {
266
+ uuid: string;
267
+ app_id: string;
268
+ name: string;
269
+ password?: string; // Only returned when created
270
+ created: string;
271
+ last_used: string | null;
272
+ last_ip: string | null;
273
+ }
274
+
275
+ // API Request/Response Types
276
+ export interface WordPressAPIErrorResponse {
277
+ code: string;
278
+ message: string;
279
+ data?: {
280
+ status: number;
281
+ params?: Record<string, any>;
282
+ details?: Record<string, any>;
283
+ };
284
+ }
285
+
286
+ // Pagination and Query Parameters
287
+ export interface PaginationParams {
288
+ page?: number;
289
+ per_page?: number;
290
+ search?: string;
291
+ order?: 'asc' | 'desc';
292
+ orderby?: string;
293
+ }
294
+
295
+ export interface PostQueryParams extends PaginationParams {
296
+ author?: number;
297
+ author_exclude?: number[];
298
+ before?: string;
299
+ after?: string;
300
+ exclude?: number[];
301
+ include?: number[];
302
+ offset?: number;
303
+ slug?: string[];
304
+ status?: PostStatus[];
305
+ categories?: number[];
306
+ categories_exclude?: number[];
307
+ tags?: number[];
308
+ tags_exclude?: number[];
309
+ sticky?: boolean;
310
+ }
311
+
312
+ export interface MediaQueryParams extends PaginationParams {
313
+ author?: number;
314
+ author_exclude?: number[];
315
+ before?: string;
316
+ after?: string;
317
+ exclude?: number[];
318
+ include?: number[];
319
+ offset?: number;
320
+ parent?: number;
321
+ parent_exclude?: number[];
322
+ slug?: string[];
323
+ status?: PostStatus[];
324
+ media_type?: MediaType;
325
+ mime_type?: string;
326
+ }
327
+
328
+ export interface UserQueryParams extends PaginationParams {
329
+ context?: 'view' | 'embed' | 'edit';
330
+ exclude?: number[];
331
+ include?: number[];
332
+ offset?: number;
333
+ slug?: string[];
334
+ roles?: UserRole[];
335
+ capabilities?: string[];
336
+ who?: 'authors';
337
+ has_published_posts?: string[];
338
+ }
339
+
340
+ export interface CommentQueryParams extends PaginationParams {
341
+ context?: 'view' | 'embed' | 'edit';
342
+ after?: string;
343
+ author?: number[];
344
+ author_exclude?: number[];
345
+ author_email?: string;
346
+ before?: string;
347
+ exclude?: number[];
348
+ include?: number[];
349
+ offset?: number;
350
+ parent?: number[];
351
+ parent_exclude?: number[];
352
+ post?: number[];
353
+ status?: string;
354
+ type?: CommentType;
355
+ password?: string;
356
+ }
357
+
358
+ // Create/Update Request Types
359
+ export interface CreatePostRequest {
360
+ title?: string;
361
+ content?: string;
362
+ excerpt?: string;
363
+ status?: PostStatus;
364
+ author?: number;
365
+ featured_media?: number;
366
+ comment_status?: CommentStatus;
367
+ ping_status?: PingStatus;
368
+ format?: PostFormat;
369
+ meta?: Record<string, any>;
370
+ sticky?: boolean;
371
+ template?: string;
372
+ categories?: number[];
373
+ tags?: number[];
374
+ date?: string;
375
+ date_gmt?: string;
376
+ slug?: string;
377
+ password?: string;
378
+ }
379
+
380
+ export interface UpdatePostRequest extends Partial<CreatePostRequest> {
381
+ id: number;
382
+ }
383
+
384
+ export interface CreatePageRequest {
385
+ title?: string;
386
+ content?: string;
387
+ author?: number;
388
+ excerpt?: string;
389
+ featured_media?: number;
390
+ comment_status?: CommentStatus;
391
+ ping_status?: PingStatus;
392
+ menu_order?: number;
393
+ meta?: Record<string, any>;
394
+ parent?: number;
395
+ template?: string;
396
+ date?: string;
397
+ date_gmt?: string;
398
+ slug?: string;
399
+ status?: PostStatus;
400
+ password?: string;
401
+ }
402
+
403
+ export interface UpdatePageRequest extends Partial<CreatePageRequest> {
404
+ id: number;
405
+ }
406
+
407
+ export interface CreateUserRequest {
408
+ username: string;
409
+ email: string;
410
+ password: string;
411
+ name?: string;
412
+ first_name?: string;
413
+ last_name?: string;
414
+ nickname?: string;
415
+ slug?: string;
416
+ description?: string;
417
+ url?: string;
418
+ locale?: string;
419
+ roles?: UserRole[];
420
+ meta?: Record<string, any>;
421
+ }
422
+
423
+ export interface UpdateUserRequest extends Partial<Omit<CreateUserRequest, 'username'>> {
424
+ id: number;
425
+ }
426
+
427
+ export interface CreateCommentRequest {
428
+ post: number;
429
+ parent?: number;
430
+ content: string;
431
+ author?: number;
432
+ author_name?: string;
433
+ author_email?: string;
434
+ author_url?: string;
435
+ date?: string;
436
+ date_gmt?: string;
437
+ status?: 'approved' | 'unapproved';
438
+ meta?: Record<string, any>;
439
+ }
440
+
441
+ export interface UpdateCommentRequest extends Partial<Omit<CreateCommentRequest, 'status'>> {
442
+ id: number;
443
+ status?: 'approved' | 'unapproved' | 'spam' | 'trash';
444
+ }
445
+
446
+ export interface CreateCategoryRequest {
447
+ name: string;
448
+ description?: string;
449
+ slug?: string;
450
+ parent?: number;
451
+ meta?: Record<string, any>;
452
+ }
453
+
454
+ export interface UpdateCategoryRequest extends Partial<CreateCategoryRequest> {
455
+ id: number;
456
+ }
457
+
458
+ export interface CreateTagRequest {
459
+ name: string;
460
+ description?: string;
461
+ slug?: string;
462
+ meta?: Record<string, any>;
463
+ }
464
+
465
+ export interface UpdateTagRequest extends Partial<CreateTagRequest> {
466
+ id: number;
467
+ }
468
+
469
+ export interface UploadMediaRequest {
470
+ file_path: string;
471
+ title?: string;
472
+ alt_text?: string;
473
+ caption?: string;
474
+ description?: string;
475
+ post?: number;
476
+ status?: PostStatus;
477
+ author?: number;
478
+ date?: string;
479
+ date_gmt?: string;
480
+ }
481
+
482
+ export interface UpdateMediaRequest {
483
+ id: number;
484
+ title?: string;
485
+ alt_text?: string;
486
+ caption?: string;
487
+ description?: string;
488
+ post?: number;
489
+ status?: PostStatus;
490
+ author?: number;
491
+ }