mcp-wordpress 2.2.0 → 2.4.0
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 +503 -0
- package/dist/client/api.d.ts +90 -0
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +90 -0
- package/dist/client/api.js.map +1 -1
- package/dist/security/AISecurityScanner.d.ts +175 -0
- package/dist/security/AISecurityScanner.d.ts.map +1 -0
- package/dist/security/AISecurityScanner.js +645 -0
- package/dist/security/AISecurityScanner.js.map +1 -0
- package/dist/security/AutomatedRemediation.d.ts +145 -0
- package/dist/security/AutomatedRemediation.d.ts.map +1 -0
- package/dist/security/AutomatedRemediation.js +535 -0
- package/dist/security/AutomatedRemediation.js.map +1 -0
- package/dist/security/SecurityCIPipeline.d.ts +213 -0
- package/dist/security/SecurityCIPipeline.d.ts.map +1 -0
- package/dist/security/SecurityCIPipeline.js +684 -0
- package/dist/security/SecurityCIPipeline.js.map +1 -0
- package/dist/security/SecurityConfigManager.d.ts +294 -0
- package/dist/security/SecurityConfigManager.d.ts.map +1 -0
- package/dist/security/SecurityConfigManager.js +553 -0
- package/dist/security/SecurityConfigManager.js.map +1 -0
- package/dist/security/SecurityMonitoring.d.ts +245 -0
- package/dist/security/SecurityMonitoring.d.ts.map +1 -0
- package/dist/security/SecurityMonitoring.js +596 -0
- package/dist/security/SecurityMonitoring.js.map +1 -0
- package/dist/security/SecurityReviewer.d.ts +168 -0
- package/dist/security/SecurityReviewer.d.ts.map +1 -0
- package/dist/security/SecurityReviewer.js +683 -0
- package/dist/security/SecurityReviewer.js.map +1 -0
- package/dist/security/index.d.ts +182 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +189 -0
- package/dist/security/index.js.map +1 -0
- package/dist/tools/media.d.ts +43 -4
- package/dist/tools/media.d.ts.map +1 -1
- package/dist/tools/media.js +43 -4
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/posts.d.ts +225 -4
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +225 -4
- package/dist/tools/posts.js.map +1 -1
- package/docs/DOCKER_PUBLISHING_TROUBLESHOOTING.md +233 -0
- package/docs/PUBLISHING-TROUBLESHOOTING.md +227 -0
- package/docs/api/README.md +53 -11
- package/docs/api/openapi.json +10 -10
- package/docs/api/summary.json +1 -1
- package/docs/api/tools/wp_create_post.md +9 -3
- package/docs/api/tools/wp_delete_post.md +2 -3
- package/docs/api/tools/wp_get_current_user.md +7 -1
- package/docs/api/tools/wp_get_post.md +2 -3
- package/docs/api/tools/wp_get_post_revisions.md +1 -1
- package/docs/api/tools/wp_list_posts.md +10 -3
- package/docs/api/tools/wp_list_users.md +8 -1
- package/docs/api/tools/wp_search_site.md +8 -1
- package/docs/api/tools/wp_test_auth.md +8 -1
- package/docs/api/tools/wp_update_post.md +2 -3
- package/docs/examples/docker-production.md +801 -0
- package/docs/examples/multi-site-setup.md +575 -0
- package/docs/examples/single-site-setup.md +390 -0
- package/docs/examples/use-case-workflows.md +469 -0
- package/package.json +11 -3
- package/src/client/api.ts +90 -0
- package/src/security/AISecurityScanner.ts +780 -0
- package/src/security/AutomatedRemediation.ts +665 -0
- package/src/security/SecurityCIPipeline.ts +969 -0
- package/src/security/SecurityConfigManager.ts +829 -0
- package/src/security/SecurityMonitoring.ts +841 -0
- package/src/security/SecurityReviewer.ts +855 -0
- package/src/security/index.ts +249 -0
- package/src/tools/media.ts +43 -4
- package/src/tools/posts.ts +225 -4
package/README.md
CHANGED
|
@@ -135,6 +135,183 @@ npx -y @smithery/cli install @docdyhr/mcp-wordpress --client claude
|
|
|
135
135
|
- 📦 **[Smithery Setup](docs/user-guides/SMITHERY_SETUP.md)** - MCP package manager (detailed guide)
|
|
136
136
|
- 🔧 **[Manual Build](docs/developer/BUILD_SYSTEM.md)** - Custom builds
|
|
137
137
|
|
|
138
|
+
## 📋 Configuration Examples
|
|
139
|
+
|
|
140
|
+
### Single Site Setup
|
|
141
|
+
|
|
142
|
+
**Environment Variables (.env)**
|
|
143
|
+
```bash
|
|
144
|
+
WORDPRESS_SITE_URL=https://myblog.com
|
|
145
|
+
WORDPRESS_USERNAME=admin
|
|
146
|
+
WORDPRESS_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx
|
|
147
|
+
WORDPRESS_AUTH_METHOD=app-password
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Claude Desktop Config**
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"mcpServers": {
|
|
154
|
+
"mcp-wordpress": {
|
|
155
|
+
"command": "npx",
|
|
156
|
+
"args": ["-y", "mcp-wordpress"],
|
|
157
|
+
"env": {
|
|
158
|
+
"WORDPRESS_SITE_URL": "https://myblog.com",
|
|
159
|
+
"WORDPRESS_USERNAME": "admin",
|
|
160
|
+
"WORDPRESS_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Multi-Site Agency Setup
|
|
168
|
+
|
|
169
|
+
**Configuration File (mcp-wordpress.config.json)**
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"sites": [
|
|
173
|
+
{
|
|
174
|
+
"id": "main-corporate",
|
|
175
|
+
"name": "Corporate Website",
|
|
176
|
+
"config": {
|
|
177
|
+
"WORDPRESS_SITE_URL": "https://company.com",
|
|
178
|
+
"WORDPRESS_USERNAME": "admin",
|
|
179
|
+
"WORDPRESS_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx",
|
|
180
|
+
"WORDPRESS_AUTH_METHOD": "app-password"
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"id": "client-restaurant",
|
|
185
|
+
"name": "Restaurant Client",
|
|
186
|
+
"config": {
|
|
187
|
+
"WORDPRESS_SITE_URL": "https://bestrestaurant.com",
|
|
188
|
+
"WORDPRESS_USERNAME": "editor",
|
|
189
|
+
"WORDPRESS_APP_PASSWORD": "yyyy yyyy yyyy yyyy yyyy yyyy",
|
|
190
|
+
"WORDPRESS_AUTH_METHOD": "app-password"
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "client-ecommerce",
|
|
195
|
+
"name": "E-commerce Client",
|
|
196
|
+
"config": {
|
|
197
|
+
"WORDPRESS_SITE_URL": "https://onlinestore.com",
|
|
198
|
+
"WORDPRESS_USERNAME": "shopmanager",
|
|
199
|
+
"WORDPRESS_APP_PASSWORD": "zzzz zzzz zzzz zzzz zzzz zzzz",
|
|
200
|
+
"WORDPRESS_AUTH_METHOD": "app-password"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Development Environment
|
|
208
|
+
|
|
209
|
+
**Local WordPress with Docker**
|
|
210
|
+
```yaml
|
|
211
|
+
# docker-compose.yml
|
|
212
|
+
version: '3.8'
|
|
213
|
+
services:
|
|
214
|
+
wordpress:
|
|
215
|
+
image: wordpress:latest
|
|
216
|
+
ports:
|
|
217
|
+
- "8080:80"
|
|
218
|
+
environment:
|
|
219
|
+
WORDPRESS_DB_HOST: db
|
|
220
|
+
WORDPRESS_DB_USER: wordpress
|
|
221
|
+
WORDPRESS_DB_PASSWORD: wordpress
|
|
222
|
+
WORDPRESS_DB_NAME: wordpress
|
|
223
|
+
volumes:
|
|
224
|
+
- wordpress_data:/var/www/html
|
|
225
|
+
|
|
226
|
+
db:
|
|
227
|
+
image: mysql:8.0
|
|
228
|
+
environment:
|
|
229
|
+
MYSQL_DATABASE: wordpress
|
|
230
|
+
MYSQL_USER: wordpress
|
|
231
|
+
MYSQL_PASSWORD: wordpress
|
|
232
|
+
MYSQL_ROOT_PASSWORD: rootpassword
|
|
233
|
+
volumes:
|
|
234
|
+
- db_data:/var/lib/mysql
|
|
235
|
+
|
|
236
|
+
volumes:
|
|
237
|
+
wordpress_data:
|
|
238
|
+
db_data:
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**MCP WordPress Development Config**
|
|
242
|
+
```json
|
|
243
|
+
{
|
|
244
|
+
"sites": [
|
|
245
|
+
{
|
|
246
|
+
"id": "local-dev",
|
|
247
|
+
"name": "Local Development",
|
|
248
|
+
"config": {
|
|
249
|
+
"WORDPRESS_SITE_URL": "http://localhost:8080",
|
|
250
|
+
"WORDPRESS_USERNAME": "admin",
|
|
251
|
+
"WORDPRESS_APP_PASSWORD": "dev-password-here",
|
|
252
|
+
"WORDPRESS_AUTH_METHOD": "app-password"
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
]
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Production Deployment
|
|
260
|
+
|
|
261
|
+
**Server Environment Variables**
|
|
262
|
+
```bash
|
|
263
|
+
# /etc/environment or systemd service
|
|
264
|
+
WORDPRESS_SITE_URL=https://production-site.com
|
|
265
|
+
WORDPRESS_USERNAME=api-user
|
|
266
|
+
WORDPRESS_APP_PASSWORD=secure-production-password
|
|
267
|
+
WORDPRESS_AUTH_METHOD=app-password
|
|
268
|
+
NODE_ENV=production
|
|
269
|
+
CACHE_ENABLED=true
|
|
270
|
+
CACHE_TTL=3600
|
|
271
|
+
RATE_LIMIT_ENABLED=true
|
|
272
|
+
DEBUG=false
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Docker Production Setup**
|
|
276
|
+
```dockerfile
|
|
277
|
+
# Dockerfile.production
|
|
278
|
+
FROM node:20-alpine
|
|
279
|
+
WORKDIR /app
|
|
280
|
+
COPY package*.json ./
|
|
281
|
+
RUN npm ci --only=production
|
|
282
|
+
COPY dist/ ./dist/
|
|
283
|
+
EXPOSE 3000
|
|
284
|
+
USER node
|
|
285
|
+
CMD ["node", "dist/index.js"]
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### JWT Authentication Setup
|
|
289
|
+
|
|
290
|
+
**WordPress Plugin Configuration**
|
|
291
|
+
```php
|
|
292
|
+
// wp-config.php
|
|
293
|
+
define('JWT_AUTH_SECRET_KEY', 'your-secret-key-here');
|
|
294
|
+
define('JWT_AUTH_CORS_ENABLE', true);
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**MCP Configuration**
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"sites": [
|
|
301
|
+
{
|
|
302
|
+
"id": "jwt-site",
|
|
303
|
+
"name": "JWT Authentication Site",
|
|
304
|
+
"config": {
|
|
305
|
+
"WORDPRESS_SITE_URL": "https://site-with-jwt.com",
|
|
306
|
+
"WORDPRESS_USERNAME": "api-user",
|
|
307
|
+
"WORDPRESS_PASSWORD": "user-password",
|
|
308
|
+
"WORDPRESS_AUTH_METHOD": "jwt"
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
]
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
138
315
|
## 🌟 What Makes This Special
|
|
139
316
|
|
|
140
317
|
### 🏆 Feature Comparison
|
|
@@ -359,8 +536,333 @@ You: "Compare traffic between main-site and client-blog"
|
|
|
359
536
|
Claude: "Here's a comparison of both sites..."
|
|
360
537
|
```
|
|
361
538
|
|
|
539
|
+
## 🎨 Real-World Workflows
|
|
540
|
+
|
|
541
|
+
### Content Marketing Agency Workflow
|
|
542
|
+
|
|
543
|
+
**Scenario**: Managing 20+ client blogs with consistent SEO optimization
|
|
544
|
+
|
|
545
|
+
```text
|
|
546
|
+
💬 "Analyze the top 5 performing posts across all sites and create similar content for underperforming clients"
|
|
547
|
+
💬 "Batch update all client sites with the new privacy policy footer"
|
|
548
|
+
💬 "Generate a weekly performance report comparing all client sites"
|
|
549
|
+
💬 "Create social media snippets from the latest blog posts on each site"
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
### E-commerce Store Management
|
|
553
|
+
|
|
554
|
+
**Scenario**: Managing product launches and inventory updates
|
|
555
|
+
|
|
556
|
+
```text
|
|
557
|
+
💬 "Create a product launch post with gallery, specifications, and pricing for the new iPhone case"
|
|
558
|
+
💬 "Update all 'out of stock' products with restock notifications"
|
|
559
|
+
💬 "Generate product comparison pages for similar items"
|
|
560
|
+
💬 "Create seasonal landing pages with current promotions"
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### News Website Operations
|
|
564
|
+
|
|
565
|
+
**Scenario**: Breaking news and content moderation
|
|
566
|
+
|
|
567
|
+
```text
|
|
568
|
+
💬 "Publish breaking news about the tech merger with social media integration"
|
|
569
|
+
💬 "Moderate comments on controversial articles and flag inappropriate content"
|
|
570
|
+
💬 "Create topic clusters around trending news stories"
|
|
571
|
+
💬 "Schedule social media posts for peak engagement times"
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### Educational Institution Portal
|
|
575
|
+
|
|
576
|
+
**Scenario**: Course management and student communications
|
|
577
|
+
|
|
578
|
+
```text
|
|
579
|
+
💬 "Create course announcement pages with enrollment forms"
|
|
580
|
+
💬 "Update faculty profiles with new publications and achievements"
|
|
581
|
+
💬 "Generate student newsletter with upcoming events and deadlines"
|
|
582
|
+
💬 "Moderate discussion forums and highlight valuable contributions"
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
### Non-Profit Organization
|
|
586
|
+
|
|
587
|
+
**Scenario**: Fundraising campaigns and volunteer coordination
|
|
588
|
+
|
|
589
|
+
```text
|
|
590
|
+
💬 "Create donation campaign pages with progress tracking"
|
|
591
|
+
💬 "Update volunteer opportunity listings with current needs"
|
|
592
|
+
💬 "Generate impact reports showing donation effectiveness"
|
|
593
|
+
💬 "Create event registration pages with automated confirmations"
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
## 🚀 Advanced Automation Examples
|
|
597
|
+
|
|
598
|
+
### Smart Content Workflows
|
|
599
|
+
|
|
600
|
+
**Automated SEO Optimization**
|
|
601
|
+
```text
|
|
602
|
+
You: "Optimize all posts from the last month for better SEO performance"
|
|
603
|
+
Claude: "I'll analyze and optimize your recent posts...
|
|
604
|
+
- Analyzed 15 posts from the last 30 days
|
|
605
|
+
- Updated meta descriptions for 12 posts
|
|
606
|
+
- Added focus keywords to 8 posts
|
|
607
|
+
- Optimized heading structure in 10 posts
|
|
608
|
+
- Improved internal linking in 15 posts
|
|
609
|
+
- Average SEO score improved from 67% to 89%"
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
**Content Gap Analysis**
|
|
613
|
+
```text
|
|
614
|
+
You: "Identify content gaps in our blog compared to competitor topics"
|
|
615
|
+
Claude: "After analyzing your content and common industry topics...
|
|
616
|
+
- Missing topics: 'AI in Healthcare', 'Remote Work Security', 'Green Technology'
|
|
617
|
+
- Underperforming categories: 'Tutorials' (only 3 posts vs 15+ needed)
|
|
618
|
+
- Recommended: 8 new posts to fill major gaps
|
|
619
|
+
- Priority topics based on search volume and competition"
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
### Maintenance Automation
|
|
623
|
+
|
|
624
|
+
**Site Health Monitoring**
|
|
625
|
+
```text
|
|
626
|
+
You: "Perform a comprehensive site health check and fix any issues"
|
|
627
|
+
Claude: "Running complete site diagnostics...
|
|
628
|
+
- ✅ SSL certificate valid (expires: March 15, 2025)
|
|
629
|
+
- ⚠️ 3 broken internal links found and flagged
|
|
630
|
+
- ✅ All images optimized (average load time: 1.2s)
|
|
631
|
+
- ⚠️ 2 plugins need updates
|
|
632
|
+
- ✅ Database optimized (reduced size by 15%)
|
|
633
|
+
- ✅ Cache performance: 78% hit rate"
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
**User Management Automation**
|
|
637
|
+
```text
|
|
638
|
+
You: "Clean up user accounts and update permissions for the new team structure"
|
|
639
|
+
Claude: "Updating user management...
|
|
640
|
+
- Deactivated 5 inactive accounts (no login >6 months)
|
|
641
|
+
- Updated 12 user roles to match new org chart
|
|
642
|
+
- Created 3 new editor accounts for content team
|
|
643
|
+
- Set up role-based content access restrictions
|
|
644
|
+
- Configured automated welcome emails for new users"
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
### Performance Optimization
|
|
648
|
+
|
|
649
|
+
**Intelligent Cache Management**
|
|
650
|
+
```text
|
|
651
|
+
You: "Analyze site performance and implement optimal caching strategies"
|
|
652
|
+
Claude: "Implementing performance optimizations...
|
|
653
|
+
- Enabled object caching (40% speed improvement)
|
|
654
|
+
- Configured CDN for static assets
|
|
655
|
+
- Optimized database queries (reduced load time by 25%)
|
|
656
|
+
- Set up page caching with smart invalidation
|
|
657
|
+
- Compressed and optimized 47 images
|
|
658
|
+
- Site speed improved from 3.2s to 1.8s average load time"
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
## 🎯 Industry-Specific Solutions
|
|
662
|
+
|
|
663
|
+
### Healthcare Practices
|
|
664
|
+
```text
|
|
665
|
+
💬 "Create HIPAA-compliant patient information pages with secure forms"
|
|
666
|
+
💬 "Update doctor profiles with latest certifications and specializations"
|
|
667
|
+
💬 "Generate appointment booking pages with calendar integration"
|
|
668
|
+
💬 "Create health education content with medical disclaimers"
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
### Legal Firms
|
|
672
|
+
```text
|
|
673
|
+
💬 "Create practice area pages with case study examples"
|
|
674
|
+
💬 "Update attorney profiles with recent wins and bar admissions"
|
|
675
|
+
💬 "Generate client intake forms with confidentiality notices"
|
|
676
|
+
💬 "Create legal blog posts with proper citations and disclaimers"
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
### Real Estate Agencies
|
|
680
|
+
```text
|
|
681
|
+
💬 "Create property listing pages with virtual tour embeds"
|
|
682
|
+
💬 "Update agent profiles with recent sales and market statistics"
|
|
683
|
+
💬 "Generate neighborhood guide pages with local amenities"
|
|
684
|
+
💬 "Create mortgage calculator pages with current rates"
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
### Restaurants & Food Service
|
|
688
|
+
```text
|
|
689
|
+
💬 "Create menu pages with dietary restriction filters"
|
|
690
|
+
💬 "Update chef profiles with signature dishes and cooking philosophy"
|
|
691
|
+
💬 "Generate event booking pages for private dining"
|
|
692
|
+
💬 "Create food blog posts with recipe cards and nutritional information"
|
|
693
|
+
```
|
|
694
|
+
|
|
362
695
|
📖 **[More Examples](docs/examples/)** | **[Use Case Library](docs/use-cases/)**
|
|
363
696
|
|
|
697
|
+
## 🛠️ Troubleshooting Guide
|
|
698
|
+
|
|
699
|
+
### Quick Diagnostics
|
|
700
|
+
|
|
701
|
+
**Connection Issues**
|
|
702
|
+
```bash
|
|
703
|
+
# Test WordPress connection
|
|
704
|
+
npm run status
|
|
705
|
+
|
|
706
|
+
# Debug mode with detailed logs
|
|
707
|
+
DEBUG=true npm run dev
|
|
708
|
+
|
|
709
|
+
# Test specific site in multi-site setup
|
|
710
|
+
npm run status -- --site="your-site-id"
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
**Authentication Problems**
|
|
714
|
+
```bash
|
|
715
|
+
# Verify WordPress application password
|
|
716
|
+
curl -u username:app_password https://your-site.com/wp-json/wp/v2/users/me
|
|
717
|
+
|
|
718
|
+
# Test authentication with different methods
|
|
719
|
+
npm run test:auth
|
|
720
|
+
|
|
721
|
+
# Regenerate application password
|
|
722
|
+
npm run setup
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
**Performance Issues**
|
|
726
|
+
```bash
|
|
727
|
+
# Check cache performance
|
|
728
|
+
npm run test:cache
|
|
729
|
+
|
|
730
|
+
# Monitor real-time performance
|
|
731
|
+
npm run test:performance
|
|
732
|
+
|
|
733
|
+
# Clear all caches
|
|
734
|
+
rm -rf cache/ && npm run dev
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
### Common Error Solutions
|
|
738
|
+
|
|
739
|
+
| Error | Cause | Solution |
|
|
740
|
+
|-------|--------|----------|
|
|
741
|
+
| `401 Unauthorized` | Invalid credentials | Regenerate application password |
|
|
742
|
+
| `403 Forbidden` | Insufficient permissions | Check user role (Editor+ required) |
|
|
743
|
+
| `404 Not Found` | Wrong site URL | Verify WORDPRESS_SITE_URL |
|
|
744
|
+
| `SSL Certificate Error` | HTTPS issues | Add SSL exception or use HTTP |
|
|
745
|
+
| `Connection Timeout` | Network/firewall | Check WordPress REST API access |
|
|
746
|
+
| `Tools not showing in Claude` | Config file format | Validate JSON syntax |
|
|
747
|
+
| `Plugin conflicts` | WordPress plugins | Disable conflicting plugins |
|
|
748
|
+
| `Rate limiting` | Too many requests | Implement request throttling |
|
|
749
|
+
|
|
750
|
+
### WordPress-Specific Issues
|
|
751
|
+
|
|
752
|
+
**REST API Not Available**
|
|
753
|
+
```bash
|
|
754
|
+
# Test REST API directly
|
|
755
|
+
curl https://your-site.com/wp-json/wp/v2/
|
|
756
|
+
|
|
757
|
+
# Check if REST API is disabled
|
|
758
|
+
grep -r "rest_api" wp-config.php
|
|
759
|
+
|
|
760
|
+
# Verify permalink structure
|
|
761
|
+
wp-admin → Settings → Permalinks → Post name
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
**Application Password Issues**
|
|
765
|
+
```text
|
|
766
|
+
1. WordPress Admin → Users → Profile
|
|
767
|
+
2. Scroll to "Application Passwords"
|
|
768
|
+
3. Ensure feature is enabled (WordPress 5.6+)
|
|
769
|
+
4. Generate new password if needed
|
|
770
|
+
5. Copy password exactly (includes spaces)
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
**Multi-Site Configuration Problems**
|
|
774
|
+
```json
|
|
775
|
+
// Check mcp-wordpress.config.json format
|
|
776
|
+
{
|
|
777
|
+
"sites": [
|
|
778
|
+
{
|
|
779
|
+
"id": "unique-site-id",
|
|
780
|
+
"name": "Human Readable Name",
|
|
781
|
+
"config": {
|
|
782
|
+
"WORDPRESS_SITE_URL": "https://site.com",
|
|
783
|
+
"WORDPRESS_USERNAME": "username",
|
|
784
|
+
"WORDPRESS_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
]
|
|
788
|
+
}
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
### Environment-Specific Solutions
|
|
792
|
+
|
|
793
|
+
**Claude Desktop Integration**
|
|
794
|
+
```json
|
|
795
|
+
// Verify claude_desktop_config.json format
|
|
796
|
+
{
|
|
797
|
+
"mcpServers": {
|
|
798
|
+
"mcp-wordpress": {
|
|
799
|
+
"command": "npx",
|
|
800
|
+
"args": ["-y", "mcp-wordpress"],
|
|
801
|
+
"env": {
|
|
802
|
+
"WORDPRESS_SITE_URL": "https://your-site.com",
|
|
803
|
+
"WORDPRESS_USERNAME": "your-username",
|
|
804
|
+
"WORDPRESS_APP_PASSWORD": "your-app-password"
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
```
|
|
810
|
+
|
|
811
|
+
**Docker Deployment Issues**
|
|
812
|
+
```bash
|
|
813
|
+
# Check container logs
|
|
814
|
+
docker logs mcp-wordpress
|
|
815
|
+
|
|
816
|
+
# Verify environment variables
|
|
817
|
+
docker exec mcp-wordpress env | grep WORDPRESS
|
|
818
|
+
|
|
819
|
+
# Test network connectivity
|
|
820
|
+
docker exec mcp-wordpress curl https://your-site.com/wp-json/wp/v2/
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
**NPX Runtime Problems**
|
|
824
|
+
```bash
|
|
825
|
+
# Clear NPX cache
|
|
826
|
+
npx clear-npx-cache
|
|
827
|
+
|
|
828
|
+
# Use specific version
|
|
829
|
+
npx mcp-wordpress@latest
|
|
830
|
+
|
|
831
|
+
# Install globally instead
|
|
832
|
+
npm install -g mcp-wordpress
|
|
833
|
+
```
|
|
834
|
+
|
|
835
|
+
### Getting Help
|
|
836
|
+
|
|
837
|
+
**Self-Diagnostics**
|
|
838
|
+
```bash
|
|
839
|
+
# Comprehensive health check
|
|
840
|
+
npm run health
|
|
841
|
+
|
|
842
|
+
# Security validation
|
|
843
|
+
npm run security:check
|
|
844
|
+
|
|
845
|
+
# Performance analysis
|
|
846
|
+
npm run test:performance
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
**Debug Information Collection**
|
|
850
|
+
```bash
|
|
851
|
+
# Generate debug report
|
|
852
|
+
DEBUG=true npm run status > debug-report.txt 2>&1
|
|
853
|
+
|
|
854
|
+
# Include system information
|
|
855
|
+
node --version >> debug-report.txt
|
|
856
|
+
npm --version >> debug-report.txt
|
|
857
|
+
os-info >> debug-report.txt
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
**Community Support**
|
|
861
|
+
- 🐛 [Report Issues](https://github.com/docdyhr/mcp-wordpress/issues)
|
|
862
|
+
- 💬 [Discussions](https://github.com/docdyhr/mcp-wordpress/discussions)
|
|
863
|
+
- 📧 [Security Issues](mailto:security@docdyhr.com)
|
|
864
|
+
- 📚 [Documentation](docs/TROUBLESHOOTING.md)
|
|
865
|
+
|
|
364
866
|
## 🧪 Testing & Status
|
|
365
867
|
|
|
366
868
|
### Current Test Status ✅
|
|
@@ -493,6 +995,7 @@ npm run setup
|
|
|
493
995
|
|
|
494
996
|
### Deployment & Operations
|
|
495
997
|
- **[Docker Deployment](docs/deployment/docker.md)** - Container deployment
|
|
998
|
+
- **[Publishing Troubleshooting](docs/PUBLISHING-TROUBLESHOOTING.md)** - Fix publishing issues
|
|
496
999
|
- **[Security Best Practices](docs/SECURITY.md)** - Production security
|
|
497
1000
|
- **[Performance Tuning](docs/deployment/performance.md)** - Optimization guide
|
|
498
1001
|
- **[Monitoring](docs/deployment/monitoring.md)** - Logging and metrics
|
package/dist/client/api.d.ts
CHANGED
|
@@ -4,6 +4,53 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { IWordPressClient, WordPressClientConfig, HTTPMethod, RequestOptions, ClientStats } from "../types/client.js";
|
|
6
6
|
import type { WordPressPost, WordPressPage, WordPressMedia, WordPressUser, WordPressComment, WordPressCategory, WordPressTag, WordPressSiteSettings, WordPressApplicationPassword, PostQueryParams, MediaQueryParams, UserQueryParams, CommentQueryParams, CreatePostRequest, UpdatePostRequest, CreatePageRequest, UpdatePageRequest, CreateUserRequest, UpdateUserRequest, CreateCommentRequest, UpdateCommentRequest, CreateCategoryRequest, UpdateCategoryRequest, CreateTagRequest, UpdateTagRequest, UploadMediaRequest, UpdateMediaRequest } from "../types/wordpress.js";
|
|
7
|
+
/**
|
|
8
|
+
* WordPress REST API Client
|
|
9
|
+
*
|
|
10
|
+
* A comprehensive client for interacting with the WordPress REST API v2.
|
|
11
|
+
* Provides full CRUD operations for posts, pages, media, users, comments,
|
|
12
|
+
* categories, tags, and site settings with robust error handling and performance optimization.
|
|
13
|
+
*
|
|
14
|
+
* Features:
|
|
15
|
+
* - Multiple authentication methods (App Passwords, JWT, Basic Auth, API Key)
|
|
16
|
+
* - Automatic retry logic with exponential backoff
|
|
17
|
+
* - Request rate limiting and queue management
|
|
18
|
+
* - Comprehensive error handling with detailed messages
|
|
19
|
+
* - Performance monitoring and request statistics
|
|
20
|
+
* - Caching support for improved performance
|
|
21
|
+
* - Multi-site configuration support
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // Initialize with app password authentication
|
|
26
|
+
* const client = new WordPressClient({
|
|
27
|
+
* baseUrl: 'https://mysite.com',
|
|
28
|
+
* auth: {
|
|
29
|
+
* method: 'app-password',
|
|
30
|
+
* username: 'admin',
|
|
31
|
+
* password: 'xxxx xxxx xxxx xxxx xxxx xxxx'
|
|
32
|
+
* }
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // Create a new post
|
|
36
|
+
* const post = await client.createPost({
|
|
37
|
+
* title: 'My New Post',
|
|
38
|
+
* content: '<p>This is the content</p>',
|
|
39
|
+
* status: 'publish'
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* // List posts with filtering
|
|
43
|
+
* const posts = await client.getPosts({
|
|
44
|
+
* search: 'WordPress',
|
|
45
|
+
* status: 'publish',
|
|
46
|
+
* per_page: 10
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
* @author MCP WordPress Team
|
|
52
|
+
* @implements {IWordPressClient}
|
|
53
|
+
*/
|
|
7
54
|
export declare class WordPressClient implements IWordPressClient {
|
|
8
55
|
private baseUrl;
|
|
9
56
|
private apiUrl;
|
|
@@ -16,6 +63,49 @@ export declare class WordPressClient implements IWordPressClient {
|
|
|
16
63
|
private authenticated;
|
|
17
64
|
private jwtToken;
|
|
18
65
|
private _stats;
|
|
66
|
+
/**
|
|
67
|
+
* Creates a new WordPress API client instance.
|
|
68
|
+
*
|
|
69
|
+
* Initializes the client with configuration options for connecting to a WordPress site.
|
|
70
|
+
* Supports multiple authentication methods and automatic environment variable detection.
|
|
71
|
+
*
|
|
72
|
+
* @param {Partial<WordPressClientConfig>} [options={}] - Configuration options for the client
|
|
73
|
+
* @param {string} [options.baseUrl] - WordPress site URL (falls back to WORDPRESS_SITE_URL env var)
|
|
74
|
+
* @param {number} [options.timeout=30000] - Request timeout in milliseconds
|
|
75
|
+
* @param {number} [options.maxRetries=3] - Maximum number of retry attempts for failed requests
|
|
76
|
+
* @param {AuthConfig} [options.auth] - Authentication configuration (auto-detected from env if not provided)
|
|
77
|
+
* @param {boolean} [options.enableCache=true] - Whether to enable response caching
|
|
78
|
+
* @param {number} [options.cacheMaxAge=300000] - Cache max age in milliseconds (5 minutes default)
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* // Basic configuration with app password
|
|
83
|
+
* const client = new WordPressClient({
|
|
84
|
+
* baseUrl: 'https://mysite.com',
|
|
85
|
+
* auth: {
|
|
86
|
+
* method: 'app-password',
|
|
87
|
+
* username: 'admin',
|
|
88
|
+
* password: 'xxxx xxxx xxxx xxxx xxxx xxxx'
|
|
89
|
+
* }
|
|
90
|
+
* });
|
|
91
|
+
*
|
|
92
|
+
* // Configuration with environment variables
|
|
93
|
+
* // Set WORDPRESS_SITE_URL, WORDPRESS_USERNAME, WORDPRESS_APP_PASSWORD
|
|
94
|
+
* const client = new WordPressClient(); // Auto-detects from env
|
|
95
|
+
*
|
|
96
|
+
* // Custom timeout and retry settings
|
|
97
|
+
* const client = new WordPressClient({
|
|
98
|
+
* baseUrl: 'https://mysite.com',
|
|
99
|
+
* timeout: 60000, // 60 seconds
|
|
100
|
+
* maxRetries: 5, // 5 retry attempts
|
|
101
|
+
* auth: { method: 'app-password', username: 'user', password: 'pass' }
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @throws {Error} When required configuration is missing or invalid
|
|
106
|
+
*
|
|
107
|
+
* @since 1.0.0
|
|
108
|
+
*/
|
|
19
109
|
constructor(options?: Partial<WordPressClientConfig>);
|
|
20
110
|
get config(): WordPressClientConfig;
|
|
21
111
|
get isAuthenticated(): boolean;
|
package/dist/client/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EAGrB,UAAU,EACV,cAAc,EACd,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAG/B,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAc;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
|