@respira/wordpress-mcp-server 3.3.3 → 3.3.5
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 +22 -17
- package/dist/agent-signature.d.ts +15 -0
- package/dist/agent-signature.d.ts.map +1 -0
- package/dist/agent-signature.js +113 -0
- package/dist/agent-signature.js.map +1 -0
- package/dist/discovery/abilities.d.ts.map +1 -1
- package/dist/discovery/abilities.js +9 -3
- package/dist/discovery/abilities.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +190 -1
- package/dist/server.js.map +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +3 -0
- package/dist/setup.js.map +1 -1
- package/dist/wordpress-client.d.ts +11 -0
- package/dist/wordpress-client.d.ts.map +1 -1
- package/dist/wordpress-client.js +51 -15
- package/dist/wordpress-client.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -9,22 +9,22 @@
|
|
|
9
9
|
<p align="center">
|
|
10
10
|
<strong>The only WordPress MCP with page builder support.</strong><br>
|
|
11
11
|
Edit Divi, Elementor, Bricks & 8 more builders with Cursor, Claude Code & Windsurf.<br>
|
|
12
|
-
|
|
12
|
+
103 total tools: 82 WordPress core + 21 conditional WooCommerce tools.
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
15
|
<p align="center">
|
|
16
16
|
<a href="https://www.npmjs.com/package/@respira/wordpress-mcp-server"><img src="https://img.shields.io/npm/v/@respira/wordpress-mcp-server.svg?style=flat-square&color=blue" alt="npm version"></a>
|
|
17
17
|
<a href="https://www.npmjs.com/package/@respira/wordpress-mcp-server"><img src="https://img.shields.io/npm/dm/@respira/wordpress-mcp-server.svg?style=flat-square" alt="npm downloads"></a>
|
|
18
18
|
<img src="https://img.shields.io/badge/page%20builders-11-green?style=flat-square" alt="11 Page Builders">
|
|
19
|
-
<img src="https://img.shields.io/badge/tools-
|
|
20
|
-
<img src="https://img.shields.io/badge/WooCommerce%20add--on-
|
|
19
|
+
<img src="https://img.shields.io/badge/tools-103-purple?style=flat-square" alt="103 Tools">
|
|
20
|
+
<img src="https://img.shields.io/badge/WooCommerce%20add--on-21%20conditional%20tools-7F54B3?style=flat-square" alt="WooCommerce conditional tools">
|
|
21
21
|
<img src="https://img.shields.io/badge/TypeScript-100%25-blue?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript">
|
|
22
22
|
<a href="https://respira.press"><img src="https://img.shields.io/badge/website-respira.press-orange?style=flat-square" alt="Website"></a>
|
|
23
23
|
</p>
|
|
24
24
|
|
|
25
25
|
<p align="center">
|
|
26
26
|
<a href="https://respira.press">Website</a> •
|
|
27
|
-
<a href="https://respira.press/
|
|
27
|
+
<a href="https://respira.press/docs">Documentation</a> •
|
|
28
28
|
<a href="https://respira.press/releases">Download Plugin</a> •
|
|
29
29
|
<a href="https://respira.press/support">Support</a>
|
|
30
30
|
</p>
|
|
@@ -60,13 +60,13 @@
|
|
|
60
60
|
| Product management tools | Yes (add-on) | No |
|
|
61
61
|
| Order status and operations | Yes (add-on) | No |
|
|
62
62
|
| Inventory and stock tools | Yes (add-on) | No |
|
|
63
|
-
| Sales reports and
|
|
63
|
+
| Sales reports and inventory intelligence | Yes (add-on) | No |
|
|
64
64
|
|
|
65
65
|
### Tool Inventory (v3.3)
|
|
66
66
|
|
|
67
|
-
- `
|
|
68
|
-
- `
|
|
69
|
-
- `
|
|
67
|
+
- `82` always-on `wordpress_*` tools
|
|
68
|
+
- `21` conditional `woocommerce_*` tools (only when WooCommerce add-on is installed and licensed)
|
|
69
|
+
- `103` total MCP tools when WooCommerce add-on is active
|
|
70
70
|
- Automatic `respira/v2` capability negotiation with `respira/v1` fallback for backward compatibility
|
|
71
71
|
|
|
72
72
|
### Supported Page Builders
|
|
@@ -94,10 +94,11 @@
|
|
|
94
94
|
|
|
95
95
|
Respira MCP can expose WooCommerce tools when the WooCommerce add-on is installed and licensed:
|
|
96
96
|
|
|
97
|
-
- Product operations: list/get/create/update/duplicate
|
|
97
|
+
- Product operations: list/get/create/update/duplicate plus category and tag taxonomy operations
|
|
98
98
|
- Order operations: list/get/update status, safe order updates
|
|
99
99
|
- Inventory operations: stock status overview, stock quantity updates
|
|
100
|
-
-
|
|
100
|
+
- Taxonomy operations: product categories and tags (list/get/create/update/delete)
|
|
101
|
+
- Commerce reporting: sales reports
|
|
101
102
|
- Add-on gating: tools auto-register only when add-on is active + licensed
|
|
102
103
|
|
|
103
104
|
WooCommerce add-on details: [respira.press/addons/woocommerce](https://respira.press/addons/woocommerce)
|
|
@@ -230,17 +231,17 @@ Your live site is never at risk.
|
|
|
230
231
|
|
|
231
232
|
Respira works alongside the official WordPress AI building blocks:
|
|
232
233
|
|
|
233
|
-
- **WordPress Abilities API** (WP 6.9+): Respira plugin
|
|
234
|
-
- **WordPress MCP Adapter**: Exposes Respira abilities alongside core WordPress tools automatically (dynamic
|
|
234
|
+
- **WordPress Abilities API** (WP 6.9+): Respira plugin 4.0 registers all MCP tools as WordPress Abilities under `respira` and `respira-woocommerce` categories with rebased IDs (`respira/{tool-name}`)
|
|
235
|
+
- **WordPress MCP Adapter**: Exposes Respira abilities alongside core WordPress tools automatically (dynamic 82/103 list)
|
|
235
236
|
- **Standalone MCP server** (this package): Quick start path — works without the Abilities API
|
|
236
|
-
- **BrowserMCP/WebMCP**: Respira plugin
|
|
237
|
+
- **BrowserMCP/WebMCP**: Respira plugin 4.0 bundles the browser bridge directly, so Chrome can discover and run the same Respira abilities without a separate plugin install
|
|
237
238
|
|
|
238
239
|
### Two Access Paths
|
|
239
240
|
|
|
240
241
|
| Path | How it works | Requirements |
|
|
241
242
|
|------|-------------|--------------|
|
|
242
243
|
| **Standalone** (this npm package) | Install via npm, configure in your AI tool | Node 18+, Respira plugin |
|
|
243
|
-
| **WordPress MCP Adapter** | Abilities auto-discovered via WP-CLI STDIO | WP 6.9+, MCP Adapter plugin, Respira plugin
|
|
244
|
+
| **WordPress MCP Adapter** | Abilities auto-discovered via WP-CLI STDIO | WP 6.9+, MCP Adapter plugin, Respira plugin v4.0+ |
|
|
244
245
|
|
|
245
246
|
Both paths are supported. Use whichever fits your setup.
|
|
246
247
|
|
|
@@ -257,7 +258,7 @@ wp mcp-adapter serve respira-press --user=admin
|
|
|
257
258
|
|
|
258
259
|
---
|
|
259
260
|
|
|
260
|
-
##
|
|
261
|
+
## 82 Core Tools + 21 Conditional WooCommerce Tools (103 Total)
|
|
261
262
|
|
|
262
263
|
### Page Builder Tools
|
|
263
264
|
| Tool | What it does |
|
|
@@ -299,6 +300,10 @@ wp mcp-adapter serve respira-press --user=admin
|
|
|
299
300
|
| `woocommerce_list_products` / `woocommerce_get_product` | Browse and inspect products |
|
|
300
301
|
| `woocommerce_create_product` / `woocommerce_update_product` | Create and update products |
|
|
301
302
|
| `woocommerce_duplicate_product` | Duplicate products safely before edits |
|
|
303
|
+
| `woocommerce_list_categories` / `woocommerce_get_category` | Browse and inspect product categories |
|
|
304
|
+
| `woocommerce_create_category` / `woocommerce_update_category` / `woocommerce_delete_category` | Create, update, and delete product categories |
|
|
305
|
+
| `woocommerce_list_tags` / `woocommerce_get_tag` | Browse and inspect product tags |
|
|
306
|
+
| `woocommerce_create_tag` / `woocommerce_update_tag` / `woocommerce_delete_tag` | Create, update, and delete product tags |
|
|
302
307
|
| `woocommerce_list_orders` / `woocommerce_get_order` | List and inspect orders |
|
|
303
308
|
| `woocommerce_update_order_status` | Update order status with WooCommerce flows |
|
|
304
309
|
| `woocommerce_get_stock_status` / `woocommerce_update_stock` | Inventory and stock management |
|
|
@@ -308,7 +313,7 @@ wp mcp-adapter serve respira-press --user=admin
|
|
|
308
313
|
|
|
309
314
|
Full CRUD operations for all WordPress content types.
|
|
310
315
|
|
|
311
|
-
[Full Tool Reference](https://respira.press/
|
|
316
|
+
[Full Tool Reference](https://respira.press/docs/tools)
|
|
312
317
|
|
|
313
318
|
---
|
|
314
319
|
|
|
@@ -459,7 +464,7 @@ See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for how to add builder support, n
|
|
|
459
464
|
## Links
|
|
460
465
|
|
|
461
466
|
- [Website](https://respira.press)
|
|
462
|
-
- [Documentation](https://respira.press/
|
|
467
|
+
- [Documentation](https://respira.press/docs)
|
|
463
468
|
- [Download Plugin](https://respira.press/releases)
|
|
464
469
|
- [Support](https://respira.press/support)
|
|
465
470
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Respira agent signature helpers.
|
|
3
|
+
*
|
|
4
|
+
* Adds best-effort metadata so WordPress + telemetry can identify
|
|
5
|
+
* which coding assistant is driving MCP traffic.
|
|
6
|
+
*/
|
|
7
|
+
export interface RespiraAgentSignature {
|
|
8
|
+
client: string;
|
|
9
|
+
version: string | null;
|
|
10
|
+
transport: string;
|
|
11
|
+
source: 'env' | 'heuristic' | 'default';
|
|
12
|
+
}
|
|
13
|
+
export declare function detectRespiraAgentSignature(): RespiraAgentSignature;
|
|
14
|
+
export declare function getRespiraAgentHeaders(): Record<string, string>;
|
|
15
|
+
//# sourceMappingURL=agent-signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-signature.d.ts","sourceRoot":"","sources":["../src/agent-signature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,SAAS,CAAC;CACzC;AAmFD,wBAAgB,2BAA2B,IAAI,qBAAqB,CAgBnE;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa/D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Respira agent signature helpers.
|
|
3
|
+
*
|
|
4
|
+
* Adds best-effort metadata so WordPress + telemetry can identify
|
|
5
|
+
* which coding assistant is driving MCP traffic.
|
|
6
|
+
*/
|
|
7
|
+
import { execSync } from 'node:child_process';
|
|
8
|
+
const MAX_HEADER_VALUE = 64;
|
|
9
|
+
function sanitizeHeaderToken(value, fallback = null) {
|
|
10
|
+
if (typeof value !== 'string') {
|
|
11
|
+
return fallback;
|
|
12
|
+
}
|
|
13
|
+
const cleaned = value
|
|
14
|
+
.trim()
|
|
15
|
+
.toLowerCase()
|
|
16
|
+
.replace(/[^a-z0-9._+\-/]/g, '')
|
|
17
|
+
.slice(0, MAX_HEADER_VALUE);
|
|
18
|
+
if (!cleaned) {
|
|
19
|
+
return fallback;
|
|
20
|
+
}
|
|
21
|
+
return cleaned;
|
|
22
|
+
}
|
|
23
|
+
function readParentCommand() {
|
|
24
|
+
try {
|
|
25
|
+
const output = execSync(`ps -o command= -p ${process.ppid}`, {
|
|
26
|
+
encoding: 'utf8',
|
|
27
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
28
|
+
});
|
|
29
|
+
return String(output || '').trim().toLowerCase();
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function detectClientFromHeuristics() {
|
|
36
|
+
const parentCommand = readParentCommand();
|
|
37
|
+
const args = process.argv.join(' ').toLowerCase();
|
|
38
|
+
const envKeys = Object.keys(process.env).join(' ').toLowerCase();
|
|
39
|
+
const envVals = [
|
|
40
|
+
process.env.TERM_PROGRAM,
|
|
41
|
+
process.env.TERM_PROGRAM_VERSION,
|
|
42
|
+
process.env.VSCODE_GIT_IPC_HANDLE,
|
|
43
|
+
process.env.CURSOR_TRACE_ID,
|
|
44
|
+
process.env.CURSOR_AGENT,
|
|
45
|
+
process.env.CLAUDECODE,
|
|
46
|
+
process.env.CLAUDE_CODE_ENTRYPOINT,
|
|
47
|
+
process.env.CODEIUM_ENV,
|
|
48
|
+
]
|
|
49
|
+
.filter(Boolean)
|
|
50
|
+
.join(' ')
|
|
51
|
+
.toLowerCase();
|
|
52
|
+
const fingerprint = `${parentCommand} ${args} ${envKeys} ${envVals}`;
|
|
53
|
+
if (fingerprint.includes('cursor'))
|
|
54
|
+
return 'cursor';
|
|
55
|
+
if (fingerprint.includes('claude'))
|
|
56
|
+
return 'claude-code';
|
|
57
|
+
if (fingerprint.includes('codex'))
|
|
58
|
+
return 'codex';
|
|
59
|
+
if (fingerprint.includes('windsurf') || fingerprint.includes('codeium'))
|
|
60
|
+
return 'windsurf';
|
|
61
|
+
if (fingerprint.includes('copilot'))
|
|
62
|
+
return 'copilot';
|
|
63
|
+
if (fingerprint.includes('gemini'))
|
|
64
|
+
return 'gemini';
|
|
65
|
+
return 'unknown';
|
|
66
|
+
}
|
|
67
|
+
function detectVersion(client) {
|
|
68
|
+
const explicit = sanitizeHeaderToken(process.env.RESPIRA_AGENT_VERSION) ||
|
|
69
|
+
sanitizeHeaderToken(process.env.MCP_AGENT_VERSION) ||
|
|
70
|
+
sanitizeHeaderToken(process.env.AI_AGENT_VERSION);
|
|
71
|
+
if (explicit) {
|
|
72
|
+
return explicit;
|
|
73
|
+
}
|
|
74
|
+
if (client === 'cursor') {
|
|
75
|
+
return sanitizeHeaderToken(process.env.CURSOR_VERSION);
|
|
76
|
+
}
|
|
77
|
+
if (client === 'claude-code') {
|
|
78
|
+
return sanitizeHeaderToken(process.env.CLAUDE_CODE_VERSION || process.env.CLAUDE_VERSION);
|
|
79
|
+
}
|
|
80
|
+
if (client === 'codex') {
|
|
81
|
+
return sanitizeHeaderToken(process.env.CODEX_VERSION);
|
|
82
|
+
}
|
|
83
|
+
if (client === 'windsurf') {
|
|
84
|
+
return sanitizeHeaderToken(process.env.WINDSURF_VERSION || process.env.CODEIUM_VERSION);
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
export function detectRespiraAgentSignature() {
|
|
89
|
+
const explicitClient = sanitizeHeaderToken(process.env.RESPIRA_AGENT_CLIENT) ||
|
|
90
|
+
sanitizeHeaderToken(process.env.MCP_AGENT_CLIENT) ||
|
|
91
|
+
sanitizeHeaderToken(process.env.AI_AGENT_CLIENT);
|
|
92
|
+
const client = explicitClient || detectClientFromHeuristics();
|
|
93
|
+
const transport = sanitizeHeaderToken(process.env.RESPIRA_AGENT_TRANSPORT, 'desktop-mcp') || 'desktop-mcp';
|
|
94
|
+
return {
|
|
95
|
+
client,
|
|
96
|
+
version: detectVersion(client),
|
|
97
|
+
transport,
|
|
98
|
+
source: explicitClient ? 'env' : client === 'unknown' ? 'default' : 'heuristic',
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export function getRespiraAgentHeaders() {
|
|
102
|
+
const signature = detectRespiraAgentSignature();
|
|
103
|
+
const headers = {
|
|
104
|
+
'X-Respira-Agent-Client': signature.client,
|
|
105
|
+
'X-Respira-Agent-Transport': signature.transport,
|
|
106
|
+
'X-Respira-Agent-Source': signature.source,
|
|
107
|
+
};
|
|
108
|
+
if (signature.version) {
|
|
109
|
+
headers['X-Respira-Agent-Version'] = signature.version;
|
|
110
|
+
}
|
|
111
|
+
return headers;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=agent-signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-signature.js","sourceRoot":"","sources":["../src/agent-signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abilities.d.ts","sourceRoot":"","sources":["../../src/discovery/abilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"abilities.d.ts","sourceRoot":"","sources":["../../src/discovery/abilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,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,CAmFnC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* MCP Adapter installed, and informs the user about available
|
|
6
6
|
* integration paths.
|
|
7
7
|
*/
|
|
8
|
+
import { getRespiraAgentHeaders } from '../agent-signature.js';
|
|
8
9
|
/**
|
|
9
10
|
* Check if the WordPress site supports the Abilities API.
|
|
10
11
|
*
|
|
@@ -24,10 +25,13 @@ export async function discoverAbilities(siteUrl, apiKey) {
|
|
|
24
25
|
// Check for Abilities API
|
|
25
26
|
try {
|
|
26
27
|
const abilitiesUrl = `${baseUrl}/wp-json/wp-abilities/v1/abilities`;
|
|
28
|
+
const baseHeaders = {
|
|
29
|
+
'X-Respira-Key': apiKey,
|
|
30
|
+
'X-Respira-API-Key': apiKey,
|
|
31
|
+
...getRespiraAgentHeaders(),
|
|
32
|
+
};
|
|
27
33
|
const response = await fetch(abilitiesUrl, {
|
|
28
|
-
headers:
|
|
29
|
-
'X-Respira-Key': apiKey,
|
|
30
|
-
},
|
|
34
|
+
headers: baseHeaders,
|
|
31
35
|
signal: AbortSignal.timeout(10000),
|
|
32
36
|
});
|
|
33
37
|
if (response.ok) {
|
|
@@ -50,6 +54,8 @@ export async function discoverAbilities(siteUrl, apiKey) {
|
|
|
50
54
|
const response = await fetch(mcpUrl, {
|
|
51
55
|
headers: {
|
|
52
56
|
'X-Respira-Key': apiKey,
|
|
57
|
+
'X-Respira-API-Key': apiKey,
|
|
58
|
+
...getRespiraAgentHeaders(),
|
|
53
59
|
},
|
|
54
60
|
signal: AbortSignal.timeout(10000),
|
|
55
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abilities.js","sourceRoot":"","sources":["../../src/discovery/abilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"abilities.js","sourceRoot":"","sources":["../../src/discovery/abilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAU/D;;;;;;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,WAAW,GAAG;YAClB,eAAe,EAAE,MAAM;YACvB,mBAAmB,EAAE,MAAM;YAC3B,GAAG,sBAAsB,EAAE;SAC5B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;YACzC,OAAO,EAAE,WAAW;YACpB,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;gBACvB,mBAAmB,EAAE,MAAM;gBAC3B,GAAG,sBAAsB,EAAE;aAC5B;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/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,cAAc,CAAwB;IAE9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAW;gBAEzC,WAAW,EAAE,mBAAmB,EAAE;IA+B9C,OAAO,CAAC,aAAa;YAwGP,kBAAkB;YA6BlB,yBAAyB;YASzB,QAAQ;YAssDR,2BAA2B;IAazC,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,cAAc,CAAwB;IAE9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAW;gBAEzC,WAAW,EAAE,mBAAmB,EAAE;IA+B9C,OAAO,CAAC,aAAa;YAwGP,kBAAkB;YA6BlB,yBAAyB;YASzB,QAAQ;YAssDR,2BAA2B;IAazC,OAAO,CAAC,mBAAmB;YAwTb,cAAc;IAmatB,GAAG;CAKV"}
|
package/dist/server.js
CHANGED
|
@@ -13,7 +13,7 @@ export class RespiraWordPressServer {
|
|
|
13
13
|
currentSite = null;
|
|
14
14
|
sites = new Map();
|
|
15
15
|
versionChecker;
|
|
16
|
-
static MCP_SERVER_VERSION = '3.3.
|
|
16
|
+
static MCP_SERVER_VERSION = '3.3.4';
|
|
17
17
|
constructor(siteConfigs) {
|
|
18
18
|
this.server = new Server({
|
|
19
19
|
name: 'respira-wordpress',
|
|
@@ -1951,6 +1951,16 @@ export class RespiraWordPressServer {
|
|
|
1951
1951
|
type: { type: 'string', description: 'simple or variable' },
|
|
1952
1952
|
regular_price: { type: 'string', description: 'Regular price' },
|
|
1953
1953
|
status: { type: 'string', description: 'draft, pending, publish' },
|
|
1954
|
+
category_ids: {
|
|
1955
|
+
type: 'array',
|
|
1956
|
+
items: { type: 'number' },
|
|
1957
|
+
description: 'Optional category IDs to assign',
|
|
1958
|
+
},
|
|
1959
|
+
tag_ids: {
|
|
1960
|
+
type: 'array',
|
|
1961
|
+
items: { type: 'number' },
|
|
1962
|
+
description: 'Optional tag IDs to assign',
|
|
1963
|
+
},
|
|
1954
1964
|
},
|
|
1955
1965
|
required: ['name'],
|
|
1956
1966
|
},
|
|
@@ -1967,6 +1977,26 @@ export class RespiraWordPressServer {
|
|
|
1967
1977
|
sale_price: { type: 'string', description: 'Sale price' },
|
|
1968
1978
|
stock_quantity: { type: 'number', description: 'Stock quantity' },
|
|
1969
1979
|
stock_status: { type: 'string', description: 'instock, outofstock, onbackorder' },
|
|
1980
|
+
category_ids: {
|
|
1981
|
+
type: 'array',
|
|
1982
|
+
items: { type: 'number' },
|
|
1983
|
+
description: 'Category IDs to assign',
|
|
1984
|
+
},
|
|
1985
|
+
categories: {
|
|
1986
|
+
type: 'array',
|
|
1987
|
+
items: {},
|
|
1988
|
+
description: 'Alternative category payload (IDs, names, slugs, or objects with id/name/slug)',
|
|
1989
|
+
},
|
|
1990
|
+
tag_ids: {
|
|
1991
|
+
type: 'array',
|
|
1992
|
+
items: { type: 'number' },
|
|
1993
|
+
description: 'Tag IDs to assign',
|
|
1994
|
+
},
|
|
1995
|
+
tags: {
|
|
1996
|
+
type: 'array',
|
|
1997
|
+
items: {},
|
|
1998
|
+
description: 'Alternative tag payload (IDs, names, slugs, or objects with id/name/slug)',
|
|
1999
|
+
},
|
|
1970
2000
|
},
|
|
1971
2001
|
required: ['id'],
|
|
1972
2002
|
},
|
|
@@ -1983,6 +2013,141 @@ export class RespiraWordPressServer {
|
|
|
1983
2013
|
required: ['id'],
|
|
1984
2014
|
},
|
|
1985
2015
|
},
|
|
2016
|
+
{
|
|
2017
|
+
name: 'woocommerce_list_categories',
|
|
2018
|
+
description: 'List WooCommerce product categories.',
|
|
2019
|
+
inputSchema: {
|
|
2020
|
+
type: 'object',
|
|
2021
|
+
properties: {
|
|
2022
|
+
search: { type: 'string', description: 'Search categories by name' },
|
|
2023
|
+
parent: { type: 'number', description: 'Filter by parent category ID' },
|
|
2024
|
+
hide_empty: { type: 'boolean', description: 'Hide categories without products' },
|
|
2025
|
+
per_page: { type: 'number', description: 'Categories per page (1-100)' },
|
|
2026
|
+
page: { type: 'number', description: 'Page number' },
|
|
2027
|
+
},
|
|
2028
|
+
},
|
|
2029
|
+
readOnlyHint: true,
|
|
2030
|
+
},
|
|
2031
|
+
{
|
|
2032
|
+
name: 'woocommerce_get_category',
|
|
2033
|
+
description: 'Get detailed information for a single WooCommerce product category.',
|
|
2034
|
+
inputSchema: {
|
|
2035
|
+
type: 'object',
|
|
2036
|
+
properties: {
|
|
2037
|
+
id: { type: 'number', description: 'Category ID' },
|
|
2038
|
+
},
|
|
2039
|
+
required: ['id'],
|
|
2040
|
+
},
|
|
2041
|
+
readOnlyHint: true,
|
|
2042
|
+
},
|
|
2043
|
+
{
|
|
2044
|
+
name: 'woocommerce_create_category',
|
|
2045
|
+
description: 'Create a WooCommerce product category.',
|
|
2046
|
+
inputSchema: {
|
|
2047
|
+
type: 'object',
|
|
2048
|
+
properties: {
|
|
2049
|
+
name: { type: 'string', description: 'Category name' },
|
|
2050
|
+
slug: { type: 'string', description: 'Optional URL slug' },
|
|
2051
|
+
description: { type: 'string', description: 'Optional category description' },
|
|
2052
|
+
parent: { type: 'number', description: 'Optional parent category ID' },
|
|
2053
|
+
},
|
|
2054
|
+
required: ['name'],
|
|
2055
|
+
},
|
|
2056
|
+
},
|
|
2057
|
+
{
|
|
2058
|
+
name: 'woocommerce_update_category',
|
|
2059
|
+
description: 'Update a WooCommerce product category.',
|
|
2060
|
+
inputSchema: {
|
|
2061
|
+
type: 'object',
|
|
2062
|
+
properties: {
|
|
2063
|
+
id: { type: 'number', description: 'Category ID' },
|
|
2064
|
+
name: { type: 'string', description: 'Category name' },
|
|
2065
|
+
slug: { type: 'string', description: 'Optional URL slug' },
|
|
2066
|
+
description: { type: 'string', description: 'Category description' },
|
|
2067
|
+
parent: { type: 'number', description: 'Parent category ID (0 to move to root)' },
|
|
2068
|
+
},
|
|
2069
|
+
required: ['id'],
|
|
2070
|
+
},
|
|
2071
|
+
idempotentHint: true,
|
|
2072
|
+
},
|
|
2073
|
+
{
|
|
2074
|
+
name: 'woocommerce_delete_category',
|
|
2075
|
+
description: 'Delete a WooCommerce product category.',
|
|
2076
|
+
inputSchema: {
|
|
2077
|
+
type: 'object',
|
|
2078
|
+
properties: {
|
|
2079
|
+
id: { type: 'number', description: 'Category ID' },
|
|
2080
|
+
},
|
|
2081
|
+
required: ['id'],
|
|
2082
|
+
},
|
|
2083
|
+
destructiveHint: true,
|
|
2084
|
+
},
|
|
2085
|
+
{
|
|
2086
|
+
name: 'woocommerce_list_tags',
|
|
2087
|
+
description: 'List WooCommerce product tags.',
|
|
2088
|
+
inputSchema: {
|
|
2089
|
+
type: 'object',
|
|
2090
|
+
properties: {
|
|
2091
|
+
search: { type: 'string', description: 'Search tags by name' },
|
|
2092
|
+
hide_empty: { type: 'boolean', description: 'Hide tags without products' },
|
|
2093
|
+
per_page: { type: 'number', description: 'Tags per page (1-100)' },
|
|
2094
|
+
page: { type: 'number', description: 'Page number' },
|
|
2095
|
+
},
|
|
2096
|
+
},
|
|
2097
|
+
readOnlyHint: true,
|
|
2098
|
+
},
|
|
2099
|
+
{
|
|
2100
|
+
name: 'woocommerce_get_tag',
|
|
2101
|
+
description: 'Get detailed information for a single WooCommerce product tag.',
|
|
2102
|
+
inputSchema: {
|
|
2103
|
+
type: 'object',
|
|
2104
|
+
properties: {
|
|
2105
|
+
id: { type: 'number', description: 'Tag ID' },
|
|
2106
|
+
},
|
|
2107
|
+
required: ['id'],
|
|
2108
|
+
},
|
|
2109
|
+
readOnlyHint: true,
|
|
2110
|
+
},
|
|
2111
|
+
{
|
|
2112
|
+
name: 'woocommerce_create_tag',
|
|
2113
|
+
description: 'Create a WooCommerce product tag.',
|
|
2114
|
+
inputSchema: {
|
|
2115
|
+
type: 'object',
|
|
2116
|
+
properties: {
|
|
2117
|
+
name: { type: 'string', description: 'Tag name' },
|
|
2118
|
+
slug: { type: 'string', description: 'Optional URL slug' },
|
|
2119
|
+
description: { type: 'string', description: 'Optional tag description' },
|
|
2120
|
+
},
|
|
2121
|
+
required: ['name'],
|
|
2122
|
+
},
|
|
2123
|
+
},
|
|
2124
|
+
{
|
|
2125
|
+
name: 'woocommerce_update_tag',
|
|
2126
|
+
description: 'Update a WooCommerce product tag.',
|
|
2127
|
+
inputSchema: {
|
|
2128
|
+
type: 'object',
|
|
2129
|
+
properties: {
|
|
2130
|
+
id: { type: 'number', description: 'Tag ID' },
|
|
2131
|
+
name: { type: 'string', description: 'Tag name' },
|
|
2132
|
+
slug: { type: 'string', description: 'Optional URL slug' },
|
|
2133
|
+
description: { type: 'string', description: 'Tag description' },
|
|
2134
|
+
},
|
|
2135
|
+
required: ['id'],
|
|
2136
|
+
},
|
|
2137
|
+
idempotentHint: true,
|
|
2138
|
+
},
|
|
2139
|
+
{
|
|
2140
|
+
name: 'woocommerce_delete_tag',
|
|
2141
|
+
description: 'Delete a WooCommerce product tag.',
|
|
2142
|
+
inputSchema: {
|
|
2143
|
+
type: 'object',
|
|
2144
|
+
properties: {
|
|
2145
|
+
id: { type: 'number', description: 'Tag ID' },
|
|
2146
|
+
},
|
|
2147
|
+
required: ['id'],
|
|
2148
|
+
},
|
|
2149
|
+
destructiveHint: true,
|
|
2150
|
+
},
|
|
1986
2151
|
{
|
|
1987
2152
|
name: 'woocommerce_list_orders',
|
|
1988
2153
|
description: 'List WooCommerce orders.',
|
|
@@ -2314,6 +2479,30 @@ export class RespiraWordPressServer {
|
|
|
2314
2479
|
}
|
|
2315
2480
|
case 'woocommerce_duplicate_product':
|
|
2316
2481
|
return await this.currentSite.woocommerceDuplicateProduct(args.id);
|
|
2482
|
+
case 'woocommerce_list_categories':
|
|
2483
|
+
return await this.currentSite.woocommerceListCategories(args);
|
|
2484
|
+
case 'woocommerce_get_category':
|
|
2485
|
+
return await this.currentSite.woocommerceGetCategory(args.id);
|
|
2486
|
+
case 'woocommerce_create_category':
|
|
2487
|
+
return await this.currentSite.woocommerceCreateCategory(args);
|
|
2488
|
+
case 'woocommerce_update_category': {
|
|
2489
|
+
const { id, ...payload } = args;
|
|
2490
|
+
return await this.currentSite.woocommerceUpdateCategory(id, payload);
|
|
2491
|
+
}
|
|
2492
|
+
case 'woocommerce_delete_category':
|
|
2493
|
+
return await this.currentSite.woocommerceDeleteCategory(args.id);
|
|
2494
|
+
case 'woocommerce_list_tags':
|
|
2495
|
+
return await this.currentSite.woocommerceListTags(args);
|
|
2496
|
+
case 'woocommerce_get_tag':
|
|
2497
|
+
return await this.currentSite.woocommerceGetTag(args.id);
|
|
2498
|
+
case 'woocommerce_create_tag':
|
|
2499
|
+
return await this.currentSite.woocommerceCreateTag(args);
|
|
2500
|
+
case 'woocommerce_update_tag': {
|
|
2501
|
+
const { id, ...payload } = args;
|
|
2502
|
+
return await this.currentSite.woocommerceUpdateTag(id, payload);
|
|
2503
|
+
}
|
|
2504
|
+
case 'woocommerce_delete_tag':
|
|
2505
|
+
return await this.currentSite.woocommerceDeleteTag(args.id);
|
|
2317
2506
|
case 'woocommerce_list_orders':
|
|
2318
2507
|
return await this.currentSite.woocommerceListOrders(args);
|
|
2319
2508
|
case 'woocommerce_get_order':
|