22
33namespace WP_CLI \AiCommand ;
44
5+ use WP_CLI \AiCommand \ToolRepository \CollectionToolRepository ;
56use WP_CLI \AiCommand \Tools \FileTools ;
67use WP_CLI \AiCommand \Tools \URLTools ;
78use WP_CLI ;
2324 */
2425class AiCommand extends WP_CLI_Command {
2526
27+ public function __construct (
28+ private CollectionToolRepository $ tools ,
29+ private WP_CLI \AiCommand \MCP \Server $ server ,
30+ private WP_CLI \AiCommand \MCP \Client $ client
31+ ) {
32+ parent ::__construct ();
33+ }
34+
2635 /**
2736 * Greets the world.
2837 *
@@ -47,20 +56,25 @@ class AiCommand extends WP_CLI_Command {
4756 * @param array $assoc_args Associative array of associative arguments.
4857 */
4958 public function __invoke ( $ args , $ assoc_args ) {
50- $ server = new MCP \Server ();
51- $ client = new MCP \Client ($ server );
52-
53- $ this ->register_tools ($ server , $ client );
59+ $ this ->register_tools ($ this ->server );
60+ $ this ->register_resources ($ this ->server );
5461
55- $ this ->register_resources ($ server );
56-
57- $ result = $ client ->call_ai_service_with_prompt ( $ args [0 ] );
62+ $ result = $ this ->client ->call_ai_service_with_prompt ( $ args [0 ] );
5863
5964 WP_CLI ::success ( $ result );
6065 }
6166
6267 // Register tools for AI processing
63- private function register_tools ($ server , $ client ) {
68+ private function register_tools ($ server ) : void {
69+ $ filters = apply_filters ( 'wp_cli/ai_command/command/filters ' , [] );
70+
71+ foreach ( $ this ->tools ->find_all ( $ filters ) as $ tool ) {
72+ $ server ->register_tool ( $ tool ->get_data () );
73+ }
74+
75+ return ;
76+
77+ // TODO move this
6478 $ server ->register_tool (
6579 [
6680 'name ' => 'list_tools ' ,
@@ -89,8 +103,10 @@ private function register_tools($server, $client) {
89103 ]
90104 );
91105
92- $ map_rest_to_mcp = new MapRESTtoMCP ();
93- $ map_rest_to_mcp ->map_rest_to_mcp ( $ server );
106+
107+
108+ new FileTools ( $ server );
109+ new URLTools ( $ server );
94110
95111 $ server ->register_tool (
96112 [
0 commit comments