@se-studio/contentful-cms 1.0.48 → 1.0.50

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @se-studio/contentful-cms Changelog
2
2
 
3
+ ## 1.0.49
4
+
5
+ ### Patch Changes
6
+
7
+ - Version bump: patch for changed packages
8
+
3
9
  ## 1.0.48
4
10
 
5
11
  ### Patch Changes
package/INSTALL.md CHANGED
@@ -6,74 +6,37 @@ This guide sets up Claude Desktop so it can read and edit your Contentful conten
6
6
 
7
7
  ## What you'll need
8
8
 
9
- - **Contentful Space ID** — a short code that identifies your project in Contentful
10
- - **Contentful Management Token** — a secret key that gives Claude permission to edit content
11
- - **Staging site URL** — the Vercel preview URL for your project (e.g. `https://my-project.vercel.app`)
12
- - **Vercel bypass token** *(optional)* — only needed if your staging site has deployment protection enabled
13
- - **Node.js** — required for screenshot support. Download the LTS version from [nodejs.org](https://nodejs.org) if you don't have it
9
+ - **Contentful Management Token** — a secret key that gives Claude permission to edit content (the setup wizard will discover your Space ID and environments automatically)
10
+ - **Node.js** — required to run the setup wizard and for screenshot support. Download the LTS version from [nodejs.org](https://nodejs.org) if you don't have it
14
11
 
15
12
  ---
16
13
 
17
- ## Step 1 — Get your Contentful details
18
-
19
- ### Space ID
14
+ ## Step 1 — Get your Contentful Management Token
20
15
 
21
16
  1. Log in to [contentful.com](https://app.contentful.com)
22
- 2. Click **Settings** in the top menu, then **General settings**
23
- 3. Copy the **Space ID** — it looks like `abc123xyz`
24
-
25
- ### Management Token
26
-
27
- 1. Click **Settings** → **API keys**
28
- 2. Click the **Content management tokens** tab
29
- 3. Click **Generate personal token**
30
- 4. Give it a name (e.g. `Claude Desktop`) and click **Generate**
31
- 5. **Copy the token now** — you won't be able to see it again
17
+ 2. Click **Settings** in the top menu **API keys**
18
+ 3. Click the **Content management tokens** tab
19
+ 4. Click **Generate personal token**
20
+ 5. Give it a name (e.g. `Claude Desktop`) and click **Generate**
21
+ 6. **Copy the token now** — you won't be able to see it again
32
22
 
33
23
  ---
34
24
 
35
- ## Step 2 — Run the setup script
36
-
37
- The setup script will ask for your details and configure everything automatically.
38
-
39
- ### Windows
40
-
41
- Open **PowerShell** (search for it in the Start menu) and paste this command:
42
-
43
- ```powershell
44
- powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\Downloads\install.ps1"
45
- ```
46
-
47
- > First, download [install.ps1](./install.ps1) and save it to your Downloads folder.
48
-
49
- ### Mac
50
-
51
- Open **Terminal** (search for it in Spotlight) and paste this command:
52
-
53
- ```bash
54
- bash ~/Downloads/install.sh
55
- ```
56
-
57
- > First, download [install.sh](./install.sh) and save it to your Downloads folder.
58
-
59
- ### Linux
25
+ ## Step 2 — Run the setup wizard
60
26
 
61
- Open a terminal and paste this command:
27
+ Open a terminal and run:
62
28
 
63
29
  ```bash
64
- bash ~/Downloads/install.sh
30
+ npx @se-studio/contentful-cms@latest setup
65
31
  ```
66
32
 
67
- > The script automatically detects Linux and uses the correct config location (`~/.config/Claude/`).
68
-
69
- ---
33
+ The wizard will:
34
+ 1. Ask for your management token (input is hidden)
35
+ 2. Automatically discover which Contentful spaces and environments your token has access to
36
+ 3. Ask for a short project name and an optional staging URL
37
+ 4. Write your config file and update Claude Desktop automatically
70
38
 
71
- The script will ask you three things:
72
- 1. A short name for your project (e.g. `my-project`) — no spaces
73
- 2. Your Contentful Space ID
74
- 3. Your Contentful Management Token
75
-
76
- It will then create your config file and update Claude Desktop automatically.
39
+ That's it no need to find your Space ID manually.
77
40
 
78
41
  ---
79
42
 
@@ -96,7 +59,19 @@ Claude should respond with the space name you chose. If it does, you're all set.
96
59
 
97
60
  ---
98
61
 
99
- ## Manual setup (if you'd prefer not to use the script)
62
+ ## Adding more spaces later
63
+
64
+ Run the wizard again for each additional space:
65
+
66
+ ```bash
67
+ npx @se-studio/contentful-cms@latest setup
68
+ ```
69
+
70
+ Each run merges a new space into your existing config — it won't overwrite spaces you've already set up.
71
+
72
+ ---
73
+
74
+ ## Manual setup (if you'd prefer not to use the wizard)
100
75
 
101
76
  <details>
102
77
  <summary>Click to expand manual instructions</summary>
@@ -123,6 +98,8 @@ Create a file called `.contentful-cms.json` in your home folder:
123
98
 
124
99
  Replace `my-project` (both places), `YOUR_SPACE_ID`, and `YOUR_MANAGEMENT_TOKEN` with your values.
125
100
 
101
+ Your Space ID is in Contentful under **Settings → General settings**.
102
+
126
103
  **Windows tip:** In Notepad's Save dialog, set "Save as type" to **All Files** so it doesn't add `.txt`.
127
104
 
128
105
  ### Configure Claude Desktop
package/README.md CHANGED
@@ -23,7 +23,15 @@ pnpm build
23
23
 
24
24
  ### Claude Desktop
25
25
 
26
- Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
26
+ The quickest way to set up Claude Desktop is the interactive setup wizard:
27
+
28
+ ```bash
29
+ npx @se-studio/contentful-cms@latest setup
30
+ ```
31
+
32
+ It discovers your Contentful spaces and environments automatically from your management token, writes `~/.contentful-cms.json`, and updates the Claude Desktop config. See [INSTALL.md](./INSTALL.md) for a full walkthrough.
33
+
34
+ **Manual config** — if you'd prefer to configure by hand, add this to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
27
35
 
28
36
  ```json
29
37
  {
@@ -31,17 +39,13 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
31
39
  "cms-edit": {
32
40
  "command": "npx",
33
41
  "args": ["-y", "@se-studio/contentful-cms"],
34
- "cwd": "/path/to/your/project",
35
- "env": {
36
- "CMS_EDIT_TOKEN_OM1": "your-management-token"
37
- }
42
+ "cwd": "/path/to/your/project"
38
43
  }
39
44
  }
40
45
  }
41
46
  ```
42
47
 
43
48
  - `cwd` must point to the directory containing your `.contentful-cms.json` (or omit `cwd` and place the file in your home directory — `~/.contentful-cms.json` on macOS/Linux, `C:\Users\<you>\.contentful-cms.json` on Windows).
44
- - Add one `CMS_EDIT_TOKEN_<SPACE>` env var per space defined in your config. Alternatively, set `CMS_EDIT_CONFIG` to the absolute path of your config file if you need to point at a specific location.
45
49
  - `npx -y @se-studio/contentful-cms` always pulls the latest published version — no global install needed.
46
50
 
47
51
  If you have the package installed globally, you can use `"command": "cms-edit-mcp"` (no `args`) instead.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cms-edit-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms-edit-setup.d.ts","sourceRoot":"","sources":["../../src/bin/cms-edit-setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ import { runSetupWizard } from '../setup/wizard.js';
3
+ runSetupWizard().catch((err) => {
4
+ console.error(err instanceof Error ? err.message : String(err));
5
+ process.exit(1);
6
+ });
7
+ //# sourceMappingURL=cms-edit-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms-edit-setup.js","sourceRoot":"","sources":["../../src/bin/cms-edit-setup.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -36,6 +36,7 @@ import { registerSkillCommand } from '../commands/skill.js';
36
36
  import { registerSnapshotCommand } from '../commands/snapshot.js';
37
37
  import { registerTypesCommand } from '../commands/types.js';
38
38
  import { setJsonMode } from '../output/mode.js';
39
+ import { runSetupWizard } from '../setup/wizard.js';
39
40
  import { createTelemetryWriter } from '../telemetry/index.js';
40
41
  const program = new Command('cms-edit');
41
42
  const LLM_INTRO = 'Opinionated CLI for editing Contentful draft content (pages, articles, templates, navigation). No publish — all saves create drafts.\n' +
@@ -134,6 +135,12 @@ registerScreenshotCommand(program);
134
135
  registerRunCommand(program);
135
136
  registerSitemapCommand(program);
136
137
  registerSkillCommand(program);
138
+ program
139
+ .command('setup')
140
+ .description('Interactive wizard to configure Claude Desktop with your Contentful credentials')
141
+ .action(async () => {
142
+ await runSetupWizard();
143
+ });
137
144
  if (process.argv.includes('--docs')) {
138
145
  const dir = path.dirname(fileURLToPath(import.meta.url));
139
146
  const packageRoot = path.resolve(dir, '..', '..');
@@ -1 +1 @@
1
- {"version":3,"file":"cms-edit.js","sourceRoot":"","sources":["../../src/bin/cms-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cms-edit.js","sourceRoot":"","sources":["../../src/bin/cms-edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ /** biome-ignore-all lint/suspicious/noConsole: Console output is intentional in CLI */
3
+ export declare function runSetupWizard(): Promise<void>;
4
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/setup/wizard.ts"],"names":[],"mappings":";AACA,uFAAuF;AAuIvF,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAqKpD"}
@@ -0,0 +1,238 @@
1
+ #!/usr/bin/env node
2
+ /** biome-ignore-all lint/suspicious/noConsole: Console output is intentional in CLI */
3
+ import * as fs from 'node:fs';
4
+ import * as os from 'node:os';
5
+ import * as path from 'node:path';
6
+ import { cancel, intro, isCancel, log, outro, password, select, spinner, text, } from '@clack/prompts';
7
+ async function fetchSpaces(token) {
8
+ const res = await fetch('https://api.contentful.com/spaces?limit=100', {
9
+ headers: { Authorization: `Bearer ${token}` },
10
+ });
11
+ if (res.status === 401)
12
+ throw new Error('Invalid management token — please check and try again.');
13
+ if (!res.ok)
14
+ throw new Error(`Contentful API error: ${res.status} ${res.statusText}`);
15
+ const data = (await res.json());
16
+ return data.items;
17
+ }
18
+ async function fetchEnvironments(token, spaceId) {
19
+ const res = await fetch(`https://api.contentful.com/spaces/${spaceId}/environments?limit=100`, {
20
+ headers: { Authorization: `Bearer ${token}` },
21
+ });
22
+ if (!res.ok)
23
+ throw new Error(`Contentful API error: ${res.status} ${res.statusText}`);
24
+ const data = (await res.json());
25
+ return data.items;
26
+ }
27
+ function readCmsConfig(configPath) {
28
+ if (!fs.existsSync(configPath)) {
29
+ return { defaultSpace: '', spaces: {} };
30
+ }
31
+ try {
32
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
33
+ }
34
+ catch {
35
+ return { defaultSpace: '', spaces: {} };
36
+ }
37
+ }
38
+ function writeCmsConfig(configPath, config) {
39
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
40
+ }
41
+ function getClaudeDesktopConfigPath() {
42
+ const platform = process.platform;
43
+ if (platform === 'darwin') {
44
+ return path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
45
+ }
46
+ if (platform === 'win32') {
47
+ const appData = process.env['APPDATA'] ?? path.join(os.homedir(), 'AppData', 'Roaming');
48
+ return path.join(appData, 'Claude', 'claude_desktop_config.json');
49
+ }
50
+ return path.join(os.homedir(), '.config', 'Claude', 'claude_desktop_config.json');
51
+ }
52
+ function readClaudeDesktopConfig(configPath) {
53
+ if (!fs.existsSync(configPath))
54
+ return {};
55
+ try {
56
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
57
+ }
58
+ catch {
59
+ return {};
60
+ }
61
+ }
62
+ function writeClaudeDesktopConfig(configPath, config) {
63
+ const dir = path.dirname(configPath);
64
+ if (!fs.existsSync(dir))
65
+ fs.mkdirSync(dir, { recursive: true });
66
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
67
+ }
68
+ // ---------------------------------------------------------------------------
69
+ // Slug helper
70
+ // ---------------------------------------------------------------------------
71
+ function slugify(name) {
72
+ return name
73
+ .toLowerCase()
74
+ .replace(/[^a-z0-9]+/g, '-')
75
+ .replace(/^-|-$/g, '');
76
+ }
77
+ // ---------------------------------------------------------------------------
78
+ // Main wizard
79
+ // ---------------------------------------------------------------------------
80
+ export async function runSetupWizard() {
81
+ intro('Contentful CMS Editor — Setup');
82
+ // 1. Management token
83
+ const tokenValue = await password({
84
+ message: 'Contentful Management Token',
85
+ mask: '•',
86
+ validate: (v) => (v.trim().length === 0 ? 'Token is required' : undefined),
87
+ });
88
+ if (isCancel(tokenValue)) {
89
+ cancel('Setup cancelled.');
90
+ process.exit(0);
91
+ }
92
+ const token = tokenValue.trim();
93
+ // 2. Discover spaces
94
+ const s = spinner();
95
+ s.start('Looking up spaces for this token…');
96
+ let spaces;
97
+ try {
98
+ spaces = await fetchSpaces(token);
99
+ }
100
+ catch (err) {
101
+ s.stop('Failed to fetch spaces.');
102
+ log.error(err instanceof Error ? err.message : String(err));
103
+ process.exit(1);
104
+ }
105
+ if (spaces.length === 0) {
106
+ s.stop('No spaces found.');
107
+ log.error('This token has no spaces. Check it has the correct permissions in Contentful.');
108
+ process.exit(1);
109
+ }
110
+ s.stop(`Found ${spaces.length} space${spaces.length === 1 ? '' : 's'}.`);
111
+ // 3. Pick a space
112
+ let spaceId;
113
+ let spaceName;
114
+ if (spaces.length === 1 && spaces[0]) {
115
+ spaceId = spaces[0].sys.id;
116
+ spaceName = spaces[0].name;
117
+ log.info(`Using space: ${spaceName}`);
118
+ }
119
+ else {
120
+ const spaceChoice = await select({
121
+ message: 'Which Contentful space?',
122
+ options: spaces.map((sp) => ({ value: sp.sys.id, label: sp.name })),
123
+ });
124
+ if (isCancel(spaceChoice)) {
125
+ cancel('Setup cancelled.');
126
+ process.exit(0);
127
+ }
128
+ spaceId = spaceChoice;
129
+ spaceName = spaces.find((sp) => sp.sys.id === spaceId)?.name ?? spaceId;
130
+ }
131
+ // 4. Discover environments
132
+ s.start('Looking up environments…');
133
+ let environments;
134
+ try {
135
+ environments = await fetchEnvironments(token, spaceId);
136
+ }
137
+ catch (err) {
138
+ s.stop('Failed to fetch environments.');
139
+ log.error(err instanceof Error ? err.message : String(err));
140
+ process.exit(1);
141
+ }
142
+ s.stop(`Found ${environments.length} environment${environments.length === 1 ? '' : 's'}.`);
143
+ // 5. Pick an environment (auto-select master if present)
144
+ let environmentId;
145
+ const masterEnv = environments.find((e) => e.sys.id === 'master');
146
+ if (masterEnv || environments.length === 1) {
147
+ environmentId = masterEnv?.sys.id ?? environments[0]?.sys.id ?? 'master';
148
+ log.info(`Using environment: ${environmentId}`);
149
+ }
150
+ else {
151
+ const envChoice = await select({
152
+ message: 'Which environment?',
153
+ options: environments.map((e) => ({ value: e.sys.id, label: e.sys.id })),
154
+ });
155
+ if (isCancel(envChoice)) {
156
+ cancel('Setup cancelled.');
157
+ process.exit(0);
158
+ }
159
+ environmentId = envChoice;
160
+ }
161
+ // 6. Project name
162
+ const suggestedName = slugify(spaceName) || 'my-project';
163
+ const projectNameValue = await text({
164
+ message: 'Short name for this project (used as a key in the config)',
165
+ placeholder: suggestedName,
166
+ defaultValue: suggestedName,
167
+ validate: (v) => {
168
+ const val = v.trim() || suggestedName;
169
+ if (!/^[a-z0-9-]+$/.test(val))
170
+ return 'Use lowercase letters, numbers, and hyphens only';
171
+ return undefined;
172
+ },
173
+ });
174
+ if (isCancel(projectNameValue)) {
175
+ cancel('Setup cancelled.');
176
+ process.exit(0);
177
+ }
178
+ const projectName = projectNameValue.trim() || suggestedName;
179
+ // 7. Staging URL (optional)
180
+ const stagingUrlValue = await text({
181
+ message: 'Staging site URL (optional — used for previewing pages)',
182
+ placeholder: 'https://my-project.vercel.app',
183
+ });
184
+ if (isCancel(stagingUrlValue)) {
185
+ cancel('Setup cancelled.');
186
+ process.exit(0);
187
+ }
188
+ const stagingUrl = stagingUrlValue.trim();
189
+ // 8. Vercel bypass token (optional, only if staging URL provided)
190
+ let vercelBypass = '';
191
+ if (stagingUrl) {
192
+ const bypassValue = await text({
193
+ message: 'Vercel deployment protection bypass token (optional)',
194
+ placeholder: 'Leave blank if not needed',
195
+ });
196
+ if (isCancel(bypassValue)) {
197
+ cancel('Setup cancelled.');
198
+ process.exit(0);
199
+ }
200
+ vercelBypass = bypassValue.trim();
201
+ }
202
+ // 9. Write ~/.contentful-cms.json
203
+ const cmsConfigPath = path.join(os.homedir(), '.contentful-cms.json');
204
+ const cmsConfig = readCmsConfig(cmsConfigPath);
205
+ const spaceEntry = {
206
+ spaceId,
207
+ environment: environmentId,
208
+ managementToken: token,
209
+ defaultLocale: 'en-US',
210
+ };
211
+ if (stagingUrl)
212
+ spaceEntry.devBaseUrl = stagingUrl;
213
+ if (vercelBypass)
214
+ spaceEntry.requestParams = { 'x-vercel-protection-bypass': vercelBypass };
215
+ cmsConfig.defaultSpace = projectName;
216
+ cmsConfig.spaces[projectName] = spaceEntry;
217
+ writeCmsConfig(cmsConfigPath, cmsConfig);
218
+ log.success(`Written: ${cmsConfigPath}`);
219
+ // 10. Update Claude Desktop config
220
+ const claudeConfigPath = getClaudeDesktopConfigPath();
221
+ const claudeConfig = readClaudeDesktopConfig(claudeConfigPath);
222
+ if (!claudeConfig.mcpServers)
223
+ claudeConfig.mcpServers = {};
224
+ claudeConfig.mcpServers['cms-edit'] = {
225
+ command: 'npx',
226
+ args: ['-y', '@se-studio/contentful-cms'],
227
+ cwd: os.homedir(),
228
+ };
229
+ writeClaudeDesktopConfig(claudeConfigPath, claudeConfig);
230
+ log.success(`Updated: ${claudeConfigPath}`);
231
+ outro('All done!\n\n' +
232
+ 'Next steps:\n' +
233
+ ' 1. Fully quit Claude Desktop and reopen it\n' +
234
+ ' (Mac: right-click the Dock icon → Quit)\n' +
235
+ ' 2. Ask Claude: "What Contentful spaces do you have access to?"\n' +
236
+ ` Claude should respond with: ${projectName}`);
237
+ }
238
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/setup/wizard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/contentful-cms",
3
- "version": "1.0.48",
3
+ "version": "1.0.50",
4
4
  "description": "CLI tool for AI agents to read and edit Contentful draft content without publish permissions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,6 +20,7 @@
20
20
  "bin": {
21
21
  "cms-edit": "./dist/bin/cms-edit.js",
22
22
  "cms-edit-mcp": "./dist/bin/cms-edit-mcp.js",
23
+ "cms-edit-setup": "./dist/bin/cms-edit-setup.js",
23
24
  "contentful-cms": "./dist/bin/cms-edit-mcp.js"
24
25
  },
25
26
  "files": [
@@ -28,6 +29,7 @@
28
29
  "*.md"
29
30
  ],
30
31
  "dependencies": {
32
+ "@clack/prompts": "^0.9.1",
31
33
  "@contentful/rich-text-types": "^17.2.7",
32
34
  "@modelcontextprotocol/sdk": "^1.29.0",
33
35
  "commander": "^14.0.3",