{"id":29015448,"url":"https://github.com/diazoxide/wp-standalone-mcp","last_synced_at":"2025-06-25T21:07:23.469Z","repository":{"id":298306539,"uuid":"999508586","full_name":"diazoxide/wp-standalone-mcp","owner":"diazoxide","description":"Integration between AI assistants and WordPress sites through the WordPress REST API","archived":false,"fork":false,"pushed_at":"2025-06-10T11:49:39.000Z","size":10,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-10T12:40:13.366Z","etag":null,"topics":["ai","claude","claude-ai","llm","mcp","mcp-server","wordpress"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diazoxide.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-10T11:05:11.000Z","updated_at":"2025-06-10T12:25:51.000Z","dependencies_parsed_at":"2025-06-10T12:40:42.921Z","dependency_job_id":"9d945449-a052-4ac4-aee6-9b1436ac3215","html_url":"https://github.com/diazoxide/wp-standalone-mcp","commit_stats":null,"previous_names":["diazoxide/wp-standalone-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/diazoxide/wp-standalone-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diazoxide%2Fwp-standalone-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diazoxide%2Fwp-standalone-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diazoxide%2Fwp-standalone-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diazoxide%2Fwp-standalone-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diazoxide","download_url":"https://codeload.github.com/diazoxide/wp-standalone-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diazoxide%2Fwp-standalone-mcp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261953214,"owners_count":23235457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude","claude-ai","llm","mcp","mcp-server","wordpress"],"created_at":"2025-06-25T21:07:15.144Z","updated_at":"2025-06-25T21:07:23.461Z","avatar_url":"https://github.com/diazoxide.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WordPress Standalone MCP Server\n\nA powerful [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that provides seamless integration between AI assistants and WordPress sites through the WordPress REST API. This server automatically discovers and creates individual tools for each WordPress REST API endpoint, enabling natural language WordPress management.\n\n## ✨ Features\n\n- **🔄 Dynamic Tool Generation**: Automatically creates individual tools for each discovered WordPress REST API endpoint\n- **🌐 Multi-Site Support**: Manage multiple WordPress sites simultaneously from a single configuration\n- **🔒 Secure Authentication**: Uses WordPress Application Passwords for secure API access\n- **🎯 Smart Tool Filtering**: Include/exclude specific tools using exact match or regex patterns\n- **📊 Comprehensive Coverage**: Support for posts, pages, users, media, comments, plugins, themes, and more\n- **🚀 Zero Configuration Discovery**: Automatically maps all available endpoints without manual setup\n- **⚡ High Performance**: Efficient endpoint discovery and request handling\n- **🛡️ Error Handling**: Graceful error handling with detailed diagnostic messages\n\n## 🚀 Quick Start\n\n### Installation\n\n```bash\n# Install globally\nnpm install -g wp-standalone-mcp\n\n# Or run directly with npx\nnpx github:diazoxide/wp-standalone-mcp start\n```\n\n### Basic Configuration\n\n1. **Create a WordPress Application Password**:\n   - Go to your WordPress admin → Users → Profile\n   - Scroll to \"Application Passwords\" section\n   - Create a new application password\n   - Copy the generated password\n\n2. **Create configuration file** (`wp-sites.json`):\n   ```json\n   {\n     \"myblog\": {\n       \"URL\": \"https://myblog.com\",\n       \"USER\": \"your_username\",\n       \"PASS\": \"your_application_password\"\n     }\n   }\n   ```\n\n3. **Configure Claude Desktop** (`claude_desktop_config.json`):\n   ```json\n   {\n     \"mcpServers\": {\n       \"wordpress\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"github:diazoxide/wp-standalone-mcp\", \"start\"],\n         \"env\": {\n           \"WP_SITES_PATH\": \"/absolute/path/to/wp-sites.json\"\n         }\n       }\n     }\n   }\n   ```\n\n4. **Restart Claude Desktop** and start managing your WordPress sites!\n\n## Tools Reference\n\n### Dynamic Endpoint Tools\n\nWhen the server starts, it automatically discovers all available WordPress REST API endpoints and creates individual tools for each endpoint/method combination. Tool names follow the pattern: `[site]_[method]_[resource]` or `[site]_[method]_[resource]_id` for ID-specific endpoints.\n\nExamples:\n- `myblog_get_v2_posts` - List all posts\n- `myblog_get_v2_posts_id` - Get a specific post by ID\n- `myblog_post_v2_posts` - Create a new post\n- `myblog_put_v2_posts_id` - Update a specific post\n- `myblog_delete_v2_posts_id` - Delete a specific post\n\n### `wp_discover_endpoints`\nRe-discovers all available REST API endpoints on a WordPress site.\n\n**Arguments:**\n```json\n{\n\t\"site\": {\n\t\t\"type\": \"string\",\n\t\t\"description\": \"Site alias (as defined in configuration)\",\n\t\t\"required\": true\n\t}\n}\n```\n\n**Returns:**\nList of available endpoints with their methods and namespaces.\n\n## 🔧 Configuration\n\n### Environment Variables\n\n- `WP_SITES_PATH`: Path to your WordPress sites configuration file\n- `WP_SITES`: Direct JSON configuration (alternative to file)\n\n### Site Configuration Schema\n\n```json\n{\n  \"site_alias\": {\n    \"URL\": \"https://your-site.com\",\n    \"USER\": \"wordpress_username\", \n    \"PASS\": \"application_password\",\n    \"FILTERS\": {\n      \"include\": [\"tool_name_patterns\"],\n      \"exclude\": [\"tool_name_patterns\"]\n    }\n  }\n}\n```\n\n### Getting an Application Password\n\n1. Log in to your WordPress admin dashboard\n2. Go to Users → Profile\n3. Scroll to the \"Application Passwords\" section\n4. Enter a name for the application (e.g., \"MCP Server\")\n5. Click \"Add New Application Password\"\n6. Copy the generated password (you won't be able to see it again)\n\nNote: Application Passwords require WordPress 5.6 or later and HTTPS.\n\n### Advanced Tool Filtering\n\nControl which WordPress operations are available by filtering tools:\n\n```json\n{\n  \"myblog\": {\n    \"URL\": \"https://myblog.com\",\n    \"USER\": \"admin\",\n    \"PASS\": \"abcd 1234 efgh 5678\",\n    \"FILTERS\": {\n      \"include\": [\n        \"myblog_get_v2_posts\",\n        \"myblog_post_v2_posts\",\n        \"/.*_get_.*_posts.*/\"\n      ],\n      \"exclude\": [\n        \"myblog_delete_v2_posts_id\",\n        \"/.*_.*_users.*/\",\n        \"/.*_delete_.*/\"\n      ]\n    }\n  }\n}\n```\n\n**Filter Rules:**\n- `include`: Only specified tools are exposed (whitelist)\n- `exclude`: Specified tools are hidden (blacklist)\n- `include` takes precedence over `exclude`\n- Supports exact matches and regex patterns (wrap in `/pattern/`)\n\n## 🛠️ Generated Tools\n\nThe server automatically creates tools following this naming convention:\n- **Pattern**: `[site]_[method]_[resource]` or `[site]_[method]_[resource]_id`\n- **Examples**:\n  - `myblog_get_v2_posts` - List all posts\n  - `myblog_get_v2_posts_id` - Get specific post by ID\n  - `myblog_post_v2_posts` - Create new post\n  - `myblog_put_v2_posts_id` - Update specific post\n  - `myblog_delete_v2_posts_id` - Delete specific post\n  - `myblog_get_v2_media` - List media files\n  - `myblog_get_v2_users` - List users\n\n### Discovery Tool\n\n- `wp_discover_endpoints` - Re-discover available endpoints for a site\n\n## 💡 Usage Examples\n\nOnce configured, interact with your WordPress sites using natural language:\n\n#### List and Query Posts\n```\nCan you show me all posts from myblog published in the last month?\n```\n```\nFind all posts on testsite tagged with \"technology\" and \"AI\"\n```\n```\nShow me draft posts from myblog that need review\n```\n\n#### Create and Edit Content\n```\nCreate a new draft post on testsite titled \"The Future of AI\" with these key points: [points]\n```\n```\nUpdate the featured image on myblog's latest post about machine learning\n```\n```\nAdd a new category called \"Tech News\" to myblog\n```\n\n#### Manage Comments\n```\nShow me all pending comments on myblog's latest post\n```\n```\nFind comments from testsite that might be spam\n```\n```\nList the most engaged commenters on myblog\n```\n\n#### Plugin Management\n```\nWhat plugins are currently active on myblog?\n```\n```\nCheck if any plugins on testsite need updates\n```\n```\nTell me about the security plugins installed on myblog\n```\n\n### Content Management\n```\n\"Show me the last 5 posts from myblog\"\n\"Create a new draft post titled 'AI and the Future' on myblog\"\n\"Update the featured image for post ID 123 on myblog\"\n\"Delete the post with ID 456 from myblog\"\n```\n\n### Media Management\n```\n\"List all images uploaded this month to myblog\"\n\"Upload a new image to myblog media library\"\n\"Get details for media file ID 789\"\n```\n\n### User Management\n```\n\"Show all users with editor role on myblog\"\n\"Create a new contributor account on myblog\"\n\"Update user permissions for user ID 101\"\n```\n\n### Site Analysis\n```\n\"What plugins are active on myblog?\"\n\"Show me all pending comments\"\n\"Get the current theme information\"\n\"List all categories and their post counts\"\n```\n\n## 🏗️ Architecture\n\n```\n┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐\n│   Claude AI     │    │  MCP Server      │    │  WordPress API  │\n│                 │◄──►│                  │◄──►│                 │\n│ Natural Language│    │ Dynamic Tools    │    │ REST Endpoints  │\n└─────────────────┘    └──────────────────┘    └─────────────────┘\n                              │\n                              ▼\n                       ┌──────────────────┐\n                       │  Configuration   │\n                       │   wp-sites.json  │\n                       └──────────────────┘\n```\n\n## 🔒 Security\n\n- **Application Passwords**: Uses WordPress's secure application password system\n- **HTTPS Required**: All connections must use HTTPS\n- **Configuration Security**: Keep configuration files outside web-accessible directories\n- **Principle of Least Privilege**: Use accounts with minimal required permissions\n- **No Credential Storage**: Credentials are only used for API authentication\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n**\"Site not configured\" error**\n- Verify site alias in configuration matches usage\n- Check configuration file path and format\n\n**\"Authentication failed\" error**\n- Verify application password is correct\n- Ensure user account has necessary permissions\n- Check if site URL is accessible\n\n**\"No tools discovered\" error**\n- Verify WordPress site has REST API enabled\n- Check if site URL includes `/wp-json` accessibility\n- Review any security plugins blocking REST API\n\n### Debug Mode\n\nSet `DEBUG=wp-mcp` environment variable for detailed logging:\n\n```bash\nDEBUG=wp-mcp npx github:diazoxide/wp-standalone-mcp start\n```\n\n## 📋 Requirements\n\n- **WordPress**: 5.6+ (for Application Passwords)\n- **Node.js**: 16+\n- **HTTPS**: Required for Application Passwords\n- **REST API**: Must be enabled (default in WordPress)\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests if applicable\n5. Submit a pull request\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## 🔗 Links\n\n- **Repository**: [https://github.com/diazoxide/wp-standalone-mcp](https://github.com/diazoxide/wp-standalone-mcp)\n- **Issues**: [https://github.com/diazoxide/wp-standalone-mcp/issues](https://github.com/diazoxide/wp-standalone-mcp/issues)\n- **WordPress REST API**: [https://developer.wordpress.org/rest-api/](https://developer.wordpress.org/rest-api/)\n- **Model Context Protocol**: [https://modelcontextprotocol.io/](https://modelcontextprotocol.io/)\n\n## 🙏 Acknowledgments\n\n- WordPress REST API team for the comprehensive API\n- Anthropic for the Model Context Protocol specification\n- The open-source community for continuous support and feedback\n\n---\n\n**Made with ❤️ for the WordPress and AI community**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiazoxide%2Fwp-standalone-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiazoxide%2Fwp-standalone-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiazoxide%2Fwp-standalone-mcp/lists"}