@mangerik/wordpress-mcp 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +19 -9
- package/SECURITY.md +42 -0
- package/docs/TOOLS.md +1458 -0
- package/docs/USAGE.md +211 -0
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.1.2] - 2026-05-17
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- `SECURITY.md` documenting supply chain practices and reporting policy.
|
|
12
|
+
- GitHub Actions workflows for CI (test on Node 18/20/22) and tag-triggered
|
|
13
|
+
publish with `--provenance` (npm provenance via OIDC).
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Documented the GitHub Actions release flow as the recommended path; local
|
|
17
|
+
publish is now positioned as a fallback.
|
|
18
|
+
|
|
19
|
+
## [0.1.1] - 2026-05-17
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- `docs/USAGE.md` — bilingual (Indonesian + English) prompt examples covering
|
|
23
|
+
authoring, audit, WooCommerce, SEO, block themes, batch, and multisite.
|
|
24
|
+
- `docs/TOOLS.md` — auto-generated reference for all 96 tools, complete with
|
|
25
|
+
argument tables, types, and read-only / destructive hints.
|
|
26
|
+
- `npm run docs` script that regenerates `docs/TOOLS.md` from the running
|
|
27
|
+
server (also runs automatically before publish).
|
|
28
|
+
- `docs/` is now shipped in the npm tarball.
|
|
29
|
+
|
|
8
30
|
## [0.1.0] - 2026-05-17
|
|
9
31
|
|
|
10
32
|
Initial public preview. Tagged `beta` on npm while we collect feedback from
|
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# WordPress MCP Server
|
|
2
2
|
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/mangerik/WordPress-MCP/main/assets/cover.jpg" alt="WordPress MCP Server" width="100%" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
3
7
|
A [Model Context Protocol](https://modelcontextprotocol.io) server that lets any MCP-compatible AI client (Claude Desktop, Kiro, Cursor, Continue, etc.) read and manage a WordPress site through the official REST API.
|
|
4
8
|
|
|
5
9
|
## Features
|
|
@@ -37,7 +41,7 @@ npx -y @mangerik/wordpress-mcp
|
|
|
37
41
|
### From source
|
|
38
42
|
|
|
39
43
|
```bash
|
|
40
|
-
git clone https://github.com/mangerik/
|
|
44
|
+
git clone https://github.com/mangerik/WordPress-MCP.git
|
|
41
45
|
cd wordpress-mcp
|
|
42
46
|
npm install
|
|
43
47
|
npm run build
|
|
@@ -225,6 +229,20 @@ Both plugins store SEO data in post meta with different keys; one uniform tool r
|
|
|
225
229
|
### JWT diagnostics (only in JWT mode)
|
|
226
230
|
- `wp_jwt_validate` — validate the active token via `/jwt-auth/v1/token/validate`.
|
|
227
231
|
|
|
232
|
+
## Documentation
|
|
233
|
+
|
|
234
|
+
- 📖 **[USAGE.md](docs/USAGE.md)** — Real-world prompt examples (Indonesian + English): authoring, audit, WooCommerce, SEO, batch, multisite, etc.
|
|
235
|
+
- 📚 **[TOOLS.md](docs/TOOLS.md)** — Full reference for all 96 tools with arguments, types, and hints. Auto-generated from the running server.
|
|
236
|
+
- 🔒 **[SECURITY.md](SECURITY.md)** — Supply chain practices (npm provenance, no install scripts, 2FA) and how to report vulnerabilities.
|
|
237
|
+
|
|
238
|
+
## Notes & gotchas
|
|
239
|
+
|
|
240
|
+
- **`status` defaults to `draft`** for `wp_create_post` / `wp_create_page`. Override explicitly if you really want to publish.
|
|
241
|
+
- **Custom fields (`meta`)** must be registered server-side with `register_post_meta(..., 'show_in_rest' => true)` to be writable through REST.
|
|
242
|
+
- **Use `_fields`** to slim responses — e.g. `_fields: "id,title,slug"` cuts response size by ~80% for list calls.
|
|
243
|
+
- **`context=edit`** is required to receive raw (unfiltered) content for round-tripping through `wp_update_post`.
|
|
244
|
+
- The server logs to **stderr only**. Stdout is reserved for JSON-RPC framing.
|
|
245
|
+
|
|
228
246
|
## Resources
|
|
229
247
|
|
|
230
248
|
| URI | What |
|
|
@@ -243,14 +261,6 @@ Both plugins store SEO data in post meta with different keys; one uniform tool r
|
|
|
243
261
|
| `translate_page` | `page_id`, `target_language`, `create_new?` |
|
|
244
262
|
| `draft_post` | `topic`, `tone?`, `word_count?` |
|
|
245
263
|
|
|
246
|
-
## Notes & gotchas
|
|
247
|
-
|
|
248
|
-
- **`status` defaults to `draft`** for `wp_create_post` / `wp_create_page`. Override explicitly if you really want to publish.
|
|
249
|
-
- **Custom fields (`meta`)** must be registered server-side with `register_post_meta(..., 'show_in_rest' => true)` to be writable through REST.
|
|
250
|
-
- **Use `_fields`** to slim responses — e.g. `_fields: "id,title,slug"` cuts response size by ~80% for list calls.
|
|
251
|
-
- **`context=edit`** is required to receive raw (unfiltered) content for round-tripping through `wp_update_post`.
|
|
252
|
-
- The server logs to **stderr only**. Stdout is reserved for JSON-RPC framing.
|
|
253
|
-
|
|
254
264
|
## License
|
|
255
265
|
|
|
256
266
|
MIT
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Reporting a vulnerability
|
|
4
|
+
|
|
5
|
+
If you discover a security issue, **please do not open a public GitHub issue**.
|
|
6
|
+
Instead, email the maintainer directly:
|
|
7
|
+
|
|
8
|
+
📧 erikhidayatullah23@gmail.com
|
|
9
|
+
|
|
10
|
+
We aim to respond within 7 days and disclose responsibly once a fix is shipped.
|
|
11
|
+
|
|
12
|
+
## Supply chain practices
|
|
13
|
+
|
|
14
|
+
This package follows these supply chain security measures:
|
|
15
|
+
|
|
16
|
+
- **npm provenance** — every release is signed via [npm's provenance feature](https://docs.npmjs.com/generating-provenance-statements)
|
|
17
|
+
using GitHub Actions OIDC, so consumers can cryptographically verify each
|
|
18
|
+
tarball was built from a specific commit in the public repo.
|
|
19
|
+
- **No install / postinstall scripts** — the package never executes code on
|
|
20
|
+
install.
|
|
21
|
+
- **No native bindings** — pure TypeScript / JavaScript, easy to audit.
|
|
22
|
+
- **2FA on npm publish** — the maintainer's npm account requires two-factor
|
|
23
|
+
authentication for write actions.
|
|
24
|
+
- **Pinned dependencies** — runtime deps are kept to four well-known packages
|
|
25
|
+
(`@modelcontextprotocol/sdk`, `axios`, `form-data`, `zod`). No transitive
|
|
26
|
+
surprises from one-letter abandoned modules.
|
|
27
|
+
- **Reproducible builds** — `npm pack --dry-run` produces a deterministic
|
|
28
|
+
list; CI runs `typecheck → build → smoke → docs` before every publish.
|
|
29
|
+
|
|
30
|
+
## Verifying a published version
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Inspect the provenance attestation:
|
|
34
|
+
npm audit signatures
|
|
35
|
+
|
|
36
|
+
# Or for a specific install:
|
|
37
|
+
npm install @mangerik/wordpress-mcp
|
|
38
|
+
npx @npmcli/get-provenance @mangerik/wordpress-mcp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If `npm audit signatures` reports anything other than “verified”, do not
|
|
42
|
+
trust that install — please report to the email above.
|