@respira/wordpress-mcp-server 2.0.7 → 2.0.8
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 +25 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -24
- package/dist/index.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/setup.d.ts +9 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +338 -0
- package/dist/setup.js.map +1 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -324,12 +324,37 @@ Then use:
|
|
|
324
324
|
npx -y @respira/wordpress-mcp-server
|
|
325
325
|
```
|
|
326
326
|
|
|
327
|
+
### Smithery (MCP Package Manager)
|
|
328
|
+
```bash
|
|
329
|
+
npx -y @smithery/cli install @respira/wordpress-mcp-server --client claude
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### Interactive Setup Wizard
|
|
333
|
+
```bash
|
|
334
|
+
npx @respira/wordpress-mcp-server --setup
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
This wizard will:
|
|
338
|
+
- Guide you through configuration step by step
|
|
339
|
+
- Validate your WordPress URL and API key
|
|
340
|
+
- Test your connection before saving
|
|
341
|
+
- Generate the config file automatically
|
|
342
|
+
- Show you what to add to your AI tool
|
|
343
|
+
|
|
327
344
|
### Global Install
|
|
328
345
|
```bash
|
|
329
346
|
npm install -g @respira/wordpress-mcp-server
|
|
330
347
|
respira-wordpress-mcp
|
|
331
348
|
```
|
|
332
349
|
|
|
350
|
+
### CLI Options
|
|
351
|
+
```bash
|
|
352
|
+
npx @respira/wordpress-mcp-server --setup # Run setup wizard
|
|
353
|
+
npx @respira/wordpress-mcp-server --list # List configured sites
|
|
354
|
+
npx @respira/wordpress-mcp-server --test # Test default site connection
|
|
355
|
+
npx @respira/wordpress-mcp-server --help # Show help
|
|
356
|
+
```
|
|
357
|
+
|
|
333
358
|
### Environment Variables (Alternative to config file)
|
|
334
359
|
```bash
|
|
335
360
|
export WP_SITE_URL=https://your-site.com
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAGH,QAAA,MAAM,IAAI,UAAwB,CAAC;AACnC,QAAA,MAAM,cAAc,SAQC,CAAC;AAetB,iBAAe,cAAc,kBA4C5B"}
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,54 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
2
3
|
/**
|
|
3
4
|
* Respira WordPress MCP Server
|
|
4
5
|
* Entry point
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
7
|
+
// Handle CLI flags before starting MCP server
|
|
8
|
+
const args = process.argv.slice(2);
|
|
9
|
+
const isSetupCommand = args.includes('--setup') ||
|
|
10
|
+
args.includes('-s') ||
|
|
11
|
+
args.includes('--list') ||
|
|
12
|
+
args.includes('-l') ||
|
|
13
|
+
args.includes('--test') ||
|
|
14
|
+
args.includes('-t') ||
|
|
15
|
+
args.includes('--help') ||
|
|
16
|
+
args.includes('-h');
|
|
17
|
+
if (isSetupCommand) {
|
|
18
|
+
// Dynamically import and run setup module
|
|
19
|
+
import('./setup.js').then(({ handleSetupCli }) => {
|
|
20
|
+
handleSetupCli().catch((err) => {
|
|
21
|
+
console.error('Setup error:', err);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Normal MCP server startup
|
|
28
|
+
startMcpServer();
|
|
29
|
+
}
|
|
30
|
+
async function startMcpServer() {
|
|
31
|
+
// Import dependencies only when starting MCP server
|
|
32
|
+
const Sentry = await import('@sentry/node');
|
|
33
|
+
const { nodeProfilingIntegration } = await import('@sentry/profiling-node');
|
|
34
|
+
const { RespiraWordPressServer } = await import('./server.js');
|
|
35
|
+
const { loadConfig } = await import('./config.js');
|
|
36
|
+
// Initialize Sentry with hardcoded DSN
|
|
37
|
+
// All MCP server installations report to this Sentry project
|
|
38
|
+
Sentry.init({
|
|
39
|
+
dsn: 'https://7932b5b04df142fcec3b11a590c86541@o4510381871333376.ingest.de.sentry.io/4510386268209232',
|
|
40
|
+
environment: process.env.NODE_ENV || 'production',
|
|
41
|
+
tracesSampleRate: 0.2,
|
|
42
|
+
profilesSampleRate: 0.2,
|
|
43
|
+
integrations: [nodeProfilingIntegration()],
|
|
44
|
+
beforeSend(event) {
|
|
45
|
+
// Don't send from local development
|
|
46
|
+
if (process.env.NODE_ENV === 'development') {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return event;
|
|
50
|
+
},
|
|
51
|
+
});
|
|
29
52
|
try {
|
|
30
53
|
// Load configuration
|
|
31
54
|
const config = loadConfig();
|
|
@@ -45,5 +68,4 @@ async function main() {
|
|
|
45
68
|
process.exit(1);
|
|
46
69
|
}
|
|
47
70
|
}
|
|
48
|
-
main();
|
|
49
71
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Respira WordPress MCP Server - Interactive Setup Wizard
|
|
4
|
+
*
|
|
5
|
+
* Run with: npm run setup
|
|
6
|
+
* Or: npx @respira/wordpress-mcp-server --setup
|
|
7
|
+
*/
|
|
8
|
+
export declare function handleSetupCli(): Promise<boolean>;
|
|
9
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AA+VH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAwBvD"}
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Respira WordPress MCP Server - Interactive Setup Wizard
|
|
4
|
+
*
|
|
5
|
+
* Run with: npm run setup
|
|
6
|
+
* Or: npx @respira/wordpress-mcp-server --setup
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from 'fs';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import * as readline from 'readline';
|
|
11
|
+
import * as os from 'os';
|
|
12
|
+
const CONFIG_DIR = path.join(os.homedir(), '.respira');
|
|
13
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
14
|
+
// ANSI colors
|
|
15
|
+
const c = {
|
|
16
|
+
reset: '\x1b[0m',
|
|
17
|
+
bold: '\x1b[1m',
|
|
18
|
+
dim: '\x1b[2m',
|
|
19
|
+
green: '\x1b[32m',
|
|
20
|
+
yellow: '\x1b[33m',
|
|
21
|
+
blue: '\x1b[34m',
|
|
22
|
+
cyan: '\x1b[36m',
|
|
23
|
+
red: '\x1b[31m',
|
|
24
|
+
magenta: '\x1b[35m',
|
|
25
|
+
};
|
|
26
|
+
function print(msg, color = '') {
|
|
27
|
+
console.log(`${color}${msg}${c.reset}`);
|
|
28
|
+
}
|
|
29
|
+
function printBanner() {
|
|
30
|
+
console.log('');
|
|
31
|
+
print('╔════════════════════════════════════════════════════════════╗', c.cyan);
|
|
32
|
+
print('║ ║', c.cyan);
|
|
33
|
+
print('║ Respira WordPress MCP Server ║', c.cyan);
|
|
34
|
+
print('║ Setup Wizard ║', c.cyan);
|
|
35
|
+
print('║ ║', c.cyan);
|
|
36
|
+
print('║ The only WordPress MCP with page builder support ║', c.cyan);
|
|
37
|
+
print('║ ║', c.cyan);
|
|
38
|
+
print('╚════════════════════════════════════════════════════════════╝', c.cyan);
|
|
39
|
+
console.log('');
|
|
40
|
+
}
|
|
41
|
+
async function prompt(rl, question, defaultVal) {
|
|
42
|
+
const hint = defaultVal ? ` ${c.dim}(${defaultVal})${c.reset}` : '';
|
|
43
|
+
return new Promise((resolve) => {
|
|
44
|
+
rl.question(`${c.green}?${c.reset} ${question}${hint}: `, (answer) => {
|
|
45
|
+
resolve(answer.trim() || defaultVal || '');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async function confirm(rl, question, defaultYes = true) {
|
|
50
|
+
const hint = defaultYes ? '[Y/n]' : '[y/N]';
|
|
51
|
+
return new Promise((resolve) => {
|
|
52
|
+
rl.question(`${c.green}?${c.reset} ${question} ${c.dim}${hint}${c.reset}: `, (answer) => {
|
|
53
|
+
if (!answer.trim())
|
|
54
|
+
resolve(defaultYes);
|
|
55
|
+
else
|
|
56
|
+
resolve(answer.toLowerCase().startsWith('y'));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function validateUrl(url) {
|
|
61
|
+
try {
|
|
62
|
+
const parsed = new URL(url);
|
|
63
|
+
return parsed.protocol === 'http:' || parsed.protocol === 'https:';
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function validateApiKey(key) {
|
|
70
|
+
return key.startsWith('respira_') && key.length > 20;
|
|
71
|
+
}
|
|
72
|
+
function slugify(name) {
|
|
73
|
+
return name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').substring(0, 30);
|
|
74
|
+
}
|
|
75
|
+
function loadConfig() {
|
|
76
|
+
try {
|
|
77
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
78
|
+
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf-8'));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch { }
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
function saveConfig(config) {
|
|
85
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
86
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
87
|
+
}
|
|
88
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
89
|
+
}
|
|
90
|
+
async function testConnection(url, apiKey) {
|
|
91
|
+
print(' Testing connection...', c.dim);
|
|
92
|
+
try {
|
|
93
|
+
const endpoint = `${url.replace(/\/$/, '')}/wp-json/respira/v1/context/site-info`;
|
|
94
|
+
const response = await fetch(endpoint, {
|
|
95
|
+
headers: {
|
|
96
|
+
'X-Respira-API-Key': apiKey,
|
|
97
|
+
'Content-Type': 'application/json',
|
|
98
|
+
},
|
|
99
|
+
signal: AbortSignal.timeout(10000),
|
|
100
|
+
});
|
|
101
|
+
if (response.ok) {
|
|
102
|
+
const data = await response.json();
|
|
103
|
+
return { ok: true, siteName: data.data?.site_name };
|
|
104
|
+
}
|
|
105
|
+
return { ok: false, error: `${response.status} ${response.statusText}` };
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
return { ok: false, error: err instanceof Error ? err.message : 'Unknown error' };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function addSite(rl, existingSites) {
|
|
112
|
+
console.log('');
|
|
113
|
+
// Name
|
|
114
|
+
const name = await prompt(rl, 'Site name (e.g., "My Blog")', 'My WordPress Site');
|
|
115
|
+
if (!name) {
|
|
116
|
+
print(' Site name is required', c.red);
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
// Generate unique ID
|
|
120
|
+
let id = slugify(name);
|
|
121
|
+
if (existingSites.some(s => s.id === id)) {
|
|
122
|
+
id = `${id}-${Date.now().toString(36).slice(-4)}`;
|
|
123
|
+
}
|
|
124
|
+
// URL
|
|
125
|
+
let url = '';
|
|
126
|
+
while (!validateUrl(url)) {
|
|
127
|
+
url = await prompt(rl, 'WordPress site URL');
|
|
128
|
+
if (!validateUrl(url)) {
|
|
129
|
+
print(' Enter a valid URL starting with http:// or https://', c.red);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
url = url.replace(/\/$/, '');
|
|
133
|
+
// API Key
|
|
134
|
+
console.log('');
|
|
135
|
+
print(' Get your API key from: WordPress > Respira > API Keys', c.dim);
|
|
136
|
+
print(' Need the plugin? Download from: respira.press/releases', c.dim);
|
|
137
|
+
console.log('');
|
|
138
|
+
let apiKey = '';
|
|
139
|
+
while (!validateApiKey(apiKey)) {
|
|
140
|
+
apiKey = await prompt(rl, 'Respira API key');
|
|
141
|
+
if (!validateApiKey(apiKey)) {
|
|
142
|
+
print(' API key should start with "respira_"', c.red);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Test connection
|
|
146
|
+
const shouldTest = await confirm(rl, 'Test connection now?', true);
|
|
147
|
+
if (shouldTest) {
|
|
148
|
+
const result = await testConnection(url, apiKey);
|
|
149
|
+
if (result.ok) {
|
|
150
|
+
print(` Connected to: ${result.siteName || url}`, c.green);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
print(` Connection failed: ${result.error}`, c.red);
|
|
154
|
+
const proceed = await confirm(rl, 'Save anyway?', false);
|
|
155
|
+
if (!proceed)
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Default site?
|
|
160
|
+
const isDefault = existingSites.length === 0 || await confirm(rl, 'Set as default site?', existingSites.length === 0);
|
|
161
|
+
return { id, name, url, apiKey, default: isDefault };
|
|
162
|
+
}
|
|
163
|
+
function printNextSteps(config) {
|
|
164
|
+
const defaultSite = config.sites.find(s => s.default) || config.sites[0];
|
|
165
|
+
console.log('');
|
|
166
|
+
print('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', c.cyan);
|
|
167
|
+
print(' Next: Add this to your AI tool config', c.cyan);
|
|
168
|
+
print('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', c.cyan);
|
|
169
|
+
const mcpConfig = JSON.stringify({
|
|
170
|
+
mcpServers: {
|
|
171
|
+
"respira-wordpress": {
|
|
172
|
+
command: "npx",
|
|
173
|
+
args: ["-y", "@respira/wordpress-mcp-server"]
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}, null, 2);
|
|
177
|
+
console.log('');
|
|
178
|
+
print('Cursor (.cursor/mcp.json):', c.bold);
|
|
179
|
+
print(mcpConfig, c.dim);
|
|
180
|
+
console.log('');
|
|
181
|
+
print('Claude Code (~/.claude.json):', c.bold);
|
|
182
|
+
print(mcpConfig, c.dim);
|
|
183
|
+
console.log('');
|
|
184
|
+
print('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', c.cyan);
|
|
185
|
+
print(` Config saved: ${CONFIG_FILE}`, c.green);
|
|
186
|
+
print(` Default site: ${defaultSite?.name}`, c.dim);
|
|
187
|
+
print('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━', c.cyan);
|
|
188
|
+
console.log('');
|
|
189
|
+
print('Restart your AI tool and start vibe coding!', c.green);
|
|
190
|
+
print(' Docs: https://respira.press/documentation', c.dim);
|
|
191
|
+
console.log('');
|
|
192
|
+
}
|
|
193
|
+
function printHelp() {
|
|
194
|
+
console.log(`
|
|
195
|
+
${c.bold}Respira WordPress MCP Server${c.reset}
|
|
196
|
+
|
|
197
|
+
${c.cyan}Usage:${c.reset}
|
|
198
|
+
npx @respira/wordpress-mcp-server Start MCP server
|
|
199
|
+
npx @respira/wordpress-mcp-server --setup Run setup wizard
|
|
200
|
+
npx @respira/wordpress-mcp-server --list List configured sites
|
|
201
|
+
npx @respira/wordpress-mcp-server --test Test default site connection
|
|
202
|
+
npx @respira/wordpress-mcp-server --help Show this help
|
|
203
|
+
|
|
204
|
+
${c.cyan}Config file:${c.reset}
|
|
205
|
+
~/.respira/config.json
|
|
206
|
+
|
|
207
|
+
${c.cyan}Links:${c.reset}
|
|
208
|
+
Website: https://respira.press
|
|
209
|
+
Documentation: https://respira.press/documentation
|
|
210
|
+
Plugin: https://respira.press/releases
|
|
211
|
+
Support: https://respira.press/support
|
|
212
|
+
`);
|
|
213
|
+
}
|
|
214
|
+
function listSites() {
|
|
215
|
+
const config = loadConfig();
|
|
216
|
+
if (!config || config.sites.length === 0) {
|
|
217
|
+
print('\nNo sites configured. Run: npx @respira/wordpress-mcp-server --setup\n', c.yellow);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
console.log('');
|
|
221
|
+
print('Configured WordPress Sites:', c.cyan);
|
|
222
|
+
print('─'.repeat(50), c.dim);
|
|
223
|
+
config.sites.forEach(site => {
|
|
224
|
+
const def = site.default ? ` ${c.green}(default)${c.reset}` : '';
|
|
225
|
+
print(` ${c.bold}${site.name}${c.reset}${def}`);
|
|
226
|
+
print(` ${c.dim}URL: ${site.url}${c.reset}`);
|
|
227
|
+
print(` ${c.dim}ID: ${site.id}${c.reset}`);
|
|
228
|
+
console.log('');
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
async function testDefaultSite() {
|
|
232
|
+
const config = loadConfig();
|
|
233
|
+
if (!config || config.sites.length === 0) {
|
|
234
|
+
print('\nNo sites configured. Run: npx @respira/wordpress-mcp-server --setup\n', c.yellow);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const site = config.sites.find(s => s.default) || config.sites[0];
|
|
238
|
+
print(`\nTesting: ${site.name} (${site.url})`, c.cyan);
|
|
239
|
+
const result = await testConnection(site.url, site.apiKey);
|
|
240
|
+
if (result.ok) {
|
|
241
|
+
print(`Connected successfully to: ${result.siteName || site.url}\n`, c.green);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
print(`Connection failed: ${result.error}\n`, c.red);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
async function runSetupWizard() {
|
|
248
|
+
printBanner();
|
|
249
|
+
const rl = readline.createInterface({
|
|
250
|
+
input: process.stdin,
|
|
251
|
+
output: process.stdout,
|
|
252
|
+
});
|
|
253
|
+
try {
|
|
254
|
+
const existingConfig = loadConfig();
|
|
255
|
+
let config = { sites: [] };
|
|
256
|
+
// Check for existing config
|
|
257
|
+
if (existingConfig && existingConfig.sites.length > 0) {
|
|
258
|
+
print(`Found ${existingConfig.sites.length} existing site(s):`, c.dim);
|
|
259
|
+
existingConfig.sites.forEach(s => print(` - ${s.name} (${s.url})`, c.dim));
|
|
260
|
+
console.log('');
|
|
261
|
+
const addNew = await confirm(rl, 'Add another site?', true);
|
|
262
|
+
if (addNew) {
|
|
263
|
+
config = existingConfig;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
const replace = await confirm(rl, 'Replace existing config?', false);
|
|
267
|
+
if (!replace) {
|
|
268
|
+
print('\nSetup cancelled. Config unchanged.\n', c.yellow);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Prerequisites
|
|
274
|
+
console.log('');
|
|
275
|
+
print('Before you start, make sure you have:', c.yellow);
|
|
276
|
+
print(' 1. Respira plugin installed (respira.press/releases)', c.dim);
|
|
277
|
+
print(' 2. Generated an API key in WordPress > Respira > API Keys', c.dim);
|
|
278
|
+
console.log('');
|
|
279
|
+
const ready = await confirm(rl, 'Ready to continue?', true);
|
|
280
|
+
if (!ready) {
|
|
281
|
+
print('\nVisit https://respira.press/releases to get started.\n', c.cyan);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
// Add sites
|
|
285
|
+
let addMore = true;
|
|
286
|
+
while (addMore) {
|
|
287
|
+
const site = await addSite(rl, config.sites);
|
|
288
|
+
if (site) {
|
|
289
|
+
if (site.default) {
|
|
290
|
+
config.sites.forEach(s => s.default = false);
|
|
291
|
+
}
|
|
292
|
+
config.sites.push(site);
|
|
293
|
+
print(`\n Added: ${site.name}`, c.green);
|
|
294
|
+
}
|
|
295
|
+
addMore = await confirm(rl, '\nAdd another site?', false);
|
|
296
|
+
}
|
|
297
|
+
// Save
|
|
298
|
+
if (config.sites.length > 0) {
|
|
299
|
+
saveConfig(config);
|
|
300
|
+
printNextSteps(config);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
print('\nNo sites added. Run setup again when ready.\n', c.yellow);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
rl.close();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
export async function handleSetupCli() {
|
|
311
|
+
const args = process.argv.slice(2);
|
|
312
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
313
|
+
printHelp();
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
if (args.includes('--list') || args.includes('-l')) {
|
|
317
|
+
listSites();
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
if (args.includes('--test') || args.includes('-t')) {
|
|
321
|
+
await testDefaultSite();
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
if (args.includes('--setup') || args.includes('-s')) {
|
|
325
|
+
await runSetupWizard();
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
return false;
|
|
329
|
+
}
|
|
330
|
+
// If run directly (not imported)
|
|
331
|
+
const isDirectRun = process.argv[1]?.includes('setup');
|
|
332
|
+
if (isDirectRun) {
|
|
333
|
+
handleSetupCli().catch(err => {
|
|
334
|
+
console.error('Setup error:', err);
|
|
335
|
+
process.exit(1);
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@respira/wordpress-mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"description": "The only WordPress MCP with page builder support. Edit Divi, Elementor, Bricks + 7 more builders with AI. Duplicate-before-edit safety. SEO analysis. 60+ tools.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
|
-
"respira-wordpress-mcp": "./dist/index.js"
|
|
7
|
+
"respira-wordpress-mcp": "./dist/index.js",
|
|
8
|
+
"respira-setup": "./dist/setup.js"
|
|
8
9
|
},
|
|
9
10
|
"files": [
|
|
10
11
|
"dist/**/*",
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
"build": "tsc",
|
|
19
20
|
"watch": "tsc --watch",
|
|
20
21
|
"start": "node dist/index.js",
|
|
22
|
+
"setup": "node dist/setup.js --setup",
|
|
21
23
|
"dev": "tsc && node dist/index.js",
|
|
22
24
|
"lint": "eslint src --ext .ts",
|
|
23
25
|
"format": "prettier --write \"src/**/*.ts\"",
|