@respira/wordpress-mcp-server 2.0.9 → 2.0.10
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 +45 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -5
- package/dist/config.js.map +1 -1
- package/dist/discovery/abilities.d.ts +23 -0
- package/dist/discovery/abilities.d.ts.map +1 -0
- package/dist/discovery/abilities.js +87 -0
- package/dist/discovery/abilities.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/transports/stdio.d.ts +29 -0
- package/dist/transports/stdio.d.ts.map +1 -0
- package/dist/transports/stdio.js +74 -0
- package/dist/transports/stdio.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -190,6 +190,36 @@ Your live site is never at risk.
|
|
|
190
190
|
|
|
191
191
|
---
|
|
192
192
|
|
|
193
|
+
## Part of the WordPress AI Ecosystem
|
|
194
|
+
|
|
195
|
+
Respira works alongside the official WordPress AI building blocks:
|
|
196
|
+
|
|
197
|
+
- **WordPress Abilities API** (WP 6.9+): Respira registers all its page builder tools as WordPress Abilities under the `page-builder-editing` category
|
|
198
|
+
- **WordPress MCP Adapter**: Exposes Respira abilities alongside core WordPress tools automatically
|
|
199
|
+
- **Standalone MCP server** (this package): Quick start path — works without the Abilities API
|
|
200
|
+
|
|
201
|
+
### Two Access Paths
|
|
202
|
+
|
|
203
|
+
| Path | How it works | Requirements |
|
|
204
|
+
|------|-------------|--------------|
|
|
205
|
+
| **Standalone** (this npm package) | Install via npm, configure in your AI tool | Node 18+, Respira plugin |
|
|
206
|
+
| **WordPress MCP Adapter** | Abilities auto-discovered via WP-CLI STDIO | WP 6.9+, MCP Adapter plugin, Respira plugin v2.0+ |
|
|
207
|
+
|
|
208
|
+
Both paths are supported. Use whichever fits your setup.
|
|
209
|
+
|
|
210
|
+
### STDIO Transport (for MCP Adapter)
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
npx @respira/wordpress-mcp-server --stdio --wp-path=/path/to/wordpress --user=admin
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Or via WP-CLI:
|
|
217
|
+
```bash
|
|
218
|
+
wp mcp-adapter serve respira-press --user=admin
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
193
223
|
## 60+ Tools
|
|
194
224
|
|
|
195
225
|
### Page Builder Tools
|
|
@@ -352,6 +382,7 @@ respira-wordpress-mcp
|
|
|
352
382
|
npx @respira/wordpress-mcp-server --setup # Run setup wizard
|
|
353
383
|
npx @respira/wordpress-mcp-server --list # List configured sites
|
|
354
384
|
npx @respira/wordpress-mcp-server --test # Test default site connection
|
|
385
|
+
npx @respira/wordpress-mcp-server --stdio # STDIO transport (for WP-CLI/MCP Adapter)
|
|
355
386
|
npx @respira/wordpress-mcp-server --help # Show help
|
|
356
387
|
```
|
|
357
388
|
|
|
@@ -363,6 +394,20 @@ export WP_API_KEY=respira_your-api-key
|
|
|
363
394
|
|
|
364
395
|
---
|
|
365
396
|
|
|
397
|
+
## Security
|
|
398
|
+
|
|
399
|
+
API key validation happens server-side in the WordPress plugin. The MCP server passes credentials but does not store or validate them. No sensitive parsing logic is in this repository.
|
|
400
|
+
|
|
401
|
+
Report vulnerabilities to security@respira.press. See [SECURITY.md](.github/SECURITY.md) for details.
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## Contributing
|
|
406
|
+
|
|
407
|
+
See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for how to add builder support, new tools, and submit PRs.
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
366
411
|
## Links
|
|
367
412
|
|
|
368
413
|
- [Website](https://respira.press)
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAa3E;;GAEG;AACH,wBAAgB,UAAU,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAa3E;;GAEG;AACH,wBAAgB,UAAU,IAAI,aAAa,CA+J1C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAWtD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAevD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAgB/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBnD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBlE"}
|
package/dist/config.js
CHANGED
|
@@ -62,9 +62,11 @@ export function loadConfig() {
|
|
|
62
62
|
// Validate and fix URL
|
|
63
63
|
let fixedUrl = site.url.trim();
|
|
64
64
|
let urlFixed = false;
|
|
65
|
-
// Fix duplicate protocols (https://https://, http://http://, etc.)
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
// Fix duplicate protocols (https://https://, http://http://, etc.) - preserve original protocol
|
|
66
|
+
const dupProtocolMatch = fixedUrl.match(/^(https?:\/\/){2,}/i);
|
|
67
|
+
if (dupProtocolMatch) {
|
|
68
|
+
const firstProtocol = fixedUrl.startsWith('https') ? 'https://' : 'http://';
|
|
69
|
+
fixedUrl = fixedUrl.replace(/^(https?:\/\/)+/i, firstProtocol);
|
|
68
70
|
urlFixed = true;
|
|
69
71
|
}
|
|
70
72
|
// Fix mixed protocols (http://https://, https://http://)
|
|
@@ -100,9 +102,11 @@ export function loadConfig() {
|
|
|
100
102
|
}
|
|
101
103
|
// Validate URL format
|
|
102
104
|
try {
|
|
103
|
-
// Add protocol if missing
|
|
105
|
+
// Add protocol if missing - use http for local dev (Local, Lando, etc.)
|
|
104
106
|
if (!fixedUrl.match(/^https?:\/\//i)) {
|
|
105
|
-
|
|
107
|
+
const host = fixedUrl.split('/')[0]?.split(':')[0] || '';
|
|
108
|
+
const isLocal = /^(localhost|127\.0\.0\.1|.*\.local|.*\.localdomain|.*\.lndo\.site)$/i.test(host);
|
|
109
|
+
fixedUrl = `${isLocal ? 'http' : 'https'}://${fixedUrl}`;
|
|
106
110
|
urlFixed = true;
|
|
107
111
|
}
|
|
108
112
|
const urlObj = new URL(fixedUrl);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAG7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,MAAM,cAAc,GAAkB;IACpC,KAAK,EAAE,EAAE;IACT,WAAW,EAAE;QACX,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;KACrB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,eAAe,WAAW,+BAA+B,CAAC,CAAC;QAEzE,uCAAuC;QACvC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,wBAAwB;QACxB,MAAM,aAAa,GAAkB;YACnC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,cAAc;oBAClB,IAAI,EAAE,mBAAmB;oBACzB,GAAG,EAAE,qBAAqB;oBAC1B,MAAM,EAAE,2BAA2B;oBACnC,OAAO,EAAE,IAAI;iBACd;aACF;YACD,WAAW,EAAE;gBACX,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,IAAI;aACrB;SACF,CAAC;QAEF,UAAU,CAAC,aAAa,CAAC,CAAC;QAE1B,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,IAAI;YAChD,4EAA4E,CAC7E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,MAAM,GAAkB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAErD,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,qBAAqB;QACrB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,IAAI,wCAAwC,CAAC,CAAC;YAC3F,CAAC;YAED,uBAAuB;YACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress Abilities API Discovery
|
|
3
|
+
*
|
|
4
|
+
* Detects whether a WordPress site has the Abilities API and
|
|
5
|
+
* MCP Adapter installed, and informs the user about available
|
|
6
|
+
* integration paths.
|
|
7
|
+
*/
|
|
8
|
+
export interface AbilitiesDiscoveryResult {
|
|
9
|
+
abilitiesApiAvailable: boolean;
|
|
10
|
+
mcpAdapterAvailable: boolean;
|
|
11
|
+
respiraAbilitiesRegistered: boolean;
|
|
12
|
+
abilitiesEndpoint: string | null;
|
|
13
|
+
message: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Check if the WordPress site supports the Abilities API.
|
|
17
|
+
*
|
|
18
|
+
* @param siteUrl - The WordPress site URL.
|
|
19
|
+
* @param apiKey - The Respira API key for authentication.
|
|
20
|
+
* @returns Discovery result with availability information.
|
|
21
|
+
*/
|
|
22
|
+
export declare function discoverAbilities(siteUrl: string, apiKey: string): Promise<AbilitiesDiscoveryResult>;
|
|
23
|
+
//# sourceMappingURL=abilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abilities.d.ts","sourceRoot":"","sources":["../../src/discovery/abilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,wBAAwB;IACvC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,0BAA0B,EAAE,OAAO,CAAC;IACpC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC,CA8EnC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress Abilities API Discovery
|
|
3
|
+
*
|
|
4
|
+
* Detects whether a WordPress site has the Abilities API and
|
|
5
|
+
* MCP Adapter installed, and informs the user about available
|
|
6
|
+
* integration paths.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Check if the WordPress site supports the Abilities API.
|
|
10
|
+
*
|
|
11
|
+
* @param siteUrl - The WordPress site URL.
|
|
12
|
+
* @param apiKey - The Respira API key for authentication.
|
|
13
|
+
* @returns Discovery result with availability information.
|
|
14
|
+
*/
|
|
15
|
+
export async function discoverAbilities(siteUrl, apiKey) {
|
|
16
|
+
const result = {
|
|
17
|
+
abilitiesApiAvailable: false,
|
|
18
|
+
mcpAdapterAvailable: false,
|
|
19
|
+
respiraAbilitiesRegistered: false,
|
|
20
|
+
abilitiesEndpoint: null,
|
|
21
|
+
message: '',
|
|
22
|
+
};
|
|
23
|
+
const baseUrl = siteUrl.replace(/\/+$/, '');
|
|
24
|
+
// Check for Abilities API
|
|
25
|
+
try {
|
|
26
|
+
const abilitiesUrl = `${baseUrl}/wp-json/wp-abilities/v1/abilities`;
|
|
27
|
+
const response = await fetch(abilitiesUrl, {
|
|
28
|
+
headers: {
|
|
29
|
+
'X-Respira-Key': apiKey,
|
|
30
|
+
},
|
|
31
|
+
signal: AbortSignal.timeout(10000),
|
|
32
|
+
});
|
|
33
|
+
if (response.ok) {
|
|
34
|
+
result.abilitiesApiAvailable = true;
|
|
35
|
+
result.abilitiesEndpoint = abilitiesUrl;
|
|
36
|
+
const abilities = await response.json();
|
|
37
|
+
// Check if Respira abilities are registered
|
|
38
|
+
if (Array.isArray(abilities)) {
|
|
39
|
+
result.respiraAbilitiesRegistered = abilities.some((ability) => typeof ability?.name === 'string' &&
|
|
40
|
+
ability.name.startsWith('respira/'));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Abilities API not available — that's fine
|
|
46
|
+
}
|
|
47
|
+
// Check for MCP Adapter
|
|
48
|
+
try {
|
|
49
|
+
const mcpUrl = `${baseUrl}/wp-json/mcp-adapter/v1/servers`;
|
|
50
|
+
const response = await fetch(mcpUrl, {
|
|
51
|
+
headers: {
|
|
52
|
+
'X-Respira-Key': apiKey,
|
|
53
|
+
},
|
|
54
|
+
signal: AbortSignal.timeout(10000),
|
|
55
|
+
});
|
|
56
|
+
if (response.ok) {
|
|
57
|
+
result.mcpAdapterAvailable = true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// MCP Adapter not available — that's fine
|
|
62
|
+
}
|
|
63
|
+
// Build user-facing message
|
|
64
|
+
if (result.respiraAbilitiesRegistered && result.mcpAdapterAvailable) {
|
|
65
|
+
result.message =
|
|
66
|
+
'This site has the WordPress Abilities API and MCP Adapter installed. ' +
|
|
67
|
+
'Respira abilities are registered and discoverable through the official adapter. ' +
|
|
68
|
+
'You can use either this standalone MCP server or the WordPress MCP Adapter path.';
|
|
69
|
+
}
|
|
70
|
+
else if (result.abilitiesApiAvailable && !result.respiraAbilitiesRegistered) {
|
|
71
|
+
result.message =
|
|
72
|
+
'This site has the WordPress Abilities API but Respira abilities are not registered. ' +
|
|
73
|
+
'Update the Respira plugin to v2.0+ to register abilities automatically.';
|
|
74
|
+
}
|
|
75
|
+
else if (result.abilitiesApiAvailable) {
|
|
76
|
+
result.message =
|
|
77
|
+
'This site has the WordPress Abilities API. ' +
|
|
78
|
+
'Install the MCP Adapter to expose Respira abilities through the official WordPress AI infrastructure.';
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
result.message =
|
|
82
|
+
'This site does not have the WordPress Abilities API (requires WordPress 6.9+). ' +
|
|
83
|
+
'The standalone MCP server works perfectly without it.';
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=abilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abilities.js","sourceRoot":"","sources":["../../src/discovery/abilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,MAAc;IAEd,MAAM,MAAM,GAA6B;QACvC,qBAAqB,EAAE,KAAK;QAC5B,mBAAmB,EAAE,KAAK;QAC1B,0BAA0B,EAAE,KAAK;QACjC,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE5C,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,GAAG,OAAO,oCAAoC,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;YACzC,OAAO,EAAE;gBACP,eAAe,EAAE,MAAM;aACxB;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACpC,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC;YAExC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAExC,4CAA4C;YAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,0BAA0B,GAAG,SAAS,CAAC,IAAI,CAChD,CAAC,OAAY,EAAE,EAAE,CACf,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ;oBACjC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CACtC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,OAAO,iCAAiC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACnC,OAAO,EAAE;gBACP,eAAe,EAAE,MAAM;aACxB;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IAED,4BAA4B;IAC5B,IAAI,MAAM,CAAC,0BAA0B,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACpE,MAAM,CAAC,OAAO;YACZ,uEAAuE;gBACvE,kFAAkF;gBAClF,kFAAkF,CAAC;IACvF,CAAC;SAAM,IAAI,MAAM,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;QAC9E,MAAM,CAAC,OAAO;YACZ,sFAAsF;gBACtF,yEAAyE,CAAC;IAC9E,CAAC;SAAM,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,CAAC,OAAO;YACZ,6CAA6C;gBAC7C,uGAAuG,CAAC;IAC5G,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,OAAO;YACZ,iFAAiF;gBACjF,uDAAuD,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
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;AAGH,QAAA,MAAM,IAAI,UAAwB,CAAC;AACnC,QAAA,MAAM,cAAc,SAQC,CAAC;
|
|
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;AACtB,QAAA,MAAM,cAAc,SAA2B,CAAC;AAkBhD,iBAAe,cAAc,kBAkB5B;AAED,iBAAe,cAAc,kBA4C5B"}
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ const isSetupCommand = args.includes('--setup') ||
|
|
|
14
14
|
args.includes('-t') ||
|
|
15
15
|
args.includes('--help') ||
|
|
16
16
|
args.includes('-h');
|
|
17
|
+
const isStdioCommand = args.includes('--stdio');
|
|
17
18
|
if (isSetupCommand) {
|
|
18
19
|
// Dynamically import and run setup module
|
|
19
20
|
import('./setup.js').then(({ handleSetupCli }) => {
|
|
@@ -23,10 +24,31 @@ if (isSetupCommand) {
|
|
|
23
24
|
});
|
|
24
25
|
});
|
|
25
26
|
}
|
|
27
|
+
else if (isStdioCommand) {
|
|
28
|
+
// STDIO transport mode for WP-CLI / MCP Adapter integration
|
|
29
|
+
startStdioMode();
|
|
30
|
+
}
|
|
26
31
|
else {
|
|
27
32
|
// Normal MCP server startup
|
|
28
33
|
startMcpServer();
|
|
29
34
|
}
|
|
35
|
+
async function startStdioMode() {
|
|
36
|
+
const { parseStdioArgs } = await import('./transports/stdio.js');
|
|
37
|
+
const { RespiraWordPressServer } = await import('./server.js');
|
|
38
|
+
const { loadConfig } = await import('./config.js');
|
|
39
|
+
try {
|
|
40
|
+
const config = loadConfig();
|
|
41
|
+
const server = new RespiraWordPressServer(config.sites);
|
|
42
|
+
// Start STDIO transport — reads JSON-RPC from stdin, writes to stdout
|
|
43
|
+
const options = parseStdioArgs(args);
|
|
44
|
+
process.stderr.write(`[respira] Starting STDIO transport${options.wpPath ? ` (wp-path: ${options.wpPath})` : ''}\n`);
|
|
45
|
+
await server.run();
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
process.stderr.write(`[respira] STDIO startup error: ${error?.message || error}\n`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
30
52
|
async function startMcpServer() {
|
|
31
53
|
// Import dependencies only when starting MCP server
|
|
32
54
|
const Sentry = await import('@sentry/node');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STDIO Transport Support
|
|
3
|
+
*
|
|
4
|
+
* Enables the MCP server to run via WP-CLI STDIO transport
|
|
5
|
+
* for integration with the WordPress MCP Adapter.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx @respira/wordpress-mcp-server --stdio --wp-path=/path/to/wordpress --user=admin
|
|
9
|
+
*/
|
|
10
|
+
export interface StdioTransportOptions {
|
|
11
|
+
wpPath?: string;
|
|
12
|
+
user?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parse STDIO-specific CLI arguments.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseStdioArgs(args: string[]): StdioTransportOptions;
|
|
18
|
+
/**
|
|
19
|
+
* Check if STDIO mode was requested via CLI args.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isStdioMode(args: string[]): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Start the STDIO transport layer.
|
|
24
|
+
*
|
|
25
|
+
* Reads JSON-RPC messages from stdin (one per line)
|
|
26
|
+
* and writes responses to stdout.
|
|
27
|
+
*/
|
|
28
|
+
export declare function startStdioTransport(handleMessage: (message: any) => Promise<any>): void;
|
|
29
|
+
//# sourceMappingURL=stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAYpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAC5C,IAAI,CAqCN"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STDIO Transport Support
|
|
3
|
+
*
|
|
4
|
+
* Enables the MCP server to run via WP-CLI STDIO transport
|
|
5
|
+
* for integration with the WordPress MCP Adapter.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx @respira/wordpress-mcp-server --stdio --wp-path=/path/to/wordpress --user=admin
|
|
9
|
+
*/
|
|
10
|
+
import { createInterface } from 'readline';
|
|
11
|
+
/**
|
|
12
|
+
* Parse STDIO-specific CLI arguments.
|
|
13
|
+
*/
|
|
14
|
+
export function parseStdioArgs(args) {
|
|
15
|
+
const options = {};
|
|
16
|
+
for (const arg of args) {
|
|
17
|
+
if (arg.startsWith('--wp-path=')) {
|
|
18
|
+
options.wpPath = arg.split('=')[1];
|
|
19
|
+
}
|
|
20
|
+
else if (arg.startsWith('--user=')) {
|
|
21
|
+
options.user = arg.split('=')[1];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return options;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if STDIO mode was requested via CLI args.
|
|
28
|
+
*/
|
|
29
|
+
export function isStdioMode(args) {
|
|
30
|
+
return args.includes('--stdio');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Start the STDIO transport layer.
|
|
34
|
+
*
|
|
35
|
+
* Reads JSON-RPC messages from stdin (one per line)
|
|
36
|
+
* and writes responses to stdout.
|
|
37
|
+
*/
|
|
38
|
+
export function startStdioTransport(handleMessage) {
|
|
39
|
+
const rl = createInterface({
|
|
40
|
+
input: process.stdin,
|
|
41
|
+
output: process.stdout,
|
|
42
|
+
terminal: false,
|
|
43
|
+
});
|
|
44
|
+
rl.on('line', async (line) => {
|
|
45
|
+
const trimmed = line.trim();
|
|
46
|
+
if (!trimmed)
|
|
47
|
+
return;
|
|
48
|
+
try {
|
|
49
|
+
const message = JSON.parse(trimmed);
|
|
50
|
+
const response = await handleMessage(message);
|
|
51
|
+
if (response !== undefined) {
|
|
52
|
+
process.stdout.write(JSON.stringify(response) + '\n');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const errorResponse = {
|
|
57
|
+
jsonrpc: '2.0',
|
|
58
|
+
error: {
|
|
59
|
+
code: -32700,
|
|
60
|
+
message: 'Parse error',
|
|
61
|
+
data: err?.message || 'Invalid JSON',
|
|
62
|
+
},
|
|
63
|
+
id: null,
|
|
64
|
+
};
|
|
65
|
+
process.stdout.write(JSON.stringify(errorResponse) + '\n');
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
rl.on('close', () => {
|
|
69
|
+
process.exit(0);
|
|
70
|
+
});
|
|
71
|
+
// Signal that STDIO transport is ready
|
|
72
|
+
process.stderr.write('[respira] STDIO transport ready\n');
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,aAA6C;IAE7C,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG;gBACpB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,aAAa;oBACtB,IAAI,EAAE,GAAG,EAAE,OAAO,IAAI,cAAc;iBACrC;gBACD,EAAE,EAAE,IAAI;aACT,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;AAC5D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@respira/wordpress-mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.10",
|
|
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
|
+
"wordpress-mcp-server": "./dist/index.js",
|
|
7
8
|
"respira-wordpress-mcp": "./dist/index.js",
|
|
8
9
|
"respira-setup": "./dist/setup.js"
|
|
9
10
|
},
|
|
@@ -112,4 +113,4 @@
|
|
|
112
113
|
"engines": {
|
|
113
114
|
"node": ">=18.0.0"
|
|
114
115
|
}
|
|
115
|
-
}
|
|
116
|
+
}
|