{"id":30805553,"url":"https://github.com/aaronsb/wordpress-mcp","last_synced_at":"2025-09-06T00:58:56.830Z","repository":{"id":296907483,"uuid":"994939806","full_name":"aaronsb/wordpress-mcp","owner":"aaronsb","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-25T18:33:27.000Z","size":202,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-25T19:33:31.963Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aaronsb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-02T18:06:16.000Z","updated_at":"2025-06-25T18:33:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"9562493d-6b73-4ecd-afbd-237ae712a28e","html_url":"https://github.com/aaronsb/wordpress-mcp","commit_stats":null,"previous_names":["aaronsb/wordpress-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aaronsb/wordpress-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronsb%2Fwordpress-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronsb%2Fwordpress-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronsb%2Fwordpress-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronsb%2Fwordpress-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aaronsb","download_url":"https://codeload.github.com/aaronsb/wordpress-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronsb%2Fwordpress-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273842819,"owners_count":25177921,"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","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-09-06T00:58:51.823Z","updated_at":"2025-09-06T00:58:56.802Z","avatar_url":"https://github.com/aaronsb.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WordPress Author MCP Server\n\nA personality-based Model Context Protocol (MCP) server for WordPress that provides role-appropriate tools for content management. This server enables AI assistants like Claude to create, edit, and manage WordPress content through natural language interactions.\n\n## Purpose \u0026 Features\n\n- **🎭 Personality-Based Tool Mapping**: Three modes (Contributor/Author/Administrator) with role-appropriate tools\n- **🔧 Semantic Operations**: High-level WordPress actions without API complexity  \n- **📁 Document Session Workflow**: Abstracted temp file editing with opaque handles (no filesystem exposure)\n- **🔄 Transparent Format Conversion**: AI edits clean Markdown → WordPress receives formatted HTML\n- **✏️ Flexible Line-Based Editing**: Precise line operations + contextual search/replace\n- **🛡️ WordPress-Native Permissions**: Let WordPress handle all permission enforcement\n- **📝 Content Management**: Create drafts, publish posts/pages, schedule content, manage media\n- **⚡ Map-Based Architecture**: JSON configuration for tool assignments, no hardcoded roles\n\n## Semantic Architecture\n\nThis MCP server is **not just an API wrapper**. It provides intelligent semantic operations that map human workflows to WordPress actions, with sophisticated state management and format conversion.\n\n### Document Session State Flow\n\n```mermaid\nflowchart TB\n    WP[WordPress HTML Post]:::wordpress\n    PFE[pull-for-editing]:::operation\n    H2M[HTML→Markdown Conversion]:::converter\n    DS[Document Session\u003cbr/\u003eHandle: abc123]:::session\n    LES[Local Edit State\u003cbr/\u003e• Clean Markdown\u003cbr/\u003e• Line Numbers\u003cbr/\u003e• No HTML Entities]:::state\n    \n    EDL[edit-document-line]:::edit\n    IAL[insert-at-line]:::edit\n    SR[search-replace]:::edit\n    \n    MLS[Modified Local State\u003cbr/\u003eMultiple Edits Applied]:::state\n    STW[sync-to-wordpress]:::operation\n    M2H[Markdown→HTML Conversion]:::converter\n    WPU[WordPress Update\u003cbr/\u003eSingle API Call]:::wordpress\n    \n    WP --\u003e|1| PFE\n    PFE --\u003e H2M\n    H2M --\u003e DS\n    DS --\u003e LES\n    LES --\u003e EDL\n    LES --\u003e IAL\n    LES --\u003e SR\n    EDL --\u003e MLS\n    IAL --\u003e MLS\n    SR --\u003e MLS\n    MLS --\u003e|2| STW\n    STW --\u003e M2H\n    M2H --\u003e WPU\n    \n    classDef wordpress fill:#1e40af,stroke:#3730a3,color:#ffffff\n    classDef operation fill:#059669,stroke:#047857,color:#ffffff\n    classDef converter fill:#7c3aed,stroke:#6d28d9,color:#ffffff\n    classDef session fill:#ea580c,stroke:#dc2626,color:#ffffff\n    classDef state fill:#0891b2,stroke:#0e7490,color:#ffffff\n    classDef edit fill:#64748b,stroke:#475569,color:#ffffff\n```\n\n### Semantic Operation Mapping\n\n```mermaid\nflowchart LR\n    subgraph \"Human Intent\"\n        H1[I want to write about MCP servers]:::human\n        H2[Fix that typo in my article]:::human\n        H3[What do people think of my post?]:::human\n    end\n    \n    subgraph \"AI Intent\"\n        AI1[Create article]:::intent\n        AI2[Edit my post]:::intent\n        AI3[Review feedback]:::intent\n    end\n    \n    subgraph \"Semantic Operations\"\n        SO1[draft-article]:::semantic\n        SO2[pull-for-editing\u003cbr/\u003e+ edit-document\u003cbr/\u003e+ sync-to-wordpress]:::semantic\n        SO3[view-editorial-feedback]:::semantic\n    end\n    \n    subgraph \"WordPress API\"\n        API1[POST /wp/v2/posts\u003cbr/\u003e+ Category lookups\u003cbr/\u003e+ Tag creation\u003cbr/\u003e+ Status setting]:::api\n        API2[GET /wp/v2/posts/:id\u003cbr/\u003e+ GET categories\u003cbr/\u003e+ GET tags\u003cbr/\u003e+ PUT /wp/v2/posts/:id]:::api\n        API3[GET /wp/v2/comments\u003cbr/\u003e+ Filter by post_author\u003cbr/\u003e+ Parse editorial notes]:::api\n    end\n    \n    H1 --\u003e AI1\n    H2 --\u003e AI2\n    H3 --\u003e AI3\n    \n    AI1 --\u003e SO1\n    AI2 --\u003e SO2\n    AI3 --\u003e SO3\n    \n    SO1 --\u003e API1\n    SO2 --\u003e API2\n    SO3 --\u003e API3\n    \n    classDef human fill:#ec4899,stroke:#db2777,color:#ffffff\n    classDef intent fill:#10b981,stroke:#059669,color:#ffffff\n    classDef semantic fill:#f59e0b,stroke:#d97706,color:#000000\n    classDef api fill:#6366f1,stroke:#4f46e5,color:#ffffff\n```\n\n### Key Architectural Components\n\n1. **Document Session Manager**\n   - Maintains editing sessions with opaque handles\n   - No filesystem paths exposed to AI\n   - Automatic cleanup on sync\n\n2. **Format Conversion Layer**\n   - Turndown: HTML → Markdown (with fallbacks)\n   - Marked: Markdown → HTML (with fallbacks)\n   - Handles WordPress HTML entities transparently\n\n3. **Semantic Operation Engine**\n   - Maps high-level intents to WordPress workflows\n   - Batches related API calls\n   - Provides transaction-like operations\n\n4. **Line-Based Edit System**\n   - Precise line number operations\n   - Context-aware search within line ranges\n   - Avoids brittle string matching\n\n### Permission Flow\n\n```mermaid\nflowchart TD\n    subgraph \"MCP Configuration\"\n        P1[Contributor Personality]:::personality\n        P2[Author Personality]:::personality\n        P3[Admin Personality]:::personality\n    end\n    \n    subgraph \"Available Tools\"\n        T1[Limited Tools\u003cbr/\u003edraft, edit, submit]:::tools\n        T2[Extended Tools\u003cbr/\u003e+ publish, media]:::tools\n        T3[All Tools\u003cbr/\u003e+ bulk ops, categories]:::tools\n    end\n    \n    subgraph \"WordPress User\"\n        U1[Contributor Account]:::user\n        U2[Author Account]:::user\n        U3[Admin Account]:::user\n    end\n    \n    subgraph \"Actual Capabilities\"\n        C1[Can only draft]:::capability\n        C2[Can publish own]:::capability\n        C3[Full control]:::capability\n    end\n    \n    P1 --\u003e T1\n    P2 --\u003e T2\n    P3 --\u003e T3\n    \n    T1 --\u003e |Filtered by| U1\n    T1 --\u003e |Filtered by| U2\n    T1 --\u003e |Filtered by| U3\n    \n    T2 --\u003e |Filtered by| U1\n    T2 --\u003e |Filtered by| U2\n    T2 --\u003e |Filtered by| U3\n    \n    T3 --\u003e |Filtered by| U1\n    T3 --\u003e |Filtered by| U2\n    T3 --\u003e |Filtered by| U3\n    \n    U1 --\u003e C1\n    U2 --\u003e C2\n    U3 --\u003e C3\n    \n    WP[WordPress Always Has\u003cbr/\u003eFinal Authority]:::wordpress\n    C1 --\u003e WP\n    C2 --\u003e WP\n    C3 --\u003e WP\n    \n    classDef personality fill:#8b5cf6,stroke:#7c3aed,color:#ffffff\n    classDef tools fill:#0ea5e9,stroke:#0284c7,color:#ffffff\n    classDef user fill:#f97316,stroke:#ea580c,color:#ffffff\n    classDef capability fill:#22c55e,stroke:#16a34a,color:#000000\n    classDef wordpress fill:#dc2626,stroke:#b91c1c,color:#ffffff\n```\n\n## Prerequisites\n\nBefore using this MCP server, you need:\n\n1. **WordPress Application Password**\n   - Go to your WordPress admin: `Users \u003e Your Profile \u003e Application Passwords`\n   - Create a new application password\n   - Save this password - you'll need it for setup\n\n2. **WordPress Feature API Plugin**\n   - Install the [WordPress Feature API](https://github.com/Automattic/wp-feature-api) plugin\n   - Activate the plugin in your WordPress admin\n   - This enables semantic operations beyond basic REST API\n\n3. **Appropriate WordPress User Permissions**\n   - The MCP server respects your WordPress user's actual permissions\n   - Contributor personality + Admin account = Admin capabilities\n   - Administrator personality + Contributor account = Contributor capabilities only\n   - **WordPress always has final authority on permissions**\n\n## Quick Start\n\nOnce prerequisites are met:\n\n```bash\n# Clone and install\ngit clone https://github.com/aaronsb/wordpress-mcp\ncd wordpress-mcp\nnpm install\n\n# Run interactive setup\nnpm run setup\n```\n\nThe setup wizard will:\n1. Ask for your WordPress site URL and credentials\n2. Help you choose a default personality (Contributor/Author/Administrator)\n3. Create your `.env` configuration file\n4. Generate ready-to-paste configurations for Claude Desktop and Claude Code\n\n**Important**: The personality you choose determines which tools are available, but your actual WordPress user permissions always take precedence.\n\n## Documentation\n\n- **[Architecture Overview](ARCHITECTURE.md)** - Technical details about the semantic operation engine\n- **[Customization Guide](CUSTOMIZATION.md)** - Create custom personalities and tool mappings\n- **[Page Creation Examples](docs/page-examples.md)** - Complete guide to creating and managing pages\n- **[WordPress MCP Analysis](wordpress-mcp-analysis-report.md)** - Why we built this differently\n- **[Test Documentation](tests/README.md)** - Running and understanding the test suite\n\n## How It Works\n\n1. **Features** are defined as standalone modules in `src/features/`\n2. **Personalities** map to specific sets of features in `config/personalities.json`\n3. **At launch**, specify a personality to expose only its mapped tools\n4. **WordPress** handles all actual permission enforcement\n\n## Installation\n\n```bash\ngit clone https://github.com/aaronsb/wordpress-mcp\ncd wordpress-mcp\nnpm install\n```\n\n## Configuration\n\n### 1. WordPress Setup\n\nThe server looks for credentials in this order:\n1. Environment variables (`WORDPRESS_URL`, `WORDPRESS_USERNAME`, `WORDPRESS_APP_PASSWORD`)\n2. `.env` file in `~/.wordpress-mcp/` (recommended for global use)\n3. `.env` file in the server directory (for development)\n\n#### Option A: Use the Setup Wizard (Recommended)\n\nRun the interactive setup:\n```bash\nnpm run setup\n```\n\nThis will:\n- Ask where to save your credentials (global or local)\n- Collect your WordPress site details\n- Create the `.env` file automatically\n- Show you ready-to-paste configurations\n\n#### Option B: Manual Setup\n\nCreate a `.env` file in `~/.wordpress-mcp/`:\n\n```bash\nmkdir -p ~/.wordpress-mcp\ncat \u003e ~/.wordpress-mcp/.env \u003c\u003c EOF\nWORDPRESS_URL=https://your-site.com\nWORDPRESS_USERNAME=your-username\nWORDPRESS_APP_PASSWORD=your-app-password\nEOF\n```\n\n**Note**: Use Application Passwords for better security. Generate one at:\n`Users \u003e Your Profile \u003e Application Passwords` in your WordPress admin.\n\n### 2. Claude Desktop Setup\n\nFirst, ensure your credentials are configured (run `npm run setup` if needed).\n\nAdd to your Claude Desktop configuration file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"wordpress-author\": {\n      \"command\": \"node\",\n      \"args\": [\n        \"/path/to/wordpress-mcp/src/server.js\",\n        \"--personality=author\"\n      ]\n    }\n  }\n}\n```\n\nThe server will read credentials from its `.env` file.\n\n### 3. Claude Code Setup\n\n#### Option A: Using the CLI (Recommended)\n\nFirst, ensure your `.env` file is configured (run `npm run setup` if needed).\n\nThen, in your project directory, run:\n\n```bash\nclaude mcp add wordpress-author \\\n  node /path/to/wordpress-mcp/src/server.js -- \\\n  --personality=author\n```\n\nThe server will read credentials from the `.env` file in the wordpress-mcp directory.\n\n#### Option B: Manual Configuration\n\nAlternatively, add to your project's `.claude/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"wordpress-author\": {\n      \"command\": \"node\",\n      \"args\": [\n        \"/path/to/wordpress-mcp/src/server.js\",\n        \"--personality=author\"\n      ]\n    }\n  }\n}\n```\n\nNote: The server reads credentials from its `.env` file, not from the Claude configuration.\n\n**Note**: Adjust the personality parameter (`--personality=`) to one of:\n- `contributor` - Limited tools for content creation\n- `author` - Full authoring capabilities (recommended)\n- `administrator` - Complete site management\n\n## Usage\n\nOnce configured, the WordPress tools will be available in Claude. You can:\n\n- Create and edit draft posts and pages\n- Publish articles and pages with scheduling options\n- **Create hierarchical page structures with parent-child relationships**\n- **Search posts using natural language**\n- **Pull posts/pages for editing with document sessions**\n- **Edit content using line-based operations**\n- **Sync changes back in single API call**\n- Manage media files\n- Perform bulk operations (admin only)\n\n### Content Discovery \u0026 Editing Workflows\n\n**Semantic Search Examples:**\n- \"Find my article about potatoes published yesterday\"\n- \"Search for drafts mentioning MCP servers\"\n- \"Show me posts about AI that need editing\"\n- \"Find published articles with comments to review\"\n\n**Natural Language Workflows:**\n- \"Find my article about potatoes and update the cooking section\" \n  → AI uses `find-posts` → suggests `pull-for-editing` → guides you through edits\n- \"Review feedback on my WordPress tutorial\"\n  → AI searches published posts → uses `view-editorial-feedback`\n- \"Edit my latest draft about semantic APIs\"\n  → AI finds recent drafts → pulls for editing → helps with changes\n\n**Page-Specific Workflows:**\n- \"Create an About Us page\"\n  → AI uses `draft-page` or `create-page` with clear semantic context\n- \"Make a Services page under the main Services section\"\n  → AI creates hierarchical page with parent relationship\n- \"Edit the Contact page to add new office hours\"\n  → AI uses `pull-for-editing` with `type: \"page\"`\n\n**Direct ID-Based Operations (when you know the ID):**\n- \"Pull post 42 for editing\"\n- \"Pull page 15 for editing\"\n- \"Publish draft with ID 30\"\n- \"Schedule post 55 for next Monday at 9 AM\"\n\n### Intelligent Search with Intent\n\nThe `find-posts` operation understands what you want to do:\n\n**Intent-based filtering:**\n- `intent: \"edit\"` → Prioritizes drafts you can modify\n- `intent: \"review\"` → Shows pending posts awaiting approval  \n- `intent: \"publish\"` → Finds drafts ready to go live\n- `intent: \"comment\"` → Shows published posts with feedback\n\n**Workflow guidance:**\nEach search result includes:\n- Suggested next actions based on post status\n- Clear instructions for the next step\n- Role-appropriate tool recommendations\n\nExample:\n```\n\"Find posts about baking I can edit\"\n→ Returns drafts with suggested actions: [\"pull-for-editing\", \"submit-for-review\"]\n→ Guidance: \"📝 Use 'pull-for-editing' with a post ID to start editing...\"\n```\n\n### Document Editing Features\n\n**🔄 Transparent Format Conversion:**\n- WordPress HTML → Clean Markdown for AI editing\n- AI edits in Markdown → WordPress receives formatted HTML\n- Preserves **bold**, *italic*, headers, lists, and more\n- No HTML entities or encoding issues\n\n**✏️ Flexible Editing Tools:**\n- `read-document` - View content with line numbers\n- `edit-document-line` - Replace specific lines by number\n- `insert-at-line` - Insert content at precise positions\n- `replace-lines` - Replace multi-line blocks\n- `search-replace` - Context-aware search with line proximity\n- `edit-document` - Traditional string replacement (fallback)\n\n### Example Document Session Workflow\n\n```\n1. Pull for editing: pull-for-editing postId=42\n   → Returns documentHandle=\"wp-session-abc123\" (no filesystem paths!)\n\n2. Read and edit using various methods:\n   → read-document documentHandle=\"wp-session-abc123\"\n   → edit-document-line lineNumber=5 newLine=\"Better content\"\n   → insert-at-line lineNumber=10 content=\"New paragraph\"\n   → search-replace searchTerm=\"old\" replacement=\"new\" nearLine=15\n\n3. Sync back:\n   → sync-to-wordpress documentHandle=\"wp-session-abc123\"\n   → Single WordPress update with all formatting preserved\n```\n\n**Key Benefits:**\n- AI never sees filesystem paths (security + abstraction)\n- Edit in clean Markdown without HTML encoding issues\n- WordPress receives properly formatted HTML automatically\n- Line-based editing avoids string matching failures\n- One pull → multiple edits → one push (API efficiency)\n\n## Personality Mappings\n\nThe tool mappings are defined in `config/personalities.json`:\n\n### Contributor\n\n**Content Creation:**\n- `draft-article` - Create draft posts\n- `draft-page` - Create draft pages for static content\n- `edit-draft` - Edit existing drafts\n- `submit-for-review` - Submit drafts for editorial review\n- `view-editorial-feedback` - See editor comments\n\n**Document Session Workflow:**\n- `pull-for-editing` - Fetch posts/pages into editing sessions\n- `read-document` - Read documents with line numbers\n- `edit-document-line` - Replace specific lines by number\n- `insert-at-line` - Insert content at line positions\n- `replace-lines` - Replace line ranges\n- `search-replace` - Context-aware search and replace\n- `edit-document` - String replacement (fallback)\n- `sync-to-wordpress` - Push all changes back\n- `list-editing-sessions` - View active sessions\n- `close-editing-session` - Manual session cleanup\n\n### Author\n\n- All contributor tools, plus:\n\n**Publishing:**\n- `create-article` - Create and publish posts immediately\n- `create-page` - Create and publish pages with hierarchy\n- `publish-workflow` - Publish or schedule posts\n- `manage-media` - Upload and manage media files\n\n**Content Management:**\n- `trash-own-content` - Move your own posts or pages to trash\n\n### Administrator\n\n- All author tools, plus:\n\n**Site Management:**\n- `bulk-content-operations` - Bulk actions on posts/pages (trash, restore, delete, change status)\n- `manage-all-content` - View and manage all posts\n- `review-content` - Review pending posts and comments\n- `moderate-comments` - Approve, reject, or manage comments\n- `manage-categories` - Create, update, and organize categories\n\n### Editor\n\n- All author tools, plus:\n\n**Editorial Management:**\n- `bulk-content-operations` - Bulk actions on posts/pages (trash, restore, delete, change status)\n- `review-content` - Review pending posts and comments\n- `moderate-comments` - Approve, reject, or manage comments\n- `manage-categories` - Create, update, and organize categories\n\n## Adding Custom Personalities\n\nEdit `config/personalities.json` to create custom role mappings:\n\n```json\n{\n  \"custom-editor\": {\n    \"name\": \"Custom Editor\",\n    \"description\": \"Custom editorial team member\",\n    \"features\": [\"manage-all-content\", \"edit-draft\", \"publish-workflow\", \"bulk-content-operations\"],\n    \"context\": {\n      \"can_publish\": true,\n      \"can_edit_others\": true\n    }\n  }\n}\n```\n\nThen launch with:\n\n```bash\nnpx wordpress-author-mcp --personality=editor\n```\n\n## Customization\n\nSee [CUSTOMIZATION.md](CUSTOMIZATION.md) for detailed instructions on:\n- Creating custom personalities\n- Adding new features\n- Configuring role-based tool mappings\n- Real-world examples (Editor, Reviewer, Social Media Manager)\n\n## Architecture Benefits\n\n1. **No hardcoded roles** - All personality logic lives in configuration\n2. **Easy customization** - Modify JSON to change tool availability\n3. **WordPress authority** - The API enforces actual permissions\n4. **Clean separation** - Features don't know about personalities\n5. **Extensible** - Add features and map them without touching core code\n\n## WordPress Permission Handling\n\nThe MCP server presents tools based on personality, but **WordPress always has final authority**:\n\n- If a contributor tries to publish (via API manipulation), WordPress returns 403\n- If an author tries to edit others' posts, WordPress denies it\n- The MCP server gracefully handles these errors with helpful messages\n\n## Development\n\n```bash\n# Run in development mode with auto-reload\nnpm run dev\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronsb%2Fwordpress-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faaronsb%2Fwordpress-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronsb%2Fwordpress-mcp/lists"}