mcp-ghost-optimized 1.0.0 → 1.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/README.md CHANGED
@@ -8,14 +8,47 @@ Le MCP officiel `@fanyangmeng/ghost-mcp` retourne ~14K tokens par appel. Ce MCP
8
8
 
9
9
  ## Installation
10
10
 
11
+ ### Via Claude Code CLI
12
+
11
13
  ```bash
14
+ # Installation globale
15
+ claude mcp add ghost-optimized -e GHOST_URL=https://votre-blog.ghost.io -e GHOST_ADMIN_API_KEY=id:secret -- npx -y mcp-ghost-optimized
16
+
17
+ # Installation dans un projet spécifique
18
+ claude mcp add ghost-optimized -s project -e GHOST_URL=https://votre-blog.ghost.io -e GHOST_ADMIN_API_KEY=id:secret -- npx -y mcp-ghost-optimized
19
+ ```
20
+
21
+ > Le nom `ghost-optimized` évite les conflits si vous avez déjà un MCP Ghost installé.
22
+
23
+ ### Via `.mcp.json` (manuel)
24
+
25
+ Ajouter dans votre `.mcp.json` :
26
+
27
+ ```json
28
+ {
29
+ "mcpServers": {
30
+ "ghost-optimized": {
31
+ "command": "npx",
32
+ "args": ["-y", "mcp-ghost-optimized"],
33
+ "env": {
34
+ "GHOST_URL": "https://votre-blog.ghost.io",
35
+ "GHOST_ADMIN_API_KEY": "id:secret"
36
+ }
37
+ }
38
+ }
39
+ }
40
+ ```
41
+
42
+ ### Installation locale
43
+
44
+ ```bash
45
+ git clone https://github.com/Mathunterix/mcp-ghost-perso.git
46
+ cd mcp-ghost-perso
12
47
  npm install
13
48
  npm run build
14
49
  ```
15
50
 
16
- ## Configuration
17
-
18
- Ajouter dans `.mcp.json` :
51
+ Puis dans `.mcp.json` :
19
52
 
20
53
  ```json
21
54
  {
@@ -25,14 +58,15 @@ Ajouter dans `.mcp.json` :
25
58
  "args": ["/chemin/vers/mcp-ghost-perso/dist/index.js"],
26
59
  "env": {
27
60
  "GHOST_URL": "https://votre-blog.ghost.io",
28
- "GHOST_ADMIN_API_KEY": "id:secret",
29
- "GHOST_DEFAULT_TEMPLATE": "custom-template-perso"
61
+ "GHOST_ADMIN_API_KEY": "id:secret"
30
62
  }
31
63
  }
32
64
  }
33
65
  }
34
66
  ```
35
67
 
68
+ ## Configuration
69
+
36
70
  ### Variables d'environnement
37
71
 
38
72
  | Variable | Obligatoire | Description |
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsDpE,wBAAgB,YAAY,IAAI,SAAS,CA2cxC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6DpE,wBAAgB,YAAY,IAAI,SAAS,CAuvBxC"}
package/dist/server.js CHANGED
@@ -8,6 +8,7 @@ import { z } from "zod";
8
8
  import { GhostClient } from "./api/client.js";
9
9
  import { POST_FIELDS, TAG_FIELDS } from "./utils/fields.js";
10
10
  import { htmlToPlaintext } from "./utils/html.js";
11
+ import { extractStructure, findSection, appendToSection, replaceSection, generateDiffPreview, } from "./utils/sections.js";
11
12
  export function createServer() {
12
13
  const server = new McpServer({
13
14
  name: "ghost-optimized",
@@ -270,6 +271,222 @@ export function createServer() {
270
271
  };
271
272
  });
272
273
  // ============================================================
274
+ // POSTS SECTION TOOLS (Granular Editing)
275
+ // ============================================================
276
+ /**
277
+ * posts_get_structure - Get the structure of a post's sections
278
+ */
279
+ server.tool("posts_get_structure", "Get the structure of a post showing all sections (headings) with word counts. Use this to understand the post layout before editing specific sections.", {
280
+ id: z.string().optional().describe("Post ID"),
281
+ slug: z.string().optional().describe("Post slug (alternative to ID)"),
282
+ }, async ({ id, slug }) => {
283
+ if (!id && !slug) {
284
+ throw new Error("Either id or slug must be provided");
285
+ }
286
+ const postId = id || `slug/${slug}`;
287
+ const result = await client.read("posts", postId, {
288
+ fields: ["id", "title", "slug", "html"],
289
+ formats: ["html"],
290
+ });
291
+ const post = result.posts?.[0];
292
+ if (!post?.html) {
293
+ throw new Error("Post not found or has no content");
294
+ }
295
+ const sections = extractStructure(post.html);
296
+ return {
297
+ content: [
298
+ {
299
+ type: "text",
300
+ text: JSON.stringify({
301
+ id: post.id,
302
+ title: post.title,
303
+ slug: post.slug,
304
+ sections: sections.map((s) => ({
305
+ level: s.level,
306
+ heading: s.text,
307
+ wordCount: s.wordCount,
308
+ hasCards: s.hasCards,
309
+ })),
310
+ }, null, 2),
311
+ },
312
+ ],
313
+ };
314
+ });
315
+ /**
316
+ * posts_read_section - Read a specific section by heading
317
+ */
318
+ server.tool("posts_read_section", "Read a specific section of a post by heading text. Uses fuzzy matching (ignores numbering like '2.' or 'II.'). Returns an error listing available headings if no match or multiple matches found.", {
319
+ id: z.string().optional().describe("Post ID"),
320
+ slug: z.string().optional().describe("Post slug (alternative to ID)"),
321
+ heading: z
322
+ .string()
323
+ .describe("Heading text to find (fuzzy match, e.g., 'Supabase' matches '2. Supabase')"),
324
+ }, async ({ id, slug, heading }) => {
325
+ if (!id && !slug) {
326
+ throw new Error("Either id or slug must be provided");
327
+ }
328
+ const postId = id || `slug/${slug}`;
329
+ const result = await client.read("posts", postId, {
330
+ fields: ["id", "title", "slug", "html"],
331
+ formats: ["html"],
332
+ });
333
+ const post = result.posts?.[0];
334
+ if (!post?.html) {
335
+ throw new Error("Post not found or has no content");
336
+ }
337
+ const { section, content } = findSection(post.html, heading);
338
+ return {
339
+ content: [
340
+ {
341
+ type: "text",
342
+ text: JSON.stringify({
343
+ postId: post.id,
344
+ postTitle: post.title,
345
+ section: {
346
+ heading: section.text,
347
+ level: section.level,
348
+ wordCount: section.wordCount,
349
+ hasCards: section.hasCards,
350
+ },
351
+ html: content,
352
+ }, null, 2),
353
+ },
354
+ ],
355
+ };
356
+ });
357
+ /**
358
+ * posts_append_to_section - Append content to a section
359
+ */
360
+ server.tool("posts_append_to_section", "Append HTML content to the end of a specific section (before the next heading). Non-destructive operation - only adds content.", {
361
+ id: z.string().optional().describe("Post ID"),
362
+ slug: z.string().optional().describe("Post slug (alternative to ID)"),
363
+ heading: z.string().describe("Heading text to find (fuzzy match)"),
364
+ html: z.string().describe("HTML content to append to the section"),
365
+ }, async ({ id, slug, heading, html: newHtml }) => {
366
+ if (!id && !slug) {
367
+ throw new Error("Either id or slug must be provided");
368
+ }
369
+ const postId = id || `slug/${slug}`;
370
+ // Get current post
371
+ const result = await client.read("posts", postId, {
372
+ fields: ["id", "title", "slug", "html", "updated_at"],
373
+ formats: ["html"],
374
+ });
375
+ const post = result.posts?.[0];
376
+ if (!post?.html) {
377
+ throw new Error("Post not found or has no content");
378
+ }
379
+ // Append content
380
+ const updatedHtml = appendToSection(post.html, heading, newHtml);
381
+ // Save
382
+ const editResult = await client.edit("posts", post.id, {
383
+ html: updatedHtml,
384
+ });
385
+ const updatedPost = editResult.posts[0];
386
+ return {
387
+ content: [
388
+ {
389
+ type: "text",
390
+ text: JSON.stringify({
391
+ success: true,
392
+ id: updatedPost.id,
393
+ title: updatedPost.title,
394
+ slug: updatedPost.slug,
395
+ updated_at: updatedPost.updated_at,
396
+ message: `Content appended to section "${heading}"`,
397
+ }, null, 2),
398
+ },
399
+ ],
400
+ };
401
+ });
402
+ /**
403
+ * posts_replace_section - Replace a section's content
404
+ */
405
+ server.tool("posts_replace_section", "Replace the content of a specific section (keeps the heading). By default returns a preview with word count diff. Set confirm=true to save changes.", {
406
+ id: z.string().optional().describe("Post ID"),
407
+ slug: z.string().optional().describe("Post slug (alternative to ID)"),
408
+ heading: z.string().describe("Heading text to find (fuzzy match)"),
409
+ html: z.string().describe("New HTML content for the section"),
410
+ preview: z
411
+ .boolean()
412
+ .default(true)
413
+ .describe("If true, returns diff preview without saving (default: true)"),
414
+ confirm: z
415
+ .boolean()
416
+ .default(false)
417
+ .describe("Set to true to actually save the changes"),
418
+ }, async ({ id, slug, heading, html: newHtml, preview, confirm }) => {
419
+ if (!id && !slug) {
420
+ throw new Error("Either id or slug must be provided");
421
+ }
422
+ const postId = id || `slug/${slug}`;
423
+ // Get current post
424
+ const result = await client.read("posts", postId, {
425
+ fields: ["id", "title", "slug", "html", "updated_at"],
426
+ formats: ["html"],
427
+ });
428
+ const post = result.posts?.[0];
429
+ if (!post?.html) {
430
+ throw new Error("Post not found or has no content");
431
+ }
432
+ // Find the section to get current content
433
+ const { section, content: oldContent } = findSection(post.html, heading);
434
+ // Generate new HTML
435
+ const updatedHtml = replaceSection(post.html, heading, newHtml);
436
+ // Generate diff preview
437
+ const diff = generateDiffPreview(oldContent, newHtml);
438
+ // Preview mode - return diff without saving
439
+ if (preview && !confirm) {
440
+ return {
441
+ content: [
442
+ {
443
+ type: "text",
444
+ text: JSON.stringify({
445
+ preview: true,
446
+ postId: post.id,
447
+ postTitle: post.title,
448
+ section: section.text,
449
+ diff: {
450
+ oldWordCount: diff.oldWordCount,
451
+ newWordCount: diff.newWordCount,
452
+ changePercent: `${diff.changePercent > 0 ? "+" : ""}${diff.changePercent}%`,
453
+ },
454
+ warning: diff.warning,
455
+ message: "Preview only - set confirm=true to save changes",
456
+ }, null, 2),
457
+ },
458
+ ],
459
+ };
460
+ }
461
+ // Confirm mode - save changes
462
+ const editResult = await client.edit("posts", post.id, {
463
+ html: updatedHtml,
464
+ });
465
+ const updatedPost = editResult.posts[0];
466
+ return {
467
+ content: [
468
+ {
469
+ type: "text",
470
+ text: JSON.stringify({
471
+ success: true,
472
+ id: updatedPost.id,
473
+ title: updatedPost.title,
474
+ slug: updatedPost.slug,
475
+ updated_at: updatedPost.updated_at,
476
+ section: section.text,
477
+ diff: {
478
+ oldWordCount: diff.oldWordCount,
479
+ newWordCount: diff.newWordCount,
480
+ changePercent: `${diff.changePercent > 0 ? "+" : ""}${diff.changePercent}%`,
481
+ },
482
+ warning: diff.warning,
483
+ message: `Section "${heading}" replaced successfully`,
484
+ }, null, 2),
485
+ },
486
+ ],
487
+ };
488
+ });
489
+ // ============================================================
273
490
  // TAGS TOOLS
274
491
  // ============================================================
275
492
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Section parsing and manipulation utilities for Ghost posts
3
+ *
4
+ * Provides granular editing capabilities by extracting, reading, and modifying
5
+ * individual sections identified by their headings.
6
+ */
7
+ export type Section = {
8
+ level: number;
9
+ text: string;
10
+ normalizedText: string;
11
+ wordCount: number;
12
+ startIndex: number;
13
+ endIndex: number;
14
+ hasCards: boolean;
15
+ };
16
+ export type SectionMatch = {
17
+ section: Section;
18
+ content: string;
19
+ };
20
+ /**
21
+ * Normalize heading text for fuzzy matching
22
+ * "2. Supabase" → "supabase"
23
+ * "II. Introduction" → "introduction"
24
+ */
25
+ export declare function normalizeHeadingText(text: string): string;
26
+ /**
27
+ * Count words in HTML content
28
+ * Ghost Cards (kg-* elements) are counted as 1 unit each
29
+ */
30
+ export declare function countWords(html: string): number;
31
+ /**
32
+ * Extract structure of all sections from HTML
33
+ */
34
+ export declare function extractStructure(html: string): Section[];
35
+ /**
36
+ * Find a section by heading text (fuzzy match)
37
+ *
38
+ * @throws Error if no match or multiple matches found (with helpful message)
39
+ */
40
+ export declare function findSection(html: string, heading: string): SectionMatch;
41
+ /**
42
+ * Append content to the end of a section (before next heading)
43
+ */
44
+ export declare function appendToSection(html: string, heading: string, newContent: string): string;
45
+ /**
46
+ * Replace the content of a section (keeping the heading)
47
+ */
48
+ export declare function replaceSection(html: string, heading: string, newContent: string): string;
49
+ /**
50
+ * Validate HTML structure (basic checks)
51
+ */
52
+ export declare function validateHtml(html: string): {
53
+ valid: boolean;
54
+ errors: string[];
55
+ };
56
+ /**
57
+ * Generate a simple diff preview between old and new content
58
+ */
59
+ export declare function generateDiffPreview(oldContent: string, newContent: string): {
60
+ oldWordCount: number;
61
+ newWordCount: number;
62
+ changePercent: number;
63
+ warning: string | null;
64
+ };
65
+ //# sourceMappingURL=sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../src/utils/sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiB/C;AA8BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAiCxD;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAkCvE;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA8BA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAoBA"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Section parsing and manipulation utilities for Ghost posts
3
+ *
4
+ * Provides granular editing capabilities by extracting, reading, and modifying
5
+ * individual sections identified by their headings.
6
+ */
7
+ import * as cheerio from "cheerio";
8
+ // ============================================================
9
+ // NORMALIZATION & UTILITIES
10
+ // ============================================================
11
+ /**
12
+ * Normalize heading text for fuzzy matching
13
+ * "2. Supabase" → "supabase"
14
+ * "II. Introduction" → "introduction"
15
+ */
16
+ export function normalizeHeadingText(text) {
17
+ return (text
18
+ // Remove leading numbers: "2. Title" → "Title"
19
+ .replace(/^\d+\.\s*/, "")
20
+ // Remove Roman numerals: "II. Title" → "Title"
21
+ .replace(/^[IVXLCDM]+\.\s*/i, "")
22
+ // Remove leading/trailing whitespace
23
+ .trim()
24
+ // Lowercase for comparison
25
+ .toLowerCase());
26
+ }
27
+ /**
28
+ * Count words in HTML content
29
+ * Ghost Cards (kg-* elements) are counted as 1 unit each
30
+ */
31
+ export function countWords(html) {
32
+ const $ = cheerio.load(html);
33
+ // Count Ghost Cards as 1 word each
34
+ let cardCount = 0;
35
+ $("[class*='kg-']").each(() => {
36
+ cardCount++;
37
+ });
38
+ // Remove Ghost Cards from counting
39
+ $("[class*='kg-']").remove();
40
+ // Get text and count words
41
+ const text = $.text().trim();
42
+ const words = text.split(/\s+/).filter((w) => w.length > 0);
43
+ return words.length + cardCount;
44
+ }
45
+ /**
46
+ * Get all heading elements in document order
47
+ */
48
+ function getHeadingPositions(html) {
49
+ const headings = [];
50
+ const regex = /<h([1-6])[^>]*>([\s\S]*?)<\/h\1>/gi;
51
+ let match;
52
+ while ((match = regex.exec(html)) !== null) {
53
+ const level = parseInt(match[1], 10);
54
+ // Strip HTML tags from heading text
55
+ const text = match[2].replace(/<[^>]+>/g, "").trim();
56
+ headings.push({
57
+ level,
58
+ text,
59
+ index: match.index,
60
+ });
61
+ }
62
+ return headings;
63
+ }
64
+ // ============================================================
65
+ // STRUCTURE EXTRACTION
66
+ // ============================================================
67
+ /**
68
+ * Extract structure of all sections from HTML
69
+ */
70
+ export function extractStructure(html) {
71
+ const headings = getHeadingPositions(html);
72
+ const sections = [];
73
+ for (let i = 0; i < headings.length; i++) {
74
+ const current = headings[i];
75
+ const next = headings[i + 1];
76
+ const startIndex = current.index;
77
+ const endIndex = next ? next.index : html.length;
78
+ const sectionHtml = html.slice(startIndex, endIndex);
79
+ // Check for Ghost Cards
80
+ const hasCards = /class="[^"]*kg-/.test(sectionHtml);
81
+ // Count words in section (excluding heading itself)
82
+ const $ = cheerio.load(sectionHtml);
83
+ $("h1, h2, h3, h4, h5, h6").first().remove();
84
+ const contentHtml = $.html();
85
+ const wordCount = countWords(contentHtml);
86
+ sections.push({
87
+ level: current.level,
88
+ text: current.text,
89
+ normalizedText: normalizeHeadingText(current.text),
90
+ wordCount,
91
+ startIndex,
92
+ endIndex,
93
+ hasCards,
94
+ });
95
+ }
96
+ return sections;
97
+ }
98
+ // ============================================================
99
+ // SECTION FINDING
100
+ // ============================================================
101
+ /**
102
+ * Find a section by heading text (fuzzy match)
103
+ *
104
+ * @throws Error if no match or multiple matches found (with helpful message)
105
+ */
106
+ export function findSection(html, heading) {
107
+ const sections = extractStructure(html);
108
+ const normalizedSearch = normalizeHeadingText(heading);
109
+ // Find matches
110
+ const matches = sections.filter((s) => s.normalizedText === normalizedSearch ||
111
+ s.normalizedText.includes(normalizedSearch) ||
112
+ normalizedSearch.includes(s.normalizedText));
113
+ if (matches.length === 0) {
114
+ const available = sections
115
+ .map((s) => ` - "${s.text}" (h${s.level})`)
116
+ .join("\n");
117
+ throw new Error(`No section found matching "${heading}".\nAvailable headings:\n${available}`);
118
+ }
119
+ if (matches.length > 1) {
120
+ const matchList = matches
121
+ .map((s) => ` - "${s.text}" (h${s.level}, ${s.wordCount} words)`)
122
+ .join("\n");
123
+ throw new Error(`Multiple sections match "${heading}" (${matches.length} found).\nPlease be more specific:\n${matchList}`);
124
+ }
125
+ const section = matches[0];
126
+ const content = html.slice(section.startIndex, section.endIndex);
127
+ return { section, content };
128
+ }
129
+ // ============================================================
130
+ // SECTION MANIPULATION
131
+ // ============================================================
132
+ /**
133
+ * Append content to the end of a section (before next heading)
134
+ */
135
+ export function appendToSection(html, heading, newContent) {
136
+ const { section } = findSection(html, heading);
137
+ // Insert new content just before the end of the section
138
+ const before = html.slice(0, section.endIndex);
139
+ const after = html.slice(section.endIndex);
140
+ // Ensure newline separation
141
+ const separator = before.endsWith("\n") ? "" : "\n";
142
+ return before + separator + newContent + after;
143
+ }
144
+ /**
145
+ * Replace the content of a section (keeping the heading)
146
+ */
147
+ export function replaceSection(html, heading, newContent) {
148
+ const { section } = findSection(html, heading);
149
+ // Find end of heading tag
150
+ const sectionHtml = html.slice(section.startIndex, section.endIndex);
151
+ const headingEndMatch = sectionHtml.match(/<\/h[1-6]>/i);
152
+ if (!headingEndMatch || headingEndMatch.index === undefined) {
153
+ throw new Error(`Could not find heading end tag in section "${heading}"`);
154
+ }
155
+ const headingEndIndex = section.startIndex + headingEndMatch.index + headingEndMatch[0].length;
156
+ // Build new HTML
157
+ const before = html.slice(0, headingEndIndex);
158
+ const after = html.slice(section.endIndex);
159
+ // Ensure proper spacing
160
+ const prefix = newContent.startsWith("\n") ? "" : "\n";
161
+ const suffix = newContent.endsWith("\n") ? "" : "\n";
162
+ return before + prefix + newContent + suffix + after;
163
+ }
164
+ /**
165
+ * Validate HTML structure (basic checks)
166
+ */
167
+ export function validateHtml(html) {
168
+ const errors = [];
169
+ try {
170
+ const $ = cheerio.load(html);
171
+ // Check for unclosed tags (basic)
172
+ const openTags = (html.match(/<[a-z][^/>]*>/gi) || []).length;
173
+ const closeTags = (html.match(/<\/[a-z]+>/gi) || []).length;
174
+ if (Math.abs(openTags - closeTags) > 5) {
175
+ errors.push(`Potential unclosed tags: ${openTags} open, ${closeTags} close`);
176
+ }
177
+ // Check for empty paragraphs
178
+ $("p:empty").each(() => {
179
+ errors.push("Empty paragraph found");
180
+ });
181
+ }
182
+ catch (err) {
183
+ errors.push(`HTML parsing error: ${err instanceof Error ? err.message : String(err)}`);
184
+ }
185
+ return {
186
+ valid: errors.length === 0,
187
+ errors,
188
+ };
189
+ }
190
+ /**
191
+ * Generate a simple diff preview between old and new content
192
+ */
193
+ export function generateDiffPreview(oldContent, newContent) {
194
+ const oldWordCount = countWords(oldContent);
195
+ const newWordCount = countWords(newContent);
196
+ const changePercent = oldWordCount > 0
197
+ ? Math.round(((newWordCount - oldWordCount) / oldWordCount) * 100)
198
+ : 100;
199
+ let warning = null;
200
+ if (changePercent < -30) {
201
+ warning = `Content reduction of ${Math.abs(changePercent)}% detected. Please confirm this is intentional.`;
202
+ }
203
+ return {
204
+ oldWordCount,
205
+ newWordCount,
206
+ changePercent,
207
+ warning,
208
+ };
209
+ }
210
+ //# sourceMappingURL=sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/utils/sections.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-ghost-optimized",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "MCP server for Ghost CMS with optimized field projection - reduces token usage by 90-98%",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -41,6 +41,7 @@
41
41
  "license": "MIT",
42
42
  "dependencies": {
43
43
  "@modelcontextprotocol/sdk": "^1.12.0",
44
+ "cheerio": "^1.0.0",
44
45
  "zod": "^3.25.0"
45
46
  },
46
47
  "devDependencies": {