@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.
- package/package.json +5 -13
- package/src/__tests__/helpers/mockGhostApi.js +36 -0
- package/src/__tests__/mcp_server.test.js +204 -117
- package/src/__tests__/mcp_server_pages.test.js +32 -18
- package/src/config/mcp-config.js +1 -1
- package/src/controllers/__tests__/tagController.test.js +12 -8
- package/src/controllers/tagController.js +2 -2
- package/src/errors/__tests__/index.test.js +3 -3
- package/src/errors/index.js +1 -1
- package/src/index.js +1 -1
- package/src/mcp_server.js +35 -31
- package/src/schemas/__tests__/postSchemas.test.js +19 -0
- package/src/schemas/__tests__/tagSchemas.test.js +1 -1
- package/src/schemas/common.js +2 -2
- package/src/schemas/memberSchemas.js +20 -8
- package/src/schemas/newsletterSchemas.js +10 -10
- package/src/schemas/pageSchemas.js +16 -11
- package/src/schemas/postSchemas.js +22 -15
- package/src/schemas/tagSchemas.js +12 -7
- package/src/schemas/tierSchemas.js +17 -8
- package/src/services/__tests__/ghostServiceImproved.members.test.js +31 -62
- package/src/services/__tests__/ghostServiceImproved.newsletters.test.js +66 -69
- package/src/services/__tests__/ghostServiceImproved.pages.test.js +77 -48
- package/src/services/__tests__/ghostServiceImproved.posts.test.js +69 -55
- package/src/services/__tests__/ghostServiceImproved.tags.test.js +29 -66
- package/src/services/__tests__/ghostServiceImproved.tiers.test.js +12 -62
- package/src/services/__tests__/memberService.test.js +0 -28
- package/src/services/__tests__/tierService.test.js +0 -28
- package/src/services/ghostServiceImproved.js +117 -299
- package/src/services/imageProcessingService.js +1 -1
- package/src/services/memberService.js +0 -13
- package/src/services/tierService.js +0 -13
- package/src/utils/__tests__/nqlSanitizer.test.js +38 -0
- 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.
|
|
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
|
-
"
|
|
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": "^
|
|
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": "^
|
|
90
|
+
"@eslint/js": "^10.0.0",
|
|
99
91
|
"@vitest/coverage-v8": "^4.0.15",
|
|
100
|
-
"eslint": "^
|
|
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,
|