@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 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
@@ -3,5 +3,7 @@
3
3
  * Respira WordPress MCP Server
4
4
  * Entry point
5
5
  */
6
- export {};
6
+ declare const args: string[];
7
+ declare const isSetupCommand: boolean;
8
+ declare function startMcpServer(): Promise<void>;
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -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
- import * as Sentry from '@sentry/node';
7
- import { nodeProfilingIntegration } from '@sentry/profiling-node';
8
- import { RespiraWordPressServer } from './server.js';
9
- import { loadConfig } from './config.js';
10
- // Initialize Sentry with hardcoded DSN
11
- // All MCP server installations report to this Sentry project
12
- Sentry.init({
13
- dsn: 'https://7932b5b04df142fcec3b11a590c86541@o4510381871333376.ingest.de.sentry.io/4510386268209232',
14
- environment: process.env.NODE_ENV || 'production',
15
- tracesSampleRate: 0.2,
16
- profilesSampleRate: 0.2,
17
- integrations: [
18
- nodeProfilingIntegration(),
19
- ],
20
- beforeSend(event) {
21
- // Don't send from local development
22
- if (process.env.NODE_ENV === 'development') {
23
- return null;
24
- }
25
- return event;
26
- },
27
- });
28
- async function main() {
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":";AAEA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,uCAAuC;AACvC,6DAA6D;AAC7D,MAAM,CAAC,IAAI,CAAC;IACV,GAAG,EAAE,iGAAiG;IACtG,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;IACjD,gBAAgB,EAAE,GAAG;IACrB,kBAAkB,EAAE,GAAG;IACvB,YAAY,EAAE;QACZ,wBAAwB,EAAE;KAC3B;IACD,UAAU,CAAC,KAAwB;QACjC,oCAAoC;QACpC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC;QAC7F,MAAM,UAAU,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC5C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;AAEH,8CAA8C;AAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,cAAc,GAClB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEtB,IAAI,cAAc,EAAE,CAAC;IACnB,0CAA0C;IAC1C,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;QAC/C,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,4BAA4B;IAC5B,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,oDAAoD;IACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC5E,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAEnD,uCAAuC;IACvC,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,iGAAiG;QACtG,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;QACjD,gBAAgB,EAAE,GAAG;QACrB,kBAAkB,EAAE,GAAG;QACvB,YAAY,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAC1C,UAAU,CAAC,KAAK;YACd,oCAAoC;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC;QAC7F,MAAM,UAAU,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC5C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/dist/server.js CHANGED
@@ -14,7 +14,7 @@ export class RespiraWordPressServer {
14
14
  constructor(siteConfigs) {
15
15
  this.server = new Server({
16
16
  name: 'respira-wordpress',
17
- version: '2.0.7',
17
+ version: '2.0.8',
18
18
  }, {
19
19
  capabilities: {
20
20
  tools: {},
@@ -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.7",
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\"",