mcp-wordpress 1.3.1 → 1.5.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 +151 -772
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.js.map +1 -1
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +11 -3
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.js.map +1 -1
- package/dist/client/managers/AuthenticationManager.js.map +1 -1
- package/dist/client/managers/RequestManager.js +0 -1
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts.map +1 -1
- package/dist/config/ServerConfiguration.js +18 -0
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/MarkdownFormatter.js.map +1 -1
- package/dist/dxt-entry.d.ts +6 -0
- package/dist/dxt-entry.d.ts.map +1 -0
- package/dist/dxt-entry.js +38 -0
- package/dist/dxt-entry.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp-wordpress-1.5.0.tgz +0 -0
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.js.map +1 -1
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityConfig.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/tools/cache.js +1 -1
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/performance.js.map +1 -1
- package/docs/DOCKER.md +8 -1
- package/docs/api/README.md +82 -75
- package/docs/api/categories/site.md +2 -0
- package/docs/api/tools/wp_approve_comment.md +0 -6
- package/docs/api/tools/wp_cache_clear.md +5 -14
- package/docs/api/tools/wp_cache_info.md +5 -14
- package/docs/api/tools/wp_cache_stats.md +5 -14
- package/docs/api/tools/wp_cache_warm.md +5 -14
- package/docs/api/tools/wp_create_application_password.md +3 -11
- package/docs/api/tools/wp_create_category.md +3 -11
- package/docs/api/tools/wp_create_comment.md +5 -14
- package/docs/api/tools/wp_create_page.md +5 -13
- package/docs/api/tools/wp_create_post.md +6 -12
- package/docs/api/tools/wp_create_tag.md +3 -11
- package/docs/api/tools/wp_create_user.md +5 -13
- package/docs/api/tools/wp_delete_application_password.md +3 -11
- package/docs/api/tools/wp_delete_category.md +3 -11
- package/docs/api/tools/wp_delete_comment.md +3 -11
- package/docs/api/tools/wp_delete_media.md +3 -10
- package/docs/api/tools/wp_delete_page.md +3 -10
- package/docs/api/tools/wp_delete_post.md +4 -9
- package/docs/api/tools/wp_delete_tag.md +3 -11
- package/docs/api/tools/wp_delete_user.md +3 -10
- package/docs/api/tools/wp_get_application_passwords.md +3 -11
- package/docs/api/tools/wp_get_auth_status.md +3 -11
- package/docs/api/tools/wp_get_category.md +3 -11
- package/docs/api/tools/wp_get_comment.md +3 -11
- package/docs/api/tools/wp_get_current_user.md +3 -11
- package/docs/api/tools/wp_get_media.md +3 -11
- package/docs/api/tools/wp_get_page.md +3 -11
- package/docs/api/tools/wp_get_page_revisions.md +3 -11
- package/docs/api/tools/wp_get_post.md +4 -10
- package/docs/api/tools/wp_get_post_revisions.md +3 -11
- package/docs/api/tools/wp_get_site_settings.md +3 -10
- package/docs/api/tools/wp_get_tag.md +3 -11
- package/docs/api/tools/wp_get_user.md +3 -11
- package/docs/api/tools/wp_list_categories.md +3 -11
- package/docs/api/tools/wp_list_comments.md +3 -11
- package/docs/api/tools/wp_list_media.md +5 -14
- package/docs/api/tools/wp_list_pages.md +5 -14
- package/docs/api/tools/wp_list_posts.md +6 -13
- package/docs/api/tools/wp_list_tags.md +3 -11
- package/docs/api/tools/wp_list_users.md +3 -11
- package/docs/api/tools/wp_performance_alerts.md +7 -17
- package/docs/api/tools/wp_performance_benchmark.md +7 -17
- package/docs/api/tools/wp_performance_export.md +7 -17
- package/docs/api/tools/wp_performance_history.md +7 -17
- package/docs/api/tools/wp_performance_optimize.md +7 -17
- package/docs/api/tools/wp_performance_stats.md +7 -17
- package/docs/api/tools/wp_search_site.md +3 -11
- package/docs/api/tools/wp_spam_comment.md +3 -11
- package/docs/api/tools/wp_switch_auth_method.md +5 -14
- package/docs/api/tools/wp_test_auth.md +3 -11
- package/docs/api/tools/wp_update_category.md +3 -11
- package/docs/api/tools/wp_update_comment.md +5 -14
- package/docs/api/tools/wp_update_media.md +5 -14
- package/docs/api/tools/wp_update_page.md +5 -13
- package/docs/api/tools/wp_update_post.md +6 -12
- package/docs/api/tools/wp_update_site_settings.md +5 -14
- package/docs/api/tools/wp_update_tag.md +3 -11
- package/docs/api/tools/wp_update_user.md +5 -13
- package/docs/api/tools/wp_upload_media.md +5 -13
- package/docs/api/types/WordPressPost.md +0 -2
- package/docs/developer/API_REFERENCE.md +668 -0
- package/docs/developer/ARCHITECTURE.md +374 -0
- package/docs/developer/BUILD_SYSTEM.md +460 -0
- package/docs/developer/CONTRIBUTING.md +469 -0
- package/docs/developer/DEVELOPMENT_SETUP.md +463 -0
- package/docs/developer/DXT-DEBUG-BEST-PRACTICES.md +212 -0
- package/docs/developer/GITHUB_ACTIONS_SETUP.md +2 -1
- package/docs/developer/MAINTENANCE.md +5 -5
- package/docs/developer/MIGRATION_GUIDE.md +7 -5
- package/docs/developer/NPM_AUTH_SETUP.md +4 -4
- package/docs/developer/README.md +242 -0
- package/docs/developer/REFACTORING.md +15 -10
- package/docs/developer/RELEASE_PROCESS.md +528 -0
- package/docs/developer/TESTING.md +734 -0
- package/docs/releases/COMMUNITY_ANNOUNCEMENT_v1.1.2.md +9 -3
- package/docs/releases/RELEASE_NOTES_v1.1.2.md +4 -4
- package/docs/user-guides/DOCKER_SETUP.md +2 -2
- package/docs/user-guides/DTX_SETUP.md +3 -3
- package/docs/user-guides/DXT_INSTALLATION.md +149 -0
- package/docs/user-guides/NPX_SETUP.md +2 -2
- package/package.json +5 -4
- package/src/cache/CacheInvalidation.ts +1 -1
- package/src/client/CachedWordPressClient.ts +15 -15
- package/src/client/api.ts +54 -47
- package/src/client/auth.ts +88 -88
- package/src/client/managers/AuthenticationManager.ts +112 -112
- package/src/client/managers/RequestManager.ts +1 -1
- package/src/config/ServerConfiguration.ts +39 -0
- package/src/docs/MarkdownFormatter.ts +4 -4
- package/src/dxt-entry.cjs +55 -0
- package/src/dxt-entry.ts +55 -0
- package/src/index.ts +55 -2
- package/src/performance/MetricsCollector.ts +3 -3
- package/src/performance/PerformanceAnalytics.ts +16 -16
- package/src/performance/PerformanceMonitor.ts +1 -1
- package/src/security/InputValidator.ts +4 -4
- package/src/security/SecurityConfig.ts +1 -1
- package/src/server/ToolRegistry.ts +12 -12
- package/src/tools/cache.ts +1 -1
- package/src/tools/performance.ts +17 -17
- package/dist/mcp-wordpress-1.3.1.tgz +0 -0
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
# Contributing Guidelines
|
|
2
|
+
|
|
3
|
+
Welcome to the MCP WordPress Server project! This guide will help you get started with contributing to our codebase.
|
|
4
|
+
|
|
5
|
+
## 🤝 Getting Started
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
- **Node.js 18+** - Required for development
|
|
10
|
+
- **TypeScript 5+** - Primary development language
|
|
11
|
+
- **Git** - Version control
|
|
12
|
+
- **Docker** - For testing environment (optional)
|
|
13
|
+
- **WordPress Site** - For testing (or use our Docker environment)
|
|
14
|
+
|
|
15
|
+
### Quick Setup
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Fork and clone the repository
|
|
19
|
+
git clone https://github.com/yourusername/mcp-wordpress.git
|
|
20
|
+
cd mcp-wordpress
|
|
21
|
+
|
|
22
|
+
# Install dependencies
|
|
23
|
+
npm ci
|
|
24
|
+
|
|
25
|
+
# Build the project
|
|
26
|
+
npm run build
|
|
27
|
+
|
|
28
|
+
# Run tests
|
|
29
|
+
npm test
|
|
30
|
+
|
|
31
|
+
# Start development mode
|
|
32
|
+
npm run dev
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 🚀 Development Workflow
|
|
36
|
+
|
|
37
|
+
### 1. Create a Feature Branch
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Create and switch to feature branch
|
|
41
|
+
git checkout -b feature/your-feature-name
|
|
42
|
+
|
|
43
|
+
# Or for bug fixes
|
|
44
|
+
git checkout -b fix/bug-description
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Make Your Changes
|
|
48
|
+
|
|
49
|
+
Follow our coding standards and architectural patterns:
|
|
50
|
+
|
|
51
|
+
- **TypeScript**: Use strict typing and interfaces
|
|
52
|
+
- **Class-based Architecture**: Follow existing tool patterns
|
|
53
|
+
- **Error Handling**: Implement comprehensive error handling
|
|
54
|
+
- **Testing**: Write tests for new functionality
|
|
55
|
+
- **Documentation**: Update relevant documentation
|
|
56
|
+
|
|
57
|
+
### 3. Test Your Changes
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Run all tests
|
|
61
|
+
npm test
|
|
62
|
+
|
|
63
|
+
# Run specific test categories
|
|
64
|
+
npm run test:unit
|
|
65
|
+
npm run test:integration
|
|
66
|
+
npm run test:security
|
|
67
|
+
|
|
68
|
+
# Check code quality
|
|
69
|
+
npm run lint
|
|
70
|
+
npm run typecheck
|
|
71
|
+
|
|
72
|
+
# Test performance
|
|
73
|
+
npm run test:performance
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 4. Commit Your Changes
|
|
77
|
+
|
|
78
|
+
We use [Conventional Commits](https://www.conventionalcommits.org/):
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Examples of good commit messages
|
|
82
|
+
git commit -m "feat: add new WordPress plugin management tool"
|
|
83
|
+
git commit -m "fix: resolve authentication header issue in POST requests"
|
|
84
|
+
git commit -m "docs: update API documentation for media tools"
|
|
85
|
+
git commit -m "test: add performance tests for cache system"
|
|
86
|
+
git commit -m "refactor: improve error handling in request manager"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Commit Types**:
|
|
90
|
+
|
|
91
|
+
- `feat`: New features
|
|
92
|
+
- `fix`: Bug fixes
|
|
93
|
+
- `docs`: Documentation updates
|
|
94
|
+
- `test`: Test additions or improvements
|
|
95
|
+
- `refactor`: Code refactoring
|
|
96
|
+
- `perf`: Performance improvements
|
|
97
|
+
- `style`: Code style/formatting
|
|
98
|
+
- `chore`: Maintenance tasks
|
|
99
|
+
|
|
100
|
+
### 5. Push and Create Pull Request
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Push your branch
|
|
104
|
+
git push origin feature/your-feature-name
|
|
105
|
+
|
|
106
|
+
# Create pull request through GitHub interface
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 📋 Code Standards
|
|
110
|
+
|
|
111
|
+
### TypeScript Guidelines
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
// ✅ Good: Strict typing with interfaces
|
|
115
|
+
interface CreatePostParams {
|
|
116
|
+
title: string;
|
|
117
|
+
content?: string;
|
|
118
|
+
status?: PostStatus;
|
|
119
|
+
site?: string;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
async function createPost(params: CreatePostParams): Promise<PostResult> {
|
|
123
|
+
const validatedParams = createPostSchema.parse(params);
|
|
124
|
+
return await this.client.posts.create(validatedParams);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// ❌ Bad: Any types and loose typing
|
|
128
|
+
async function createPost(params: any): Promise<any> {
|
|
129
|
+
return await this.client.posts.create(params);
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Class-based Tool Pattern
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
// ✅ Good: Follow established tool pattern
|
|
137
|
+
export class PostTools {
|
|
138
|
+
constructor(private client: WordPressClient) {}
|
|
139
|
+
|
|
140
|
+
async createPost(params: CreatePostParams): Promise<PostResult> {
|
|
141
|
+
return toolWrapper(this.client, "create_post", params, async () => {
|
|
142
|
+
const validatedParams = createPostSchema.parse(params);
|
|
143
|
+
return await this.client.posts.create(validatedParams);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// ❌ Bad: Function-based approach
|
|
149
|
+
export function createPost(client: WordPressClient, params: any) {
|
|
150
|
+
// Not following established patterns
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Error Handling
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// ✅ Good: Comprehensive error handling
|
|
158
|
+
try {
|
|
159
|
+
const result = await this.client.posts.create(params);
|
|
160
|
+
return { success: true, data: result };
|
|
161
|
+
} catch (error) {
|
|
162
|
+
if (error instanceof WordPressAPIError) {
|
|
163
|
+
throw new Error(`WordPress API error: ${error.message}`);
|
|
164
|
+
}
|
|
165
|
+
throw new Error(`Failed to create post: ${error.message}`);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// ❌ Bad: No error handling
|
|
169
|
+
const result = await this.client.posts.create(params);
|
|
170
|
+
return result;
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Multi-Site Support
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
// ✅ Good: Multi-site parameter support
|
|
177
|
+
async function listPosts(params: ListPostsParams): Promise<PostListResult> {
|
|
178
|
+
const client = this.getClientForSite(params.site);
|
|
179
|
+
return await client.posts.list(params);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// ❌ Bad: No multi-site support
|
|
183
|
+
async function listPosts(params: any) {
|
|
184
|
+
return await this.client.posts.list(params);
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## 🧪 Testing Guidelines
|
|
189
|
+
|
|
190
|
+
### Write Comprehensive Tests
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
// ✅ Good: Comprehensive test coverage
|
|
194
|
+
describe("PostTools", () => {
|
|
195
|
+
describe("createPost", () => {
|
|
196
|
+
test("should create post with valid parameters", async () => {
|
|
197
|
+
const params = {
|
|
198
|
+
title: "Test Post",
|
|
199
|
+
content: "Test content",
|
|
200
|
+
status: "publish" as PostStatus,
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const result = await postTools.createPost(params);
|
|
204
|
+
|
|
205
|
+
expect(result.success).toBe(true);
|
|
206
|
+
expect(result.data.title).toBe("Test Post");
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
test("should handle invalid parameters", async () => {
|
|
210
|
+
const params = { title: "" }; // Invalid empty title
|
|
211
|
+
|
|
212
|
+
await expect(postTools.createPost(params)).rejects.toThrow();
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
test("should handle API errors gracefully", async () => {
|
|
216
|
+
mockClient.posts.create.mockRejectedValue(new Error("API Error"));
|
|
217
|
+
|
|
218
|
+
await expect(postTools.createPost(validParams)).rejects.toThrow(
|
|
219
|
+
"API Error",
|
|
220
|
+
);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Test Categories to Include
|
|
227
|
+
|
|
228
|
+
1. **Unit Tests**: Test individual functions/methods
|
|
229
|
+
2. **Integration Tests**: Test with real WordPress API
|
|
230
|
+
3. **Security Tests**: Test input validation and security
|
|
231
|
+
4. **Performance Tests**: Test response times and resource usage
|
|
232
|
+
5. **Edge Cases**: Test boundary conditions and error scenarios
|
|
233
|
+
|
|
234
|
+
### Test Best Practices
|
|
235
|
+
|
|
236
|
+
- Use descriptive test names
|
|
237
|
+
- Test both success and failure cases
|
|
238
|
+
- Mock external dependencies appropriately
|
|
239
|
+
- Include performance assertions where relevant
|
|
240
|
+
- Test multi-site functionality
|
|
241
|
+
|
|
242
|
+
## 🔒 Security Guidelines
|
|
243
|
+
|
|
244
|
+
### Input Validation
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
// ✅ Good: Comprehensive input validation
|
|
248
|
+
const createPostSchema = z.object({
|
|
249
|
+
title: z.string().min(1).max(200),
|
|
250
|
+
content: z.string().optional(),
|
|
251
|
+
status: z.enum(["draft", "publish", "private", "pending"]).optional(),
|
|
252
|
+
author: z.number().positive().optional(),
|
|
253
|
+
site: z.string().optional(),
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
// Always validate before processing
|
|
257
|
+
const validatedParams = createPostSchema.parse(params);
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Authentication Security
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
// ✅ Good: Secure authentication headers
|
|
264
|
+
getAuthHeaders(): Record<string, string> {
|
|
265
|
+
return {
|
|
266
|
+
'Authorization': `Bearer ${this.sanitizeToken(this.token)}`,
|
|
267
|
+
'Content-Type': 'application/json'
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// ❌ Bad: Exposing sensitive information
|
|
272
|
+
getAuthHeaders(): Record<string, string> {
|
|
273
|
+
console.log('Using token:', this.token); // Don't log tokens!
|
|
274
|
+
return { 'Authorization': `Bearer ${this.token}` };
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Security Checklist
|
|
279
|
+
|
|
280
|
+
- [ ] All user inputs are validated with Zod schemas
|
|
281
|
+
- [ ] No sensitive information is logged or exposed
|
|
282
|
+
- [ ] Authentication tokens are handled securely
|
|
283
|
+
- [ ] Rate limiting is implemented where appropriate
|
|
284
|
+
- [ ] Error messages don't reveal sensitive information
|
|
285
|
+
- [ ] HTTPS is enforced for all API calls
|
|
286
|
+
|
|
287
|
+
## 📚 Documentation Standards
|
|
288
|
+
|
|
289
|
+
### Code Documentation
|
|
290
|
+
|
|
291
|
+
````typescript
|
|
292
|
+
/**
|
|
293
|
+
* Creates a new WordPress post with the specified parameters.
|
|
294
|
+
*
|
|
295
|
+
* @param params - The post creation parameters
|
|
296
|
+
* @param params.title - The post title (required)
|
|
297
|
+
* @param params.content - The post content (optional)
|
|
298
|
+
* @param params.status - The post status (optional, defaults to 'draft')
|
|
299
|
+
* @param params.site - The target site ID for multi-site setups (optional)
|
|
300
|
+
* @returns Promise resolving to the created post information
|
|
301
|
+
* @throws {Error} When post creation fails or parameters are invalid
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const post = await postTools.createPost({
|
|
306
|
+
* title: 'My New Post',
|
|
307
|
+
* content: 'This is the post content',
|
|
308
|
+
* status: 'publish'
|
|
309
|
+
* });
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
async createPost(params: CreatePostParams): Promise<PostResult> {
|
|
313
|
+
// Implementation
|
|
314
|
+
}
|
|
315
|
+
````
|
|
316
|
+
|
|
317
|
+
### Update Documentation
|
|
318
|
+
|
|
319
|
+
When adding new features or making changes:
|
|
320
|
+
|
|
321
|
+
1. **Update CLAUDE.md** - Add new commands or architectural changes
|
|
322
|
+
2. **Update API Documentation** - Document new tools and parameters
|
|
323
|
+
3. **Update README.md** - Update user-facing information if needed
|
|
324
|
+
4. **Add Usage Examples** - Provide practical examples
|
|
325
|
+
|
|
326
|
+
## 🐛 Issue Guidelines
|
|
327
|
+
|
|
328
|
+
### Bug Reports
|
|
329
|
+
|
|
330
|
+
When reporting bugs, include:
|
|
331
|
+
|
|
332
|
+
- **Environment**: OS, Node.js version, package version
|
|
333
|
+
- **WordPress Version**: WordPress version and setup
|
|
334
|
+
- **Steps to Reproduce**: Clear steps to reproduce the issue
|
|
335
|
+
- **Expected Behavior**: What should happen
|
|
336
|
+
- **Actual Behavior**: What actually happens
|
|
337
|
+
- **Error Messages**: Full error messages and stack traces
|
|
338
|
+
- **Configuration**: Relevant configuration (anonymized)
|
|
339
|
+
|
|
340
|
+
### Feature Requests
|
|
341
|
+
|
|
342
|
+
When requesting features:
|
|
343
|
+
|
|
344
|
+
- **Use Case**: Describe the problem you're trying to solve
|
|
345
|
+
- **Proposed Solution**: Your suggested approach
|
|
346
|
+
- **Alternatives**: Other approaches you've considered
|
|
347
|
+
- **Additional Context**: Any other relevant information
|
|
348
|
+
|
|
349
|
+
## 🎯 Pull Request Guidelines
|
|
350
|
+
|
|
351
|
+
### PR Description Template
|
|
352
|
+
|
|
353
|
+
```markdown
|
|
354
|
+
## Description
|
|
355
|
+
|
|
356
|
+
Brief description of the changes made.
|
|
357
|
+
|
|
358
|
+
## Type of Change
|
|
359
|
+
|
|
360
|
+
- [ ] Bug fix (non-breaking change which fixes an issue)
|
|
361
|
+
- [ ] New feature (non-breaking change which adds functionality)
|
|
362
|
+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
|
363
|
+
- [ ] Documentation update
|
|
364
|
+
- [ ] Performance improvement
|
|
365
|
+
- [ ] Security improvement
|
|
366
|
+
|
|
367
|
+
## Testing
|
|
368
|
+
|
|
369
|
+
- [ ] Unit tests added/updated
|
|
370
|
+
- [ ] Integration tests added/updated
|
|
371
|
+
- [ ] Security tests added/updated
|
|
372
|
+
- [ ] All tests pass locally
|
|
373
|
+
- [ ] Performance tests pass (if applicable)
|
|
374
|
+
|
|
375
|
+
## Checklist
|
|
376
|
+
|
|
377
|
+
- [ ] Code follows the established patterns
|
|
378
|
+
- [ ] Self-review completed
|
|
379
|
+
- [ ] Code is commented where necessary
|
|
380
|
+
- [ ] Documentation updated
|
|
381
|
+
- [ ] No breaking changes or breaking changes are documented
|
|
382
|
+
- [ ] Security considerations addressed
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Code Review Process
|
|
386
|
+
|
|
387
|
+
1. **Automated Checks**: All CI/CD checks must pass
|
|
388
|
+
2. **Manual Review**: Code review by maintainers
|
|
389
|
+
3. **Security Review**: Security implications assessed
|
|
390
|
+
4. **Performance Review**: Performance impact evaluated
|
|
391
|
+
5. **Documentation Review**: Documentation completeness checked
|
|
392
|
+
|
|
393
|
+
## 🚀 Release Process
|
|
394
|
+
|
|
395
|
+
### Semantic Versioning
|
|
396
|
+
|
|
397
|
+
We follow [Semantic Versioning](https://semver.org/):
|
|
398
|
+
|
|
399
|
+
- **Major Version** (`1.0.0 → 2.0.0`): Breaking changes
|
|
400
|
+
- **Minor Version** (`1.0.0 → 1.1.0`): New features (backward compatible)
|
|
401
|
+
- **Patch Version** (`1.0.0 → 1.0.1`): Bug fixes (backward compatible)
|
|
402
|
+
|
|
403
|
+
### Release Workflow
|
|
404
|
+
|
|
405
|
+
1. **Development**: Features developed in feature branches
|
|
406
|
+
2. **Testing**: Comprehensive testing on staging environment
|
|
407
|
+
3. **Merge**: Merge to main branch triggers automated release
|
|
408
|
+
4. **Publish**: Automated publishing to NPM and Docker Hub
|
|
409
|
+
5. **Verification**: Automated verification of published packages
|
|
410
|
+
|
|
411
|
+
## 🏆 Recognition
|
|
412
|
+
|
|
413
|
+
### Contributors
|
|
414
|
+
|
|
415
|
+
We recognize contributions through:
|
|
416
|
+
|
|
417
|
+
- **GitHub Contributors**: Listed in repository contributors
|
|
418
|
+
- **Release Notes**: Significant contributions mentioned in release notes
|
|
419
|
+
- **Documentation**: Contributors credited in documentation
|
|
420
|
+
- **Community**: Recognition in community discussions
|
|
421
|
+
|
|
422
|
+
### Code of Conduct
|
|
423
|
+
|
|
424
|
+
We follow the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).
|
|
425
|
+
Please read it to understand the expected behavior in our community.
|
|
426
|
+
|
|
427
|
+
## 📞 Getting Help
|
|
428
|
+
|
|
429
|
+
### Development Support
|
|
430
|
+
|
|
431
|
+
- **GitHub Issues**: For bug reports and feature requests
|
|
432
|
+
- **GitHub Discussions**: For questions and community support
|
|
433
|
+
- **Documentation**: Check existing documentation first
|
|
434
|
+
- **Code Examples**: Look at existing code for patterns
|
|
435
|
+
|
|
436
|
+
### Resources
|
|
437
|
+
|
|
438
|
+
- **WordPress REST API**: [Official Documentation](https://developer.wordpress.org/rest-api/)
|
|
439
|
+
- **Model Context Protocol**: [MCP Specification](https://modelcontextprotocol.io/)
|
|
440
|
+
- **TypeScript**: [Official Handbook](https://www.typescriptlang.org/docs/)
|
|
441
|
+
- **Jest Testing**: [Official Documentation](https://jestjs.io/docs/getting-started)
|
|
442
|
+
|
|
443
|
+
## 📈 Development Roadmap
|
|
444
|
+
|
|
445
|
+
### Current Focus
|
|
446
|
+
|
|
447
|
+
- **Performance Optimization**: Enhance caching and request optimization
|
|
448
|
+
- **Security Enhancements**: Advanced security features and validation
|
|
449
|
+
- **Tool Expansion**: Additional WordPress management tools
|
|
450
|
+
- **Documentation**: Comprehensive user and developer documentation
|
|
451
|
+
|
|
452
|
+
### Future Plans
|
|
453
|
+
|
|
454
|
+
- **Plugin Architecture**: Extensible plugin system
|
|
455
|
+
- **GUI Management**: Web-based management interface
|
|
456
|
+
- **Advanced Analytics**: Enhanced performance and usage analytics
|
|
457
|
+
- **Multi-Platform Support**: Support for additional CMS platforms
|
|
458
|
+
|
|
459
|
+
## 📚 Further Reading
|
|
460
|
+
|
|
461
|
+
- **[Architecture Guide](ARCHITECTURE.md)** - System design and patterns
|
|
462
|
+
- **[API Reference](API_REFERENCE.md)** - Complete technical API documentation
|
|
463
|
+
- **[Testing Guide](TESTING.md)** - Test suite and best practices
|
|
464
|
+
- **[Development Setup](DEVELOPMENT_SETUP.md)** - Local development environment
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
**Ready to contribute?** Thank you for your interest in improving the MCP WordPress Server! Every
|
|
469
|
+
contribution, no matter how small, helps make this project better for everyone. 🚀
|