{"id":42742838,"url":"https://github.com/aplaceforallmystuff/mcp-wp-abilities","last_synced_at":"2026-01-29T19:02:38.952Z","repository":{"id":327454013,"uuid":"1109384276","full_name":"aplaceforallmystuff/mcp-wp-abilities","owner":"aplaceforallmystuff","description":"MCP server for WordPress 6.9+ Abilities API - dynamically exposes WordPress abilities as AI-accessible tools","archived":false,"fork":false,"pushed_at":"2026-01-16T13:50:05.000Z","size":741,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-17T04:14:30.787Z","etag":null,"topics":["abilities-api","ai","claude","mcp","model-context-protocol","typescript","wordpress"],"latest_commit_sha":null,"homepage":null,"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/aplaceforallmystuff.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-03T18:19:51.000Z","updated_at":"2026-01-16T13:50:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aplaceforallmystuff/mcp-wp-abilities","commit_stats":null,"previous_names":["aplaceforallmystuff/mcp-wp-abilities"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aplaceforallmystuff/mcp-wp-abilities","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aplaceforallmystuff%2Fmcp-wp-abilities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aplaceforallmystuff%2Fmcp-wp-abilities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aplaceforallmystuff%2Fmcp-wp-abilities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aplaceforallmystuff%2Fmcp-wp-abilities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aplaceforallmystuff","download_url":"https://codeload.github.com/aplaceforallmystuff/mcp-wp-abilities/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aplaceforallmystuff%2Fmcp-wp-abilities/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28882620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T16:41:59.663Z","status":"ssl_error","status_checked_at":"2026-01-29T16:39:39.641Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["abilities-api","ai","claude","mcp","model-context-protocol","typescript","wordpress"],"created_at":"2026-01-29T19:02:35.646Z","updated_at":"2026-01-29T19:02:38.945Z","avatar_url":"https://github.com/aplaceforallmystuff.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mcp-wp-abilities\n\n[![npm version](https://img.shields.io/npm/v/mcp-wp-abilities.svg)](https://www.npmjs.com/package/mcp-wp-abilities)\n[![CI](https://github.com/aplaceforallmystuff/mcp-wp-abilities/actions/workflows/ci.yml/badge.svg)](https://github.com/aplaceforallmystuff/mcp-wp-abilities/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![MCP](https://img.shields.io/badge/MCP-Compatible-blue)](https://modelcontextprotocol.io)\n\nMCP server for the WordPress 6.9+ Abilities API.\n\n![Architecture](docs/images/architecture-diagram.png) Dynamically discovers and exposes WordPress abilities as AI-accessible tools.\n\n## What is this?\n\nWordPress 6.9 introduced the [Abilities API](https://developer.wordpress.org/news/2025/11/introducing-the-wordpress-abilities-api/), a standardized framework for exposing WordPress capabilities through REST endpoints in a machine-readable format. This MCP server connects to any WordPress 6.9+ site and automatically discovers and exposes all registered abilities as MCP tools.\n\n**Key features:**\n\n- **Dynamic discovery** - Tools are discovered at runtime from your WordPress site\n- **Zero configuration** - No hardcoded tools; the server adapts to your site's capabilities\n- **Full schema support** - Input/output validation via JSON Schema\n- **Smart method handling** - Automatically uses GET for readonly abilities, POST for mutations\n- **Plugin extensibility** - Any WordPress plugin that registers abilities becomes available\n\n## Requirements\n\n- Node.js 18+\n- WordPress 6.9+ with Abilities API enabled\n- WordPress Application Password for authentication\n\n## Installation\n\n```bash\nnpm install -g mcp-wp-abilities\n```\n\n## Configuration\n\nThe server requires three environment variables:\n\n| Variable | Description |\n|----------|-------------|\n| `WORDPRESS_URL` | Your WordPress site URL (e.g., `https://example.com`) |\n| `WORDPRESS_USERNAME` | WordPress username |\n| `WORDPRESS_APP_PASSWORD` | Application password (Settings → Security → Application Passwords) |\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"wp-abilities\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-wp-abilities\"],\n      \"env\": {\n        \"WORDPRESS_URL\": \"https://your-site.com\",\n        \"WORDPRESS_USERNAME\": \"your-username\",\n        \"WORDPRESS_APP_PASSWORD\": \"your-app-password\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add wp-abilities \\\n  -e WORDPRESS_URL=\"https://your-site.com\" \\\n  -e WORDPRESS_USERNAME=\"your-username\" \\\n  -e WORDPRESS_APP_PASSWORD=\"your-app-password\" \\\n  -- npx -y mcp-wp-abilities\n```\n\n## Available Tools\n\nTools are dynamically discovered from your WordPress site. Core WordPress 6.9 includes:\n\n| Tool | Description |\n|------|-------------|\n| `wp_core_get_site_info` | Get site name, description, URL, version, language, etc. |\n| `wp_core_get_environment_info` | Get PHP version, database info, environment type |\n\nAdditional abilities registered by plugins will appear automatically.\n\n## How it Works\n\n1. On startup, the server connects to your WordPress Abilities API\n2. It fetches all registered abilities with their schemas\n3. Each ability is converted to an MCP tool with:\n   - Name: `wp_{category}_{ability_name}` (e.g., `wp_core_get_site_info`)\n   - Description: From the ability's label and description\n   - Input schema: Converted from WordPress JSON Schema\n   - Annotations: `readOnlyHint`, `destructiveHint`, `idempotentHint`\n4. When a tool is called, the server executes the corresponding WordPress ability\n\n## Creating WordPress Application Password\n\n1. Log in to your WordPress admin\n2. Go to **Users → Profile** (or the specific user's profile)\n3. Scroll to **Application Passwords**\n4. Enter a name (e.g., \"MCP Server\") and click **Add New Application Password**\n5. Copy the generated password (shown only once)\n\n## Security Notes\n\n- Application passwords grant full API access for that user\n- Use a dedicated user with minimal required capabilities\n- Store credentials securely using environment variables\n- The server only reads abilities and executes them; it doesn't modify WordPress core\n\n## Extending with Custom Abilities\n\nWordPress plugins can register custom abilities that will automatically appear as MCP tools:\n\n```php\nadd_action( 'wp_abilities_api_init', function() {\n    wp_register_ability( 'myplugin/my-ability', [\n        'label'        =\u003e 'My Custom Ability',\n        'description'  =\u003e 'Does something useful',\n        'category'     =\u003e 'myplugin',\n        'input_schema' =\u003e [\n            'type'       =\u003e 'object',\n            'properties' =\u003e [\n                'param' =\u003e [ 'type' =\u003e 'string' ],\n            ],\n        ],\n        'output_schema' =\u003e [\n            'type'       =\u003e 'object',\n            'properties' =\u003e [\n                'result' =\u003e [ 'type' =\u003e 'string' ],\n            ],\n        ],\n        'execute_callback'    =\u003e 'my_ability_handler',\n        'permission_callback' =\u003e fn() =\u003e current_user_can( 'manage_options' ),\n        'meta' =\u003e [\n            'show_in_rest' =\u003e true,\n            'annotations'  =\u003e [\n                'readonly'    =\u003e false,\n                'destructive' =\u003e false,\n                'idempotent'  =\u003e true,\n            ],\n        ],\n    ] );\n} );\n```\n\n## Troubleshooting\n\n**\"Missing required environment variables\"**\n- Ensure all three environment variables are set\n\n**\"Failed to discover abilities: 401\"**\n- Check username and application password are correct\n- Verify the user has API access\n\n**\"Failed to discover abilities: 404\"**\n- Confirm your WordPress version is 6.9+\n- Check that Abilities API is enabled\n\n**No tools appearing**\n- Verify abilities are registered with `show_in_rest: true`\n- Check user has permission to access the abilities\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for release history.\n\n## License\n\nMIT\n\n## Links\n\n- [npm package](https://www.npmjs.com/package/mcp-wp-abilities)\n- [GitHub repository](https://github.com/aplaceforallmystuff/mcp-wp-abilities)\n- [WordPress Abilities API documentation](https://developer.wordpress.org/news/2025/11/introducing-the-wordpress-abilities-api/)\n- [Author: Jim Christian](https://jimchristian.net)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faplaceforallmystuff%2Fmcp-wp-abilities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faplaceforallmystuff%2Fmcp-wp-abilities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faplaceforallmystuff%2Fmcp-wp-abilities/lists"}