@jgardner04/ghost-mcp-server 1.13.2 → 1.13.4

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 (34) hide show
  1. package/package.json +5 -13
  2. package/src/__tests__/helpers/mockGhostApi.js +36 -0
  3. package/src/__tests__/mcp_server.test.js +204 -117
  4. package/src/__tests__/mcp_server_pages.test.js +32 -18
  5. package/src/config/mcp-config.js +1 -1
  6. package/src/controllers/__tests__/tagController.test.js +12 -8
  7. package/src/controllers/tagController.js +2 -2
  8. package/src/errors/__tests__/index.test.js +3 -3
  9. package/src/errors/index.js +1 -1
  10. package/src/index.js +1 -1
  11. package/src/mcp_server.js +35 -31
  12. package/src/schemas/__tests__/postSchemas.test.js +19 -0
  13. package/src/schemas/__tests__/tagSchemas.test.js +1 -1
  14. package/src/schemas/common.js +2 -2
  15. package/src/schemas/memberSchemas.js +20 -8
  16. package/src/schemas/newsletterSchemas.js +10 -10
  17. package/src/schemas/pageSchemas.js +16 -11
  18. package/src/schemas/postSchemas.js +22 -15
  19. package/src/schemas/tagSchemas.js +12 -7
  20. package/src/schemas/tierSchemas.js +17 -8
  21. package/src/services/__tests__/ghostServiceImproved.members.test.js +31 -62
  22. package/src/services/__tests__/ghostServiceImproved.newsletters.test.js +66 -69
  23. package/src/services/__tests__/ghostServiceImproved.pages.test.js +77 -48
  24. package/src/services/__tests__/ghostServiceImproved.posts.test.js +69 -55
  25. package/src/services/__tests__/ghostServiceImproved.tags.test.js +29 -66
  26. package/src/services/__tests__/ghostServiceImproved.tiers.test.js +12 -62
  27. package/src/services/__tests__/memberService.test.js +0 -28
  28. package/src/services/__tests__/tierService.test.js +0 -28
  29. package/src/services/ghostServiceImproved.js +117 -299
  30. package/src/services/imageProcessingService.js +1 -1
  31. package/src/services/memberService.js +0 -13
  32. package/src/services/tierService.js +0 -13
  33. package/src/utils/__tests__/nqlSanitizer.test.js +38 -0
  34. package/src/utils/nqlSanitizer.js +11 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jgardner04/ghost-mcp-server",
3
- "version": "1.13.2",
3
+ "version": "1.13.4",
4
4
  "description": "A Model Context Protocol (MCP) server for interacting with Ghost CMS via the Admin API",
5
5
  "author": "Jonathan Gardner",
6
6
  "type": "module",
@@ -46,31 +46,23 @@
46
46
  "prepare": "husky"
47
47
  },
48
48
  "dependencies": {
49
- "@anthropic-ai/sdk": "^0.39.0",
50
49
  "@modelcontextprotocol/sdk": "^1.25.2",
51
50
  "@tryghost/admin-api": "^1.13.12",
52
51
  "axios": "^1.12.1",
53
- "boxen": "^7.1.1",
54
52
  "chalk": "^5.3.0",
55
53
  "cli-table3": "^0.6.3",
56
- "commander": "^11.1.0",
57
- "dotenv": "^16.5.0",
54
+ "dotenv": "^17.0.0",
58
55
  "express": "^5.2.1",
59
56
  "express-rate-limit": "^8.0.1",
60
57
  "express-validator": "^7.3.1",
61
58
  "figlet": "^1.7.0",
62
- "gradient-string": "^2.0.2",
63
59
  "helmet": "^8.1.0",
64
60
  "joi": "^18.0.1",
65
61
  "multer": "^2.0.2",
66
- "openai": "^4.86.1",
67
- "ora": "^7.0.1",
68
62
  "sanitize-html": "^2.17.0",
69
63
  "sharp": "^0.34.1",
70
- "uuid": "^11.1.0",
71
64
  "winston": "^3.17.0",
72
- "zod": "^3.25.76",
73
- "zod-to-json-schema": "^3.25.0"
65
+ "zod": "^4.0.0"
74
66
  },
75
67
  "keywords": [
76
68
  "ghost",
@@ -95,9 +87,9 @@
95
87
  ]
96
88
  },
97
89
  "devDependencies": {
98
- "@eslint/js": "^9.39.1",
90
+ "@eslint/js": "^10.0.0",
99
91
  "@vitest/coverage-v8": "^4.0.15",
100
- "eslint": "^9.39.1",
92
+ "eslint": "^10.0.0",
101
93
  "eslint-config-prettier": "^10.1.8",
102
94
  "eslint-plugin-prettier": "^5.5.4",
103
95
  "husky": "^9.1.7",
@@ -5,7 +5,11 @@ import { vi } from 'vitest';
5
5
  *
6
6
  * @param {Object} options - Configuration options for the mock
7
7
  * @param {Object} options.posts - Mock implementations for posts methods
8
+ * @param {Object} options.pages - Mock implementations for pages methods
8
9
  * @param {Object} options.tags - Mock implementations for tags methods
10
+ * @param {Object} options.members - Mock implementations for members methods
11
+ * @param {Object} options.newsletters - Mock implementations for newsletters methods
12
+ * @param {Object} options.tiers - Mock implementations for tiers methods
9
13
  * @param {Object} options.site - Mock implementations for site methods
10
14
  * @param {Object} options.images - Mock implementations for images methods
11
15
  * @returns {Object} Mock Ghost Admin API instance
@@ -32,6 +36,14 @@ export function createMockGhostApi(options = {}) {
32
36
  delete: vi.fn(),
33
37
  ...options.posts,
34
38
  },
39
+ pages: {
40
+ add: vi.fn(),
41
+ browse: vi.fn(),
42
+ read: vi.fn(),
43
+ edit: vi.fn(),
44
+ delete: vi.fn(),
45
+ ...options.pages,
46
+ },
35
47
  tags: {
36
48
  add: vi.fn(),
37
49
  browse: vi.fn(),
@@ -40,6 +52,30 @@ export function createMockGhostApi(options = {}) {
40
52
  delete: vi.fn(),
41
53
  ...options.tags,
42
54
  },
55
+ members: {
56
+ add: vi.fn(),
57
+ browse: vi.fn(),
58
+ read: vi.fn(),
59
+ edit: vi.fn(),
60
+ delete: vi.fn(),
61
+ ...options.members,
62
+ },
63
+ newsletters: {
64
+ add: vi.fn(),
65
+ browse: vi.fn(),
66
+ read: vi.fn(),
67
+ edit: vi.fn(),
68
+ delete: vi.fn(),
69
+ ...options.newsletters,
70
+ },
71
+ tiers: {
72
+ add: vi.fn(),
73
+ browse: vi.fn(),
74
+ read: vi.fn(),
75
+ edit: vi.fn(),
76
+ delete: vi.fn(),
77
+ ...options.tiers,
78
+ },
43
79
  site: {
44
80
  read: vi.fn(),
45
81
  ...options.site,