How wordpress/mcp-adapter works
MCP Adapter exposes WordPress Abilities API functionality to MCP clients as tools, resources, and prompts. Clients connect through HTTP or WP-CLI STDIO; requests are handled by a server and dispatched to the relevant MCP operation, which checks permissions and executes the registered ability or component before returning protocol results. The README also documents multiple servers, custom transports, per-server authentication, and pluggable error handling and observability. The tree and excerpts support these subsystem boundaries; some internal wiring is not shown, so uncertain call edges are omitted.
Main entry points: McpServer.php MCP server · RequestRouter.php Request router · McpComponentRegistry.php Component registry · ToolsHandler.php Tools handler
Components 30
Client transports
- HTTP transport
includes/Transport/HttpTransport.php - HTTP request handler
includes/Transport/Infrastructure/HttpRequestHandler.php - Wire orchestrator
includes/Transport/Infrastructure/McpWireOrchestrator.php - JSON-RPC decoder
includes/Transport/Infrastructure/JsonRpcRequestDecoder.php - Request router
includes/Transport/Infrastructure/RequestRouter.php - Session manager
includes/Transport/Infrastructure/SessionManager.php - STDIO bridge
includes/Cli/StdioServerBridge.php - WP-CLI command
includes/Cli/McpCommand.php
Server core
- Plugin bootstrap
includes/Plugin.php - Default server factory
includes/Servers/DefaultServerFactory.php - MCP server
includes/Core/McpServer.php - Component registry
includes/Core/McpComponentRegistry.php - Transport factory
includes/Core/McpTransportFactory.php
Ability exposure
- Tool component
includes/Domain/Tools/McpTool.php - Resource component
includes/Domain/Resources/McpResource.php - Prompt component
includes/Domain/Prompts/McpPrompt.php - Ability as tool
includes/Domain/Tools/RegisterAbilityAsMcpTool.php - Ability as resource
includes/Domain/Resources/RegisterAbilityAsMcpResource.php - Ability as prompt
includes/Domain/Prompts/RegisterAbilityAsMcpPrompt.php - Ability meta-tools
includes/Abilities/ExecuteAbilityAbility.php
MCP operations
- Tools handler
includes/Handlers/Tools/ToolsHandler.php - Resources handler
includes/Handlers/Resources/ResourcesHandler.php - Prompts handler
includes/Handlers/Prompts/PromptsHandler.php - Initialize handler
includes/Handlers/Initialize/InitializeHandler.php
Runtime support
- WordPress user meta
- Error handling
includes/Infrastructure/ErrorHandling/McpErrorFactory.php - Observability
includes/Infrastructure/Observability/Contracts/McpObservabilityHandlerInterface.php
Other components
- MCP client
- WP-CLI user
- WordPress Abilities API
Connections 39
- MCP client → HTTP transport: sends HTTP
- HTTP transport → HTTP request handler: handles requests
- HTTP request handler → Wire orchestrator: processes wire data
- MCP client → WP-CLI command: connects via STDIO
- WP-CLI user → WP-CLI command: invokes
- WP-CLI command → STDIO bridge: bridges STDIO
- STDIO bridge → MCP server: serves requests
- Wire orchestrator → JSON-RPC decoder: decodes JSON-RPC
- Wire orchestrator → Request router: routes requests
- HTTP request handler → Session manager: validates sessions
- Session manager → WordPress user meta: reads and writes
- Plugin bootstrap → Default server factory: creates default server
- Default server factory → MCP server: builds server
- MCP server → Component registry: registers components
- MCP server → Transport factory: creates transports
- Request router → Tools handler: dispatches tool calls
- Request router → Resources handler: dispatches resource requests
- Request router → Prompts handler: dispatches prompt requests
- Request router → Initialize handler: dispatches initialization
- MCP server → Tools handler: provides server context
- MCP server → Resources handler: provides server context
- MCP server → Prompts handler: provides server context
- MCP server → Initialize handler: provides server context
- Component registry → Tool component: registers tools
- Component registry → Resource component: registers resources
- Component registry → Prompt component: registers prompts
- Ability as tool → WordPress Abilities API: wraps abilities
- Ability as resource → WordPress Abilities API: wraps abilities
- Ability as prompt → WordPress Abilities API: wraps abilities
- Ability as tool → Tool component: registers tool
- Ability as resource → Resource component: registers resource
- Ability as prompt → Prompt component: registers prompt
- Tools handler → Tool component: executes tool
- Resources handler → Resource component: reads resource
- Prompts handler → Prompt component: executes prompt
- Ability meta-tools → WordPress Abilities API: discovers and executes
- Tools handler → Error handling: builds protocol errors
- Resources handler → Error handling: builds protocol errors
- Prompts handler → Error handling: builds protocol errors