@antoinefamibelle/ghost-mcp 1.0.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 (106) hide show
  1. package/README.md +286 -0
  2. package/build/client.d.ts +8 -0
  3. package/build/client.d.ts.map +1 -0
  4. package/build/client.js +28 -0
  5. package/build/client.js.map +1 -0
  6. package/build/config.d.ts +6 -0
  7. package/build/config.d.ts.map +1 -0
  8. package/build/config.js +17 -0
  9. package/build/config.js.map +1 -0
  10. package/build/errors.d.ts +14 -0
  11. package/build/errors.d.ts.map +1 -0
  12. package/build/errors.js +34 -0
  13. package/build/errors.js.map +1 -0
  14. package/build/prompts/content-audit.d.ts +3 -0
  15. package/build/prompts/content-audit.d.ts.map +1 -0
  16. package/build/prompts/content-audit.js +74 -0
  17. package/build/prompts/content-audit.js.map +1 -0
  18. package/build/prompts/index.d.ts +3 -0
  19. package/build/prompts/index.d.ts.map +1 -0
  20. package/build/prompts/index.js +10 -0
  21. package/build/prompts/index.js.map +1 -0
  22. package/build/prompts/summarize-post.d.ts +3 -0
  23. package/build/prompts/summarize-post.d.ts.map +1 -0
  24. package/build/prompts/summarize-post.js +33 -0
  25. package/build/prompts/summarize-post.js.map +1 -0
  26. package/build/resources/blog.d.ts +3 -0
  27. package/build/resources/blog.d.ts.map +1 -0
  28. package/build/resources/blog.js +18 -0
  29. package/build/resources/blog.js.map +1 -0
  30. package/build/resources/index.d.ts +8 -0
  31. package/build/resources/index.d.ts.map +1 -0
  32. package/build/resources/index.js +18 -0
  33. package/build/resources/index.js.map +1 -0
  34. package/build/resources/members.d.ts +3 -0
  35. package/build/resources/members.d.ts.map +1 -0
  36. package/build/resources/members.js +23 -0
  37. package/build/resources/members.js.map +1 -0
  38. package/build/resources/newsletters.d.ts +3 -0
  39. package/build/resources/newsletters.d.ts.map +1 -0
  40. package/build/resources/newsletters.js +23 -0
  41. package/build/resources/newsletters.js.map +1 -0
  42. package/build/resources/offers.d.ts +3 -0
  43. package/build/resources/offers.d.ts.map +1 -0
  44. package/build/resources/offers.js +23 -0
  45. package/build/resources/offers.js.map +1 -0
  46. package/build/resources/posts.d.ts +3 -0
  47. package/build/resources/posts.d.ts.map +1 -0
  48. package/build/resources/posts.js +23 -0
  49. package/build/resources/posts.js.map +1 -0
  50. package/build/resources/tiers.d.ts +3 -0
  51. package/build/resources/tiers.d.ts.map +1 -0
  52. package/build/resources/tiers.js +26 -0
  53. package/build/resources/tiers.js.map +1 -0
  54. package/build/resources/users.d.ts +3 -0
  55. package/build/resources/users.d.ts.map +1 -0
  56. package/build/resources/users.js +23 -0
  57. package/build/resources/users.js.map +1 -0
  58. package/build/server.d.ts +3 -0
  59. package/build/server.d.ts.map +1 -0
  60. package/build/server.js +54 -0
  61. package/build/server.js.map +1 -0
  62. package/build/tools/invites.d.ts +3 -0
  63. package/build/tools/invites.d.ts.map +1 -0
  64. package/build/tools/invites.js +46 -0
  65. package/build/tools/invites.js.map +1 -0
  66. package/build/tools/members.d.ts +3 -0
  67. package/build/tools/members.d.ts.map +1 -0
  68. package/build/tools/members.js +93 -0
  69. package/build/tools/members.js.map +1 -0
  70. package/build/tools/newsletters.d.ts +3 -0
  71. package/build/tools/newsletters.d.ts.map +1 -0
  72. package/build/tools/newsletters.js +108 -0
  73. package/build/tools/newsletters.js.map +1 -0
  74. package/build/tools/offers.d.ts +3 -0
  75. package/build/tools/offers.d.ts.map +1 -0
  76. package/build/tools/offers.js +95 -0
  77. package/build/tools/offers.js.map +1 -0
  78. package/build/tools/posts.d.ts +3 -0
  79. package/build/tools/posts.d.ts.map +1 -0
  80. package/build/tools/posts.js +120 -0
  81. package/build/tools/posts.js.map +1 -0
  82. package/build/tools/roles.d.ts +3 -0
  83. package/build/tools/roles.d.ts.map +1 -0
  84. package/build/tools/roles.js +35 -0
  85. package/build/tools/roles.js.map +1 -0
  86. package/build/tools/tags.d.ts +3 -0
  87. package/build/tools/tags.d.ts.map +1 -0
  88. package/build/tools/tags.js +88 -0
  89. package/build/tools/tags.js.map +1 -0
  90. package/build/tools/tiers.d.ts +3 -0
  91. package/build/tools/tiers.d.ts.map +1 -0
  92. package/build/tools/tiers.js +96 -0
  93. package/build/tools/tiers.js.map +1 -0
  94. package/build/tools/users.d.ts +3 -0
  95. package/build/tools/users.d.ts.map +1 -0
  96. package/build/tools/users.js +72 -0
  97. package/build/tools/users.js.map +1 -0
  98. package/build/tools/webhooks.d.ts +3 -0
  99. package/build/tools/webhooks.d.ts.map +1 -0
  100. package/build/tools/webhooks.js +85 -0
  101. package/build/tools/webhooks.js.map +1 -0
  102. package/build/types/entities.d.ts +265 -0
  103. package/build/types/entities.d.ts.map +1 -0
  104. package/build/types/entities.js +4 -0
  105. package/build/types/entities.js.map +1 -0
  106. package/package.json +54 -0
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerWebhookTools(server: McpServer): void;
3
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0F5D"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerWebhookTools = registerWebhookTools;
4
+ const zod_1 = require("zod");
5
+ const client_js_1 = require("../client.js");
6
+ const errors_js_1 = require("../errors.js");
7
+ const GHOST_EVENTS = [
8
+ "site.changed",
9
+ "post.added", "post.deleted", "post.edited", "post.published",
10
+ "post.published.edited", "post.unpublished", "post.scheduled",
11
+ "post.unscheduled", "post.rescheduled",
12
+ "page.added", "page.deleted", "page.edited", "page.published",
13
+ "page.published.edited", "page.unpublished", "page.scheduled",
14
+ "page.unscheduled", "page.rescheduled",
15
+ "tag.added", "tag.edited", "tag.deleted",
16
+ "member.added", "member.edited", "member.deleted",
17
+ ];
18
+ function registerWebhookTools(server) {
19
+ server.tool("webhooks_browse", "List all webhooks configured on your Ghost site. Webhooks send HTTP POST requests to an external URL when Ghost events occur.", {
20
+ limit: zod_1.z.number().int().positive().optional().describe("Max results to return (default 15)"),
21
+ page: zod_1.z.number().int().positive().optional().describe("Pagination page number (1-based)"),
22
+ }, async (args) => {
23
+ try {
24
+ const webhooks = await (0, client_js_1.callGhost)(() => client_js_1.ghost.webhooks.browse(args));
25
+ return { content: [{ type: "text", text: JSON.stringify(webhooks, null, 2) }] };
26
+ }
27
+ catch (err) {
28
+ return (0, errors_js_1.formatErrorContent)(err);
29
+ }
30
+ });
31
+ server.tool("webhooks_read", "Fetch a single webhook by its ID.", {
32
+ id: zod_1.z.string().describe("Ghost webhook ID"),
33
+ }, async (args) => {
34
+ try {
35
+ const webhook = await (0, client_js_1.callGhost)(() => client_js_1.ghost.webhooks.read(args));
36
+ return { content: [{ type: "text", text: JSON.stringify(webhook, null, 2) }] };
37
+ }
38
+ catch (err) {
39
+ return (0, errors_js_1.formatErrorContent)(err);
40
+ }
41
+ });
42
+ server.tool("webhooks_add", `Create a new webhook. Ghost will POST to target_url whenever the specified event fires. Supported events: ${GHOST_EVENTS.join(", ")}.`, {
43
+ event: zod_1.z.string().describe(`Ghost event to listen for, e.g. 'post.published'. Supported: ${GHOST_EVENTS.join(", ")}`),
44
+ target_url: zod_1.z.string().url().describe("URL to send the webhook payload to (must be publicly reachable)"),
45
+ name: zod_1.z.string().optional().describe("Friendly name for this webhook"),
46
+ secret: zod_1.z.string().optional().describe("Shared secret used to sign webhook payloads (HMAC-SHA256)"),
47
+ api_version: zod_1.z.string().optional().describe("Ghost API version for the webhook payload, e.g. 'v5.0'"),
48
+ integration_id: zod_1.z.string().optional().describe("Integration ID to associate this webhook with"),
49
+ }, async (args) => {
50
+ try {
51
+ const webhook = await (0, client_js_1.callGhost)(() => client_js_1.ghost.webhooks.add(args));
52
+ return { content: [{ type: "text", text: JSON.stringify(webhook, null, 2) }] };
53
+ }
54
+ catch (err) {
55
+ return (0, errors_js_1.formatErrorContent)(err);
56
+ }
57
+ });
58
+ server.tool("webhooks_edit", "Update an existing webhook. Requires the webhook ID. Supply only the fields you want to change.", {
59
+ id: zod_1.z.string().describe("Ghost webhook ID (required)"),
60
+ event: zod_1.z.string().optional().describe("Updated Ghost event to listen for"),
61
+ target_url: zod_1.z.string().url().optional().describe("Updated target URL"),
62
+ name: zod_1.z.string().optional().describe("Updated friendly name"),
63
+ api_version: zod_1.z.string().optional().describe("Updated API version"),
64
+ }, async (args) => {
65
+ try {
66
+ const webhook = await (0, client_js_1.callGhost)(() => client_js_1.ghost.webhooks.edit(args));
67
+ return { content: [{ type: "text", text: JSON.stringify(webhook, null, 2) }] };
68
+ }
69
+ catch (err) {
70
+ return (0, errors_js_1.formatErrorContent)(err);
71
+ }
72
+ });
73
+ server.tool("webhooks_delete", "Delete a webhook by ID. Ghost will stop sending events to the target URL immediately.", {
74
+ id: zod_1.z.string().describe("Ghost webhook ID to delete"),
75
+ }, async (args) => {
76
+ try {
77
+ await (0, client_js_1.callGhost)(() => client_js_1.ghost.webhooks.delete(args));
78
+ return { content: [{ type: "text", text: `Webhook ${args.id} deleted successfully.` }] };
79
+ }
80
+ catch (err) {
81
+ return (0, errors_js_1.formatErrorContent)(err);
82
+ }
83
+ });
84
+ }
85
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,265 @@
1
+ export interface Label {
2
+ id?: string;
3
+ name: string;
4
+ slug?: string;
5
+ created_at?: string;
6
+ updated_at?: string;
7
+ }
8
+ export interface NewsletterRef {
9
+ id: string;
10
+ name?: string;
11
+ status?: string;
12
+ }
13
+ export interface Subscription {
14
+ id: string;
15
+ customer?: {
16
+ id: string;
17
+ name: string;
18
+ email: string;
19
+ };
20
+ plan?: {
21
+ id: string;
22
+ nickname: string;
23
+ interval: string;
24
+ amount: number;
25
+ currency: string;
26
+ };
27
+ status: string;
28
+ start_date: string;
29
+ default_payment_card_last4?: string;
30
+ cancel_at_period_end: boolean;
31
+ current_period_end: string;
32
+ price?: {
33
+ id: string;
34
+ price_id: string;
35
+ nickname: string;
36
+ amount: number;
37
+ interval: string;
38
+ type: string;
39
+ currency: string;
40
+ };
41
+ tier?: TierRef;
42
+ }
43
+ export interface TierRef {
44
+ id: string;
45
+ name?: string;
46
+ slug?: string;
47
+ }
48
+ export interface TierPrice {
49
+ id: string;
50
+ amount: number;
51
+ currency: string;
52
+ interval: "month" | "year";
53
+ tier_id: string;
54
+ stripe_price_id?: string;
55
+ }
56
+ export interface RoleRef {
57
+ id: string;
58
+ name: string;
59
+ description?: string;
60
+ }
61
+ export interface TagRef {
62
+ id?: string;
63
+ name?: string;
64
+ slug?: string;
65
+ }
66
+ export interface AuthorRef {
67
+ id?: string;
68
+ name?: string;
69
+ slug?: string;
70
+ email?: string;
71
+ }
72
+ export interface Post {
73
+ id: string;
74
+ title: string;
75
+ slug: string;
76
+ status: "draft" | "published" | "scheduled" | "sent";
77
+ visibility: string;
78
+ url: string;
79
+ canonical_url?: string | null;
80
+ html?: string | null;
81
+ lexical?: string | null;
82
+ plaintext?: string | null;
83
+ excerpt?: string | null;
84
+ feature_image?: string | null;
85
+ feature_image_alt?: string | null;
86
+ feature_image_caption?: string | null;
87
+ featured: boolean;
88
+ tags?: TagRef[];
89
+ authors?: AuthorRef[];
90
+ meta_title?: string | null;
91
+ meta_description?: string | null;
92
+ og_image?: string | null;
93
+ og_title?: string | null;
94
+ og_description?: string | null;
95
+ twitter_image?: string | null;
96
+ twitter_title?: string | null;
97
+ twitter_description?: string | null;
98
+ custom_template?: string | null;
99
+ published_at?: string | null;
100
+ created_at: string;
101
+ updated_at: string;
102
+ }
103
+ export interface User {
104
+ id: string;
105
+ name: string;
106
+ slug: string;
107
+ email: string;
108
+ profile_image?: string | null;
109
+ cover_image?: string | null;
110
+ bio?: string | null;
111
+ website?: string | null;
112
+ location?: string | null;
113
+ facebook?: string | null;
114
+ twitter?: string | null;
115
+ accessibility?: string | null;
116
+ status: "active" | "inactive" | "locked";
117
+ meta_title?: string | null;
118
+ meta_description?: string | null;
119
+ tour?: string | null;
120
+ last_seen?: string | null;
121
+ created_at: string;
122
+ updated_at: string;
123
+ roles: RoleRef[];
124
+ }
125
+ export interface Member {
126
+ id: string;
127
+ uuid?: string;
128
+ email: string;
129
+ name?: string | null;
130
+ note?: string | null;
131
+ geolocation?: string | null;
132
+ subscribed: boolean;
133
+ created_at: string;
134
+ updated_at: string;
135
+ labels: Label[];
136
+ newsletters: NewsletterRef[];
137
+ subscriptions: Subscription[];
138
+ avatar_image?: string;
139
+ email_count: number;
140
+ email_opened_count: number;
141
+ email_open_rate?: number | null;
142
+ last_seen_at?: string | null;
143
+ status: "free" | "paid" | "comped";
144
+ }
145
+ export interface Tag {
146
+ id: string;
147
+ name: string;
148
+ slug: string;
149
+ description?: string | null;
150
+ feature_image?: string | null;
151
+ visibility: "public" | "internal";
152
+ meta_title?: string | null;
153
+ meta_description?: string | null;
154
+ og_image?: string | null;
155
+ og_title?: string | null;
156
+ og_description?: string | null;
157
+ twitter_image?: string | null;
158
+ twitter_title?: string | null;
159
+ twitter_description?: string | null;
160
+ codeinjection_head?: string | null;
161
+ codeinjection_foot?: string | null;
162
+ canonical_url?: string | null;
163
+ accent_color?: string | null;
164
+ created_at: string;
165
+ updated_at: string;
166
+ count?: {
167
+ posts: number;
168
+ };
169
+ }
170
+ export interface Tier {
171
+ id: string;
172
+ name: string;
173
+ slug?: string;
174
+ description?: string | null;
175
+ type: "free" | "paid";
176
+ active: boolean;
177
+ welcome_page_url?: string | null;
178
+ created_at: string;
179
+ updated_at: string;
180
+ monthly_price?: TierPrice | null;
181
+ yearly_price?: TierPrice | null;
182
+ currency?: string | null;
183
+ benefits: string[];
184
+ visibility: "public" | "none";
185
+ trial_days?: number;
186
+ }
187
+ export interface Offer {
188
+ id: string;
189
+ name: string;
190
+ code: string;
191
+ display_title?: string | null;
192
+ display_description?: string | null;
193
+ type: "percent" | "fixed" | "trial";
194
+ status: "active" | "archived";
195
+ cadence: "month" | "year";
196
+ amount: number;
197
+ duration: "once" | "forever" | "repeating";
198
+ duration_in_months?: number | null;
199
+ currency?: string | null;
200
+ currency_restriction: boolean;
201
+ tier: TierRef;
202
+ redemption_count: number;
203
+ created_at: string;
204
+ }
205
+ export interface Newsletter {
206
+ id: string;
207
+ name: string;
208
+ description?: string | null;
209
+ slug?: string;
210
+ status: "active" | "archived";
211
+ visibility: "members" | "paid";
212
+ subscribe_on_signup: boolean;
213
+ sort_order: number;
214
+ header_image?: string | null;
215
+ show_header_icon: boolean;
216
+ show_header_title: boolean;
217
+ show_header_name: boolean;
218
+ show_feature_image: boolean;
219
+ title_font_category: "serif" | "sans_serif";
220
+ title_alignment?: string;
221
+ body_font_category: "serif" | "sans_serif";
222
+ show_badge: boolean;
223
+ show_latest_posts: boolean;
224
+ footer_content?: string | null;
225
+ sender_name?: string | null;
226
+ sender_email?: string | null;
227
+ sender_reply_to?: string | null;
228
+ subscription_count?: number;
229
+ created_at: string;
230
+ updated_at: string;
231
+ }
232
+ export interface Invite {
233
+ id: string;
234
+ role_id: string;
235
+ status: "pending" | "accepted" | "expired";
236
+ token?: string;
237
+ expires?: string;
238
+ email: string;
239
+ created_at: string;
240
+ updated_at: string;
241
+ role?: RoleRef;
242
+ }
243
+ export interface Role {
244
+ id: string;
245
+ name: string;
246
+ description?: string | null;
247
+ created_at: string;
248
+ updated_at: string;
249
+ }
250
+ export interface Webhook {
251
+ id: string;
252
+ event: string;
253
+ target_url: string;
254
+ name?: string | null;
255
+ secret?: string | null;
256
+ api_version?: string;
257
+ integration_id?: string | null;
258
+ status?: "available" | "failing";
259
+ last_triggered_at?: string | null;
260
+ last_triggered_status?: string | null;
261
+ last_triggered_error?: string | null;
262
+ created_at: string;
263
+ updated_at: string;
264
+ }
265
+ //# sourceMappingURL=entities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/types/entities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // ── Sub-types ──────────────────────────────────────────────────────────────────
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/types/entities.ts"],"names":[],"mappings":";AAAA,kFAAkF"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@antoinefamibelle/ghost-mcp",
3
+ "version": "1.0.0",
4
+ "description": "A Model Context Protocol (MCP) server for Ghost CMS — manage posts, members, newsletters, and more through Claude or any MCP-compatible LLM.",
5
+ "main": "build/server.js",
6
+ "bin": {
7
+ "ghost-mcp": "build/server.js"
8
+ },
9
+ "files": [
10
+ "build/",
11
+ "README.md"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "start": "node build/server.js",
16
+ "dev": "tsc --watch"
17
+ },
18
+ "keywords": [
19
+ "ghost-cms",
20
+ "ghost",
21
+ "blog",
22
+ "blog-cms",
23
+ "blog-mcp",
24
+ "blog-mcp-server",
25
+ "mcp",
26
+ "model-context-protocol",
27
+ "cms",
28
+ "claude",
29
+ "llm",
30
+ "mcp-server",
31
+ "mcp-server-ghost",
32
+ "mcp-server-ghost-cms",
33
+ "mcp-server-ghost-blog",
34
+ "mcp-server-ghost-blog-cms"
35
+ ],
36
+ "author": {
37
+ "name": "Antoine Famibelle",
38
+ "email": "antoinefamibelle@gmail.com",
39
+ "url": "https://antoinefamibelle.fr"
40
+ },
41
+ "license": "MIT",
42
+ "dependencies": {
43
+ "@modelcontextprotocol/sdk": "^1.10.1",
44
+ "@tryghost/admin-api": "^1.13.13",
45
+ "zod": "^3.24.3"
46
+ },
47
+ "devDependencies": {
48
+ "@types/node": "^22.0.0",
49
+ "typescript": "^5.7.0"
50
+ },
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ }
54
+ }