mcp-wordpress 1.5.2 β 2.0.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 +332 -61
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +4 -4
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/client/MockWordPressClient.d.ts +55 -0
- package/dist/client/MockWordPressClient.d.ts.map +1 -0
- package/dist/client/MockWordPressClient.js +369 -0
- package/dist/client/MockWordPressClient.js.map +1 -0
- package/dist/client/api.d.ts +1 -0
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +26 -60
- package/dist/client/api.js.map +1 -1
- package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
- package/dist/client/managers/AuthenticationManager.js +4 -3
- package/dist/client/managers/AuthenticationManager.js.map +1 -1
- package/dist/config/ConfigurationSchema.d.ts +3 -3
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +7 -24
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +8 -0
- package/dist/config/ServerConfiguration.d.ts.map +1 -1
- package/dist/config/ServerConfiguration.js +80 -31
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +5 -7
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -29
- package/dist/index.js.map +1 -1
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +3 -11
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/server/ToolRegistry.d.ts +4 -0
- package/dist/server/ToolRegistry.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js +71 -8
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +8 -3
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +287 -20
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +47 -9
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +113 -10
- package/dist/tools/users.js.map +1 -1
- package/dist/utils/enhancedError.d.ts +61 -0
- package/dist/utils/enhancedError.d.ts.map +1 -0
- package/dist/utils/enhancedError.js +221 -0
- package/dist/utils/enhancedError.js.map +1 -0
- package/dist/utils/streaming.d.ts +104 -0
- package/dist/utils/streaming.d.ts.map +1 -0
- package/dist/utils/streaming.js +312 -0
- package/dist/utils/streaming.js.map +1 -0
- package/dist/utils/validation.d.ts +19 -3
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +174 -24
- package/dist/utils/validation.js.map +1 -1
- package/docs/ARCHITECTURE.md +850 -0
- package/docs/CACHING.md +20 -17
- package/docs/CONFIGURATION.md +660 -0
- package/docs/DOCKER.md +61 -60
- package/docs/EVALUATION.md +397 -0
- package/docs/INSTALLATION.md +423 -0
- package/docs/PERFORMANCE_MONITORING.md +17 -15
- package/docs/SECURITY.md +621 -0
- package/docs/SECURITY_TESTING.md +22 -26
- package/docs/TEST_SITE_SETUP.md +136 -0
- package/docs/TROUBLESHOOTING.md +578 -0
- package/docs/api/README.md +76 -91
- package/docs/api/categories/auth.md +0 -2
- package/docs/api/categories/cache.md +0 -2
- package/docs/api/categories/comment.md +0 -2
- package/docs/api/categories/media.md +0 -2
- package/docs/api/categories/page.md +0 -2
- package/docs/api/categories/performance.md +0 -2
- package/docs/api/categories/post.md +0 -2
- package/docs/api/categories/site.md +0 -2
- package/docs/api/categories/taxonomy.md +0 -2
- package/docs/api/categories/user.md +0 -2
- package/docs/api/summary.json +1 -1
- package/docs/api/tools/wp_approve_comment.md +11 -3
- package/docs/api/tools/wp_cache_clear.md +14 -5
- package/docs/api/tools/wp_cache_info.md +14 -5
- package/docs/api/tools/wp_cache_stats.md +14 -5
- package/docs/api/tools/wp_cache_warm.md +14 -5
- package/docs/api/tools/wp_create_application_password.md +11 -3
- package/docs/api/tools/wp_create_category.md +11 -3
- package/docs/api/tools/wp_create_comment.md +14 -5
- package/docs/api/tools/wp_create_page.md +13 -5
- package/docs/api/tools/wp_create_post.md +14 -7
- package/docs/api/tools/wp_create_tag.md +11 -3
- package/docs/api/tools/wp_create_user.md +13 -5
- package/docs/api/tools/wp_delete_application_password.md +11 -3
- package/docs/api/tools/wp_delete_category.md +11 -3
- package/docs/api/tools/wp_delete_comment.md +11 -3
- package/docs/api/tools/wp_delete_media.md +10 -3
- package/docs/api/tools/wp_delete_page.md +10 -3
- package/docs/api/tools/wp_delete_post.md +11 -5
- package/docs/api/tools/wp_delete_tag.md +11 -3
- package/docs/api/tools/wp_delete_user.md +10 -3
- package/docs/api/tools/wp_get_application_passwords.md +11 -3
- package/docs/api/tools/wp_get_auth_status.md +11 -3
- package/docs/api/tools/wp_get_category.md +11 -3
- package/docs/api/tools/wp_get_comment.md +11 -3
- package/docs/api/tools/wp_get_current_user.md +11 -3
- package/docs/api/tools/wp_get_media.md +11 -3
- package/docs/api/tools/wp_get_page.md +11 -3
- package/docs/api/tools/wp_get_page_revisions.md +11 -3
- package/docs/api/tools/wp_get_post.md +12 -5
- package/docs/api/tools/wp_get_post_revisions.md +11 -3
- package/docs/api/tools/wp_get_site_settings.md +10 -3
- package/docs/api/tools/wp_get_tag.md +11 -3
- package/docs/api/tools/wp_get_user.md +11 -3
- package/docs/api/tools/wp_list_categories.md +11 -3
- package/docs/api/tools/wp_list_comments.md +11 -3
- package/docs/api/tools/wp_list_media.md +14 -5
- package/docs/api/tools/wp_list_pages.md +14 -5
- package/docs/api/tools/wp_list_posts.md +15 -7
- package/docs/api/tools/wp_list_tags.md +11 -3
- package/docs/api/tools/wp_list_users.md +11 -3
- package/docs/api/tools/wp_performance_alerts.md +17 -7
- package/docs/api/tools/wp_performance_benchmark.md +17 -7
- package/docs/api/tools/wp_performance_export.md +17 -7
- package/docs/api/tools/wp_performance_history.md +17 -7
- package/docs/api/tools/wp_performance_optimize.md +17 -7
- package/docs/api/tools/wp_performance_stats.md +17 -7
- package/docs/api/tools/wp_search_site.md +11 -3
- package/docs/api/tools/wp_spam_comment.md +11 -3
- package/docs/api/tools/wp_switch_auth_method.md +14 -5
- package/docs/api/tools/wp_test_auth.md +11 -3
- package/docs/api/tools/wp_update_category.md +11 -3
- package/docs/api/tools/wp_update_comment.md +14 -5
- package/docs/api/tools/wp_update_media.md +14 -5
- package/docs/api/tools/wp_update_page.md +13 -5
- package/docs/api/tools/wp_update_post.md +14 -7
- package/docs/api/tools/wp_update_site_settings.md +14 -5
- package/docs/api/tools/wp_update_tag.md +11 -3
- package/docs/api/tools/wp_update_user.md +13 -5
- package/docs/api/tools/wp_upload_media.md +13 -5
- package/docs/api/types/WordPressPost.md +2 -0
- package/docs/code-improvements.md +40 -0
- package/docs/contract-testing.md +1 -1
- package/docs/developer/API_REFERENCE.md +19 -59
- package/docs/developer/ARCHITECTURE.md +8 -11
- package/docs/developer/BUILD_SYSTEM.md +2 -2
- package/docs/developer/CONTRIBUTING.md +3 -5
- package/docs/developer/GITHUB_ACTIONS_SETUP.md +2 -2
- package/docs/developer/MIGRATION_GUIDE.md +5 -6
- package/docs/developer/README.md +2 -1
- package/docs/developer/REFACTORING.md +9 -15
- package/docs/developer/RELEASE_PROCESS.md +4 -3
- package/docs/developer/TESTING.md +2 -2
- package/docs/examples/claude-desktop-config.md +8 -0
- package/docs/integrations/claude-desktop.md +426 -0
- package/docs/integrations/cline.md +537 -0
- package/docs/integrations/vs-code.md +515 -0
- package/docs/releases/COMMUNITY_ANNOUNCEMENT_v1.1.2.md +30 -23
- package/docs/releases/RELEASE_NOTES_v1.1.2.md +7 -6
- package/docs/testing-configurations.md +11 -0
- package/docs/user-guides/DOCKER_NPM_DTX_SETUP.md +3 -2
- package/docs/user-guides/DOCKER_SETUP.md +3 -2
- package/docs/user-guides/DTX_SETUP.md +6 -5
- package/docs/user-guides/DXT_INSTALLATION.md +4 -4
- package/docs/user-guides/NPM_SETUP.md +4 -2
- package/docs/user-guides/NPX_SETUP.md +4 -2
- package/docs/user-guides/SMITHERY_SETUP.md +402 -0
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +45 -42
- package/package.json +12 -2
- package/src/cache/CacheInvalidation.ts +7 -18
- package/src/client/MockWordPressClient.ts +398 -0
- package/src/client/api.ts +77 -237
- package/src/client/managers/AuthenticationManager.ts +19 -56
- package/src/config/ConfigurationSchema.ts +14 -45
- package/src/config/ServerConfiguration.ts +98 -71
- package/src/docs/DocumentationGenerator.ts +39 -123
- package/src/dxt-entry.cjs +4 -1
- package/src/index.ts +35 -54
- package/src/security/InputValidator.ts +15 -57
- package/src/server/ToolRegistry.ts +88 -17
- package/src/tools/auth.ts +15 -22
- package/src/tools/posts.ts +347 -64
- package/src/tools/site.ts +69 -46
- package/src/tools/users.ts +142 -44
- package/src/utils/enhancedError.ts +248 -0
- package/src/utils/streaming.ts +428 -0
- package/src/utils/validation.ts +253 -92
- package/dist/mcp-wordpress-1.5.2.tgz +0 -0
|
@@ -0,0 +1,850 @@
|
|
|
1
|
+
# ποΈ Architecture Documentation
|
|
2
|
+
|
|
3
|
+
**Comprehensive guide to the MCP WordPress Server architecture, design patterns, and system components**
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [System Overview](#system-overview)
|
|
8
|
+
- [Architecture Diagrams](#architecture-diagrams)
|
|
9
|
+
- [Core Components](#core-components)
|
|
10
|
+
- [Data Flow](#data-flow)
|
|
11
|
+
- [Security Architecture](#security-architecture)
|
|
12
|
+
- [Performance Architecture](#performance-architecture)
|
|
13
|
+
- [Deployment Architecture](#deployment-architecture)
|
|
14
|
+
|
|
15
|
+
## System Overview
|
|
16
|
+
|
|
17
|
+
The MCP WordPress Server is a TypeScript-based Model Context Protocol (MCP) server that provides AI tools
|
|
18
|
+
with comprehensive WordPress management capabilities. It follows a modular, security-first architecture with
|
|
19
|
+
comprehensive validation and performance optimization.
|
|
20
|
+
|
|
21
|
+
### Key Architectural Principles
|
|
22
|
+
|
|
23
|
+
- **Modular Design** - Class-based tools with clear separation of concerns
|
|
24
|
+
- **Security First** - Multi-layer validation and sanitization
|
|
25
|
+
- **Performance Optimized** - Caching, streaming, and efficient resource usage
|
|
26
|
+
- **Type Safety** - 100% TypeScript with comprehensive type definitions
|
|
27
|
+
- **Scalable** - Multi-site support with isolated configurations
|
|
28
|
+
|
|
29
|
+
## Architecture Diagrams
|
|
30
|
+
|
|
31
|
+
### High-Level System Architecture
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
35
|
+
β AI Client Layer β
|
|
36
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
37
|
+
β β Claude β β VS Code β β Custom β β
|
|
38
|
+
β β Desktop β β Extensions β β Clients β β
|
|
39
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
40
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
41
|
+
β
|
|
42
|
+
β MCP Protocol (JSON-RPC)
|
|
43
|
+
βΌ
|
|
44
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
45
|
+
β MCP Server Layer β
|
|
46
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
47
|
+
β β Tool Registry β β
|
|
48
|
+
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
|
|
49
|
+
β β β Posts β β Users β β Media β β Site β ... β β
|
|
50
|
+
β β β Tools β β Tools β β Tools β β Tools β β β
|
|
51
|
+
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
|
|
52
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
53
|
+
β β β
|
|
54
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
55
|
+
β β Security Layer β β
|
|
56
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
57
|
+
β β β Validation β β Sanitizationβ β Rate Limit β β β
|
|
58
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
59
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
60
|
+
β β β
|
|
61
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
62
|
+
β β Performance Layer β β
|
|
63
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
64
|
+
β β β Caching β β Streaming β β Monitoring β β β
|
|
65
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
66
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
67
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
68
|
+
β
|
|
69
|
+
β HTTP/REST API
|
|
70
|
+
βΌ
|
|
71
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
72
|
+
β WordPress Layer β
|
|
73
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
74
|
+
β β Site 1 β β Site 2 β β Site N β β
|
|
75
|
+
β β WordPress β β WordPress β β WordPress β β
|
|
76
|
+
β β REST API v2 β β REST API v2 β β REST API v2 β β
|
|
77
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
78
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Tool Architecture
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
85
|
+
β Tool System β
|
|
86
|
+
β β
|
|
87
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
88
|
+
β β Tool Registry β β
|
|
89
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
90
|
+
β β β Tool Registration β β β
|
|
91
|
+
β β β - Dynamic tool discovery β β β
|
|
92
|
+
β β β - Tool metadata management β β β
|
|
93
|
+
β β β - Handler binding β β β
|
|
94
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
95
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
96
|
+
β β β
|
|
97
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
98
|
+
β β Tool Categories β β
|
|
99
|
+
β β β β
|
|
100
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
101
|
+
β β β PostTools β β UserTools β β MediaTools β β β
|
|
102
|
+
β β β (6 tools) β β (6 tools) β β (5 tools) β β β
|
|
103
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
104
|
+
β β β β
|
|
105
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
106
|
+
β β β PageTools β βCommentTools β β TaxonomyToolsβ β β
|
|
107
|
+
β β β (6 tools) β β (7 tools) β β (10 tools) β β β
|
|
108
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
109
|
+
β β β β
|
|
110
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
111
|
+
β β β SiteTools β β AuthTools β β CacheTools β β β
|
|
112
|
+
β β β (6 tools) β β (3 tools) β β (4 tools) β β β
|
|
113
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
114
|
+
β β β β
|
|
115
|
+
β β βββββββββββββββ β β
|
|
116
|
+
β β βPerformance β β β
|
|
117
|
+
β β βTools β β β
|
|
118
|
+
β β β(6 tools) β β β
|
|
119
|
+
β β βββββββββββββββ β β
|
|
120
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
121
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Client Architecture
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
128
|
+
β WordPress Client Layer β
|
|
129
|
+
β β
|
|
130
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
131
|
+
β β WordPressClient β β
|
|
132
|
+
β β (Main Orchestrator) β β
|
|
133
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
134
|
+
β β β Composition Pattern β β β
|
|
135
|
+
β β β - Delegates to specialized managers β β β
|
|
136
|
+
β β β - Handles high-level operations β β β
|
|
137
|
+
β β β - Manages client lifecycle β β β
|
|
138
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
139
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
140
|
+
β β β
|
|
141
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
142
|
+
β β Manager Layer β β
|
|
143
|
+
β β β β
|
|
144
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
145
|
+
β β β Auth β β Request β β Base β β β
|
|
146
|
+
β β β Manager β β Manager β β Manager β β β
|
|
147
|
+
β β β β β β β β β β
|
|
148
|
+
β β β - App Pwd β β - HTTP ops β β - Common β β β
|
|
149
|
+
β β β - JWT β β - Retry β β - Error β β β
|
|
150
|
+
β β β - Basic β β - Limits β β - Logging β β β
|
|
151
|
+
β β β - API Key β β - Caching β β - Utils β β β
|
|
152
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
153
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
154
|
+
β β β
|
|
155
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
156
|
+
β β Cache Integration β β
|
|
157
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
158
|
+
β β β LRU β β TTL β β Site β β β
|
|
159
|
+
β β β Cache β β Cache β β Isolation β β β
|
|
160
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
161
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
162
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Configuration Architecture
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
169
|
+
β Configuration System β
|
|
170
|
+
β β
|
|
171
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
172
|
+
β β Multi-Site Configuration β β
|
|
173
|
+
β β β β
|
|
174
|
+
β β mcp-wordpress.config.json β β
|
|
175
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
176
|
+
β β β { β β β
|
|
177
|
+
β β β "sites": [ β β β
|
|
178
|
+
β β β { β β β
|
|
179
|
+
β β β "id": "site1", β β β
|
|
180
|
+
β β β "name": "Main Site", β β β
|
|
181
|
+
β β β "config": { β β β
|
|
182
|
+
β β β "WORDPRESS_SITE_URL": "...", β β β
|
|
183
|
+
β β β "WORDPRESS_USERNAME": "...", β β β
|
|
184
|
+
β β β "WORDPRESS_APP_PASSWORD": "..." β β β
|
|
185
|
+
β β β } β β β
|
|
186
|
+
β β β } β β β
|
|
187
|
+
β β β ] β β β
|
|
188
|
+
β β β } β β β
|
|
189
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
190
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
191
|
+
β β β
|
|
192
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
193
|
+
β β Validation Layer β β
|
|
194
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
195
|
+
β β β Zod Schemas β β β
|
|
196
|
+
β β β - Type validation β β β
|
|
197
|
+
β β β - Format validation β β β
|
|
198
|
+
β β β - Business rules β β β
|
|
199
|
+
β β β - Security checks β β β
|
|
200
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
201
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
202
|
+
β β β
|
|
203
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
204
|
+
β β Runtime Configuration β β
|
|
205
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
206
|
+
β β βEnvironment β β Server β β Client β β β
|
|
207
|
+
β β β Variables β β Settings β β Instances β β β
|
|
208
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
209
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
210
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Core Components
|
|
214
|
+
|
|
215
|
+
### 1. MCP Server (`src/index.ts`)
|
|
216
|
+
|
|
217
|
+
The main server class that orchestrates all components:
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
class MCPWordPressServer {
|
|
221
|
+
private server: McpServer;
|
|
222
|
+
private wordpressClients: Map<string, WordPressClient>;
|
|
223
|
+
private toolRegistry: ToolRegistry;
|
|
224
|
+
private connectionTester: ConnectionTester;
|
|
225
|
+
|
|
226
|
+
// Server lifecycle management
|
|
227
|
+
// Tool registration and routing
|
|
228
|
+
// Multi-site client management
|
|
229
|
+
// Error handling and logging
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Responsibilities:**
|
|
234
|
+
|
|
235
|
+
- MCP protocol implementation
|
|
236
|
+
- Client lifecycle management
|
|
237
|
+
- Tool registration and routing
|
|
238
|
+
- Configuration loading and validation
|
|
239
|
+
- Error handling and logging
|
|
240
|
+
|
|
241
|
+
### 2. Tool Registry (`src/server/ToolRegistry.ts`)
|
|
242
|
+
|
|
243
|
+
Manages tool discovery, registration, and request routing:
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
class ToolRegistry {
|
|
247
|
+
private tools: Map<string, ToolHandler>;
|
|
248
|
+
private toolClasses: ToolClass[];
|
|
249
|
+
|
|
250
|
+
// Dynamic tool discovery
|
|
251
|
+
// Tool metadata management
|
|
252
|
+
// Request routing
|
|
253
|
+
// Parameter injection
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**Responsibilities:**
|
|
258
|
+
|
|
259
|
+
- Tool discovery and registration
|
|
260
|
+
- Request routing to appropriate handlers
|
|
261
|
+
- Parameter injection (site selection)
|
|
262
|
+
- Tool metadata management
|
|
263
|
+
|
|
264
|
+
### 3. WordPress Client (`src/client/`)
|
|
265
|
+
|
|
266
|
+
Modular HTTP client for WordPress REST API:
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
// Main orchestrator
|
|
270
|
+
class WordPressClient {
|
|
271
|
+
private authManager: AuthenticationManager;
|
|
272
|
+
private requestManager: RequestManager;
|
|
273
|
+
|
|
274
|
+
// High-level WordPress operations
|
|
275
|
+
// Manager coordination
|
|
276
|
+
// Configuration management
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// Specialized managers
|
|
280
|
+
class AuthenticationManager {
|
|
281
|
+
// Multi-method authentication
|
|
282
|
+
// Token management
|
|
283
|
+
// Security handling
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
class RequestManager {
|
|
287
|
+
// HTTP operations
|
|
288
|
+
// Retry logic
|
|
289
|
+
// Rate limiting
|
|
290
|
+
// Caching integration
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Responsibilities:**
|
|
295
|
+
|
|
296
|
+
- WordPress REST API communication
|
|
297
|
+
- Authentication handling
|
|
298
|
+
- Request management and optimization
|
|
299
|
+
- Error handling and retry logic
|
|
300
|
+
|
|
301
|
+
### 4. Tool Classes (`src/tools/`)
|
|
302
|
+
|
|
303
|
+
Class-based tool implementations with consistent patterns:
|
|
304
|
+
|
|
305
|
+
```typescript
|
|
306
|
+
class PostTools {
|
|
307
|
+
public getTools(): MCPTool[] {
|
|
308
|
+
// Tool definitions
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
public async handleListPosts(client: WordPressClient, params: PostQueryParams): Promise<string> {
|
|
312
|
+
// Implementation with validation, processing, and formatting
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**Responsibilities:**
|
|
318
|
+
|
|
319
|
+
- Tool definition and metadata
|
|
320
|
+
- Parameter validation
|
|
321
|
+
- WordPress API interactions
|
|
322
|
+
- Response formatting
|
|
323
|
+
- Error handling
|
|
324
|
+
|
|
325
|
+
### 5. Security Layer (`src/utils/validation.ts`)
|
|
326
|
+
|
|
327
|
+
Comprehensive security validation and sanitization:
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
// Multi-layer validation
|
|
331
|
+
export const validatePostParams = (params: any) => {
|
|
332
|
+
// Type validation
|
|
333
|
+
// Format validation
|
|
334
|
+
// Security validation
|
|
335
|
+
// Business logic validation
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
// Content sanitization
|
|
339
|
+
export const sanitizeHtml = (content: string) => {
|
|
340
|
+
// XSS prevention
|
|
341
|
+
// Script removal
|
|
342
|
+
// Event handler filtering
|
|
343
|
+
};
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**Responsibilities:**
|
|
347
|
+
|
|
348
|
+
- Input validation and sanitization
|
|
349
|
+
- XSS prevention
|
|
350
|
+
- SQL injection protection
|
|
351
|
+
- Path traversal prevention
|
|
352
|
+
- Rate limiting
|
|
353
|
+
|
|
354
|
+
### 6. Performance Layer
|
|
355
|
+
|
|
356
|
+
Multiple components for performance optimization:
|
|
357
|
+
|
|
358
|
+
```typescript
|
|
359
|
+
// Caching (src/cache/CacheManager.ts)
|
|
360
|
+
class CacheManager {
|
|
361
|
+
private cache: Map<string, CacheEntry>;
|
|
362
|
+
// LRU eviction
|
|
363
|
+
// TTL management
|
|
364
|
+
// Site isolation
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// Streaming (src/utils/streaming.ts)
|
|
368
|
+
class WordPressDataStreamer {
|
|
369
|
+
// Large dataset streaming
|
|
370
|
+
// Progressive loading
|
|
371
|
+
// Memory optimization
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// Monitoring (src/performance/PerformanceMonitor.ts)
|
|
375
|
+
class PerformanceMonitor {
|
|
376
|
+
// Metrics collection
|
|
377
|
+
// Performance analytics
|
|
378
|
+
// Alert generation
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
**Responsibilities:**
|
|
383
|
+
|
|
384
|
+
- Intelligent caching with LRU eviction
|
|
385
|
+
- Streaming for large datasets
|
|
386
|
+
- Performance monitoring and analytics
|
|
387
|
+
- Memory optimization
|
|
388
|
+
|
|
389
|
+
## Data Flow
|
|
390
|
+
|
|
391
|
+
### Request Processing Flow
|
|
392
|
+
|
|
393
|
+
```text
|
|
394
|
+
βββββββββββββββ
|
|
395
|
+
β AI Client β
|
|
396
|
+
β Request β
|
|
397
|
+
βββββββββββββββ
|
|
398
|
+
β
|
|
399
|
+
βΌ
|
|
400
|
+
βββββββββββββββ
|
|
401
|
+
β MCP Server β
|
|
402
|
+
β Protocol β
|
|
403
|
+
βββββββββββββββ
|
|
404
|
+
β
|
|
405
|
+
βΌ
|
|
406
|
+
βββββββββββββββ
|
|
407
|
+
β Tool β
|
|
408
|
+
β Registry β
|
|
409
|
+
βββββββββββββββ
|
|
410
|
+
β
|
|
411
|
+
βΌ
|
|
412
|
+
βββββββββββββββ
|
|
413
|
+
β Tool β
|
|
414
|
+
β Handler β
|
|
415
|
+
βββββββββββββββ
|
|
416
|
+
β
|
|
417
|
+
βΌ
|
|
418
|
+
βββββββββββββββ
|
|
419
|
+
β Validation β
|
|
420
|
+
β Layer β
|
|
421
|
+
βββββββββββββββ
|
|
422
|
+
β
|
|
423
|
+
βΌ
|
|
424
|
+
βββββββββββββββ
|
|
425
|
+
β WordPress β
|
|
426
|
+
β Client β
|
|
427
|
+
βββββββββββββββ
|
|
428
|
+
β
|
|
429
|
+
βΌ
|
|
430
|
+
βββββββββββββββ
|
|
431
|
+
β HTTP β
|
|
432
|
+
β Request β
|
|
433
|
+
βββββββββββββββ
|
|
434
|
+
β
|
|
435
|
+
βΌ
|
|
436
|
+
βββββββββββββββ
|
|
437
|
+
β WordPress β
|
|
438
|
+
β REST API β
|
|
439
|
+
βββββββββββββββ
|
|
440
|
+
β
|
|
441
|
+
βΌ
|
|
442
|
+
βββββββββββββββ
|
|
443
|
+
β Response β
|
|
444
|
+
β Processing β
|
|
445
|
+
βββββββββββββββ
|
|
446
|
+
β
|
|
447
|
+
βΌ
|
|
448
|
+
βββββββββββββββ
|
|
449
|
+
β Formatted β
|
|
450
|
+
β Response β
|
|
451
|
+
βββββββββββββββ
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Authentication Flow
|
|
455
|
+
|
|
456
|
+
```text
|
|
457
|
+
βββββββββββββββ
|
|
458
|
+
β Client β
|
|
459
|
+
β Request β
|
|
460
|
+
βββββββββββββββ
|
|
461
|
+
β
|
|
462
|
+
βΌ
|
|
463
|
+
βββββββββββββββ
|
|
464
|
+
β Auth β
|
|
465
|
+
β Manager β
|
|
466
|
+
βββββββββββββββ
|
|
467
|
+
β
|
|
468
|
+
βΌ
|
|
469
|
+
βββββββββββββββ βββββββββββββββ βββββββββββββββ
|
|
470
|
+
β App β β JWT β β Basic β
|
|
471
|
+
β Password β β Token β β Auth β
|
|
472
|
+
βββββββββββββββ βββββββββββββββ βββββββββββββββ
|
|
473
|
+
β β β
|
|
474
|
+
βββββββββββββββββββββββΌββββββββββββββββββββ
|
|
475
|
+
βΌ
|
|
476
|
+
βββββββββββββββ
|
|
477
|
+
β WordPress β
|
|
478
|
+
β API Call β
|
|
479
|
+
βββββββββββββββ
|
|
480
|
+
β
|
|
481
|
+
βΌ
|
|
482
|
+
βββββββββββββββ
|
|
483
|
+
β Response β
|
|
484
|
+
β + Auth β
|
|
485
|
+
β Status β
|
|
486
|
+
βββββββββββββββ
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
### Multi-Site Routing
|
|
490
|
+
|
|
491
|
+
```text
|
|
492
|
+
βββββββββββββββ
|
|
493
|
+
β Tool β
|
|
494
|
+
β Request β
|
|
495
|
+
β + Site ID β
|
|
496
|
+
βββββββββββββββ
|
|
497
|
+
β
|
|
498
|
+
βΌ
|
|
499
|
+
βββββββββββββββ
|
|
500
|
+
β Tool β
|
|
501
|
+
β Registry β
|
|
502
|
+
βββββββββββββββ
|
|
503
|
+
β
|
|
504
|
+
βΌ
|
|
505
|
+
βββββββββββββββ
|
|
506
|
+
β Site β
|
|
507
|
+
β Resolution β
|
|
508
|
+
βββββββββββββββ
|
|
509
|
+
β
|
|
510
|
+
βΌ
|
|
511
|
+
βββββββββββββββ βββββββββββββββ βββββββββββββββ
|
|
512
|
+
β Site 1 β β Site 2 β β Site N β
|
|
513
|
+
β Client β β Client β β Client β
|
|
514
|
+
βββββββββββββββ βββββββββββββββ βββββββββββββββ
|
|
515
|
+
β β β
|
|
516
|
+
βββββββββββββββββββββββΌββββββββββββββββββββ
|
|
517
|
+
βΌ
|
|
518
|
+
βββββββββββββββ
|
|
519
|
+
β WordPress β
|
|
520
|
+
β REST API β
|
|
521
|
+
βββββββββββββββ
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
## Security Architecture
|
|
525
|
+
|
|
526
|
+
### Multi-Layer Security Model
|
|
527
|
+
|
|
528
|
+
```text
|
|
529
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
530
|
+
β Input Layer β
|
|
531
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
532
|
+
β β Type Check β β Format β β Length β β
|
|
533
|
+
β β Validation β β Validation β β Validation β β
|
|
534
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
535
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
536
|
+
β
|
|
537
|
+
βΌ
|
|
538
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
539
|
+
β Security Layer β
|
|
540
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
541
|
+
β β XSS β β SQL β β Path β β
|
|
542
|
+
β β Prevention β β Injection β β Traversal β β
|
|
543
|
+
β β β β Prevention β β Prevention β β
|
|
544
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
545
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
546
|
+
β
|
|
547
|
+
βΌ
|
|
548
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
549
|
+
β Business Logic Layer β
|
|
550
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
551
|
+
β β WordPress β β Parameter β β Context β β
|
|
552
|
+
β β Rules β β Validation β β Validation β β
|
|
553
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
554
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
555
|
+
β
|
|
556
|
+
βΌ
|
|
557
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
558
|
+
β Rate Limiting β
|
|
559
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
560
|
+
β β Request β β Auth β β Resource β β
|
|
561
|
+
β β Throttling β β Attempts β β Limiting β β
|
|
562
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
563
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
### Authentication Security
|
|
567
|
+
|
|
568
|
+
```text
|
|
569
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
570
|
+
β Authentication Methods β
|
|
571
|
+
β β
|
|
572
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
573
|
+
β β Application β β JWT Token β β Basic Auth β β
|
|
574
|
+
β β Passwords β β (Plugin) β β (Dev Only) β β
|
|
575
|
+
β β β
Secure β β β οΈ Plugin β β β Insecure β β
|
|
576
|
+
β β β
Revocableβ β β οΈ Complex β β β Always β β
|
|
577
|
+
β β β
Scoped β β β
Tokens β β Transmit β β
|
|
578
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
579
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
580
|
+
β
|
|
581
|
+
βΌ
|
|
582
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
583
|
+
β Security Validation β
|
|
584
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
585
|
+
β β Credential β β Connection β β Permission β β
|
|
586
|
+
β β Validation β β Security β β Validation β β
|
|
587
|
+
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
|
|
588
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
## Performance Architecture
|
|
592
|
+
|
|
593
|
+
### Caching Strategy
|
|
594
|
+
|
|
595
|
+
```text
|
|
596
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
597
|
+
β Cache Layers β
|
|
598
|
+
β β
|
|
599
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
600
|
+
β β L1 Cache β β
|
|
601
|
+
β β (In-Memory LRU Cache) β β
|
|
602
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
603
|
+
β β β Recent β β Hot β β Frequent β β β
|
|
604
|
+
β β β Requests β β Data β β Queries β β β
|
|
605
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
606
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
607
|
+
β β β
|
|
608
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
609
|
+
β β L2 Cache β β
|
|
610
|
+
β β (TTL-Based Cache) β β
|
|
611
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
612
|
+
β β β 5 minute β β 30 minute β β 2 hour β β β
|
|
613
|
+
β β β TTL β β TTL β β TTL β β β
|
|
614
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
615
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
616
|
+
β β β
|
|
617
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
618
|
+
β β Site Isolation β β
|
|
619
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
620
|
+
β β β Site 1 β β Site 2 β β Site N β β β
|
|
621
|
+
β β β Cache β β Cache β β Cache β β β
|
|
622
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
623
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
624
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### Streaming Architecture
|
|
628
|
+
|
|
629
|
+
```text
|
|
630
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
631
|
+
β Streaming Pipeline β
|
|
632
|
+
β β
|
|
633
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
634
|
+
β β Data Source β β
|
|
635
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
636
|
+
β β β Large Post β β User Lists β β Comment β β β
|
|
637
|
+
β β β Collections β β (30+ users) β β Streams β β β
|
|
638
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
639
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
640
|
+
β β β
|
|
641
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
642
|
+
β β Streaming Processor β β
|
|
643
|
+
β β β β
|
|
644
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
645
|
+
β β β Batch β β Filter β β Transform β β β
|
|
646
|
+
β β β Processing β β Processing β β Processing β β β
|
|
647
|
+
β β β (20 items) β β (Security) β β (Format) β β β
|
|
648
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
649
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
650
|
+
β β β
|
|
651
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
652
|
+
β β Output Formatter β β
|
|
653
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
654
|
+
β β β Progress β β Metadata β β Formatted β β β
|
|
655
|
+
β β β Tracking β β Enrichment β β Response β β β
|
|
656
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
657
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
658
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
## Deployment Architecture
|
|
662
|
+
|
|
663
|
+
### Production Deployment
|
|
664
|
+
|
|
665
|
+
```text
|
|
666
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
667
|
+
β Production Environment β
|
|
668
|
+
β β
|
|
669
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
670
|
+
β β Load Balancer β β
|
|
671
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
672
|
+
β β β HTTPS β β SSL β β Rate β β β
|
|
673
|
+
β β β Termination β β Offloading β β Limiting β β β
|
|
674
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
675
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
676
|
+
β β β
|
|
677
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
678
|
+
β β Container Orchestration β β
|
|
679
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
680
|
+
β β β Instance β β Instance β β Instance β β β
|
|
681
|
+
β β β 1 β β 2 β β N β β β
|
|
682
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
683
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
684
|
+
β β β
|
|
685
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
686
|
+
β β Monitoring β β
|
|
687
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
688
|
+
β β β Metrics β β Logging β β Alerts β β β
|
|
689
|
+
β β β Collection β β Aggregation β β System β β β
|
|
690
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
691
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
692
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
### Docker Architecture
|
|
696
|
+
|
|
697
|
+
```text
|
|
698
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
699
|
+
β Docker Container β
|
|
700
|
+
β β
|
|
701
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
702
|
+
β β Application Layer β β
|
|
703
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
704
|
+
β β β Node.js β β TypeScript β β MCP β β β
|
|
705
|
+
β β β Runtime β β Compiled β β Server β β β
|
|
706
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
707
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
708
|
+
β β β
|
|
709
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
710
|
+
β β Dependencies β β
|
|
711
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
712
|
+
β β β Production β β Security β β Performance β β β
|
|
713
|
+
β β β Packages β β Packages β β Packages β β β
|
|
714
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
715
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
716
|
+
β β β
|
|
717
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
718
|
+
β β Configuration β β
|
|
719
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
720
|
+
β β βEnvironment β β Secrets β β Volume β β β
|
|
721
|
+
β β β Variables β β Management β β Mounts β β β
|
|
722
|
+
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
|
|
723
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
724
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
## Design Patterns
|
|
728
|
+
|
|
729
|
+
### 1. Composition Pattern (Client Architecture)
|
|
730
|
+
|
|
731
|
+
```typescript
|
|
732
|
+
// Instead of monolithic inheritance, use composition
|
|
733
|
+
class WordPressClient {
|
|
734
|
+
constructor(
|
|
735
|
+
private authManager: AuthenticationManager,
|
|
736
|
+
private requestManager: RequestManager,
|
|
737
|
+
private cacheManager: CacheManager
|
|
738
|
+
) {}
|
|
739
|
+
|
|
740
|
+
async getPosts(params: PostQueryParams): Promise<Post[]> {
|
|
741
|
+
return this.requestManager.get('/posts', params);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
### 2. Strategy Pattern (Authentication)
|
|
747
|
+
|
|
748
|
+
```typescript
|
|
749
|
+
interface AuthenticationStrategy {
|
|
750
|
+
authenticate(request: Request): Promise<void>;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
class ApplicationPasswordAuth implements AuthenticationStrategy {
|
|
754
|
+
async authenticate(request: Request): Promise<void> {
|
|
755
|
+
// Application password authentication logic
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
class JWTAuth implements AuthenticationStrategy {
|
|
760
|
+
async authenticate(request: Request): Promise<void> {
|
|
761
|
+
// JWT authentication logic
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
### 3. Factory Pattern (Client Creation)
|
|
767
|
+
|
|
768
|
+
```typescript
|
|
769
|
+
class ClientFactory {
|
|
770
|
+
static createClient(config: SiteConfig): WordPressClient {
|
|
771
|
+
const authManager = new AuthenticationManager(config.auth);
|
|
772
|
+
const requestManager = new RequestManager(config.request);
|
|
773
|
+
const cacheManager = new CacheManager(config.cache);
|
|
774
|
+
|
|
775
|
+
return new WordPressClient(authManager, requestManager, cacheManager);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
### 4. Observer Pattern (Performance Monitoring)
|
|
781
|
+
|
|
782
|
+
```typescript
|
|
783
|
+
class PerformanceMonitor {
|
|
784
|
+
private observers: PerformanceObserver[] = [];
|
|
785
|
+
|
|
786
|
+
subscribe(observer: PerformanceObserver): void {
|
|
787
|
+
this.observers.push(observer);
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
notify(metric: PerformanceMetric): void {
|
|
791
|
+
this.observers.forEach(observer => observer.update(metric));
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
### 5. Template Method Pattern (Tool Processing)
|
|
797
|
+
|
|
798
|
+
```typescript
|
|
799
|
+
abstract class BaseTool {
|
|
800
|
+
async process(client: WordPressClient, params: any): Promise<string> {
|
|
801
|
+
this.validateParameters(params);
|
|
802
|
+
const result = await this.executeOperation(client, params);
|
|
803
|
+
return this.formatResponse(result);
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
protected abstract validateParameters(params: any): void;
|
|
807
|
+
protected abstract executeOperation(client: WordPressClient, params: any): Promise<any>;
|
|
808
|
+
protected abstract formatResponse(result: any): string;
|
|
809
|
+
}
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
## Best Practices
|
|
813
|
+
|
|
814
|
+
### 1. Security
|
|
815
|
+
|
|
816
|
+
- Multi-layer validation at every input point
|
|
817
|
+
- Comprehensive sanitization of all content
|
|
818
|
+
- Rate limiting to prevent abuse
|
|
819
|
+
- Secure credential management
|
|
820
|
+
- Regular security audits
|
|
821
|
+
|
|
822
|
+
### 2. Performance
|
|
823
|
+
|
|
824
|
+
- Intelligent caching with LRU eviction
|
|
825
|
+
- Streaming for large datasets
|
|
826
|
+
- Connection pooling and reuse
|
|
827
|
+
- Memory-efficient processing
|
|
828
|
+
- Performance monitoring and optimization
|
|
829
|
+
|
|
830
|
+
### 3. Maintainability
|
|
831
|
+
|
|
832
|
+
- Clear separation of concerns
|
|
833
|
+
- Comprehensive type safety
|
|
834
|
+
- Consistent error handling
|
|
835
|
+
- Thorough documentation
|
|
836
|
+
- Automated testing
|
|
837
|
+
|
|
838
|
+
### 4. Scalability
|
|
839
|
+
|
|
840
|
+
- Multi-site architecture
|
|
841
|
+
- Horizontal scaling support
|
|
842
|
+
- Resource optimization
|
|
843
|
+
- Efficient data processing
|
|
844
|
+
- Monitoring and alerting
|
|
845
|
+
|
|
846
|
+
---
|
|
847
|
+
|
|
848
|
+
*This architecture documentation is maintained by the development team. Last updated: 2024-01-15*
|
|
849
|
+
|
|
850
|
+
*For architectural questions, visit our [GitHub Discussions](https://github.com/docdyhr/mcp-wordpress/discussions)*
|