diff --git a/src/Console/InstallCommand.php b/src/Console/InstallCommand.php index 99c3c4da..4f255438 100644 --- a/src/Console/InstallCommand.php +++ b/src/Console/InstallCommand.php @@ -14,6 +14,7 @@ use Laravel\Boost\Contracts\McpClient; use Laravel\Boost\Install\Cli\DisplayHelper; use Laravel\Boost\Install\CodeEnvironment\CodeEnvironment; +use Laravel\Boost\Install\CodeEnvironment\PhpStorm; use Laravel\Boost\Install\CodeEnvironmentsDetector; use Laravel\Boost\Install\GuidelineComposer; use Laravel\Boost\Install\GuidelineConfig; @@ -592,6 +593,11 @@ protected function installMcpServerConfig(): void ); foreach ($this->selectedTargetMcpClient as $mcpClient) { + if ($mcpClient instanceof PhpStorm) { + $mcpClient->selectedAsAgent = $this->selectedTargetAgents + ->contains(fn ($agent): bool => $agent instanceof PhpStorm); + } + $ideName = $mcpClient->mcpClientName(); $ideDisplay = str_pad((string) $ideName, $longestIdeName); $this->output->write(" {$ideDisplay}... "); diff --git a/src/Install/CodeEnvironment/PhpStorm.php b/src/Install/CodeEnvironment/PhpStorm.php index 39d5f882..0abdd7a0 100644 --- a/src/Install/CodeEnvironment/PhpStorm.php +++ b/src/Install/CodeEnvironment/PhpStorm.php @@ -12,6 +12,8 @@ class PhpStorm extends CodeEnvironment implements Agent, McpClient { public bool $useAbsolutePathForMcp = true; + public bool $selectedAsAgent = false; + public function name(): string { return 'phpstorm'; @@ -60,6 +62,10 @@ public function agentName(): string public function mcpConfigPath(): string { + if (! $this->selectedAsAgent) { + return '.idea/mcp.json'; + } + return '.junie/mcp/mcp.json'; } diff --git a/tests/Unit/Install/CodeEnvironment/PhpStormTest.php b/tests/Unit/Install/CodeEnvironment/PhpStormTest.php index c81caad3..3ab88ce2 100644 --- a/tests/Unit/Install/CodeEnvironment/PhpStormTest.php +++ b/tests/Unit/Install/CodeEnvironment/PhpStormTest.php @@ -37,3 +37,17 @@ expect($phpstorm->guidelinesPath())->toBe('.idea/guidelines.md'); }); + +test('mcpConfigPath returns idea path when not selected as agent', function (): void { + $phpstorm = new PhpStorm($this->strategyFactory); + $phpstorm->selectedAsAgent = false; + + expect($phpstorm->mcpConfigPath())->toBe('.idea/mcp.json'); +}); + +test('mcpConfigPath returns junie path when selected as agent', function (): void { + $phpstorm = new PhpStorm($this->strategyFactory); + $phpstorm->selectedAsAgent = true; + + expect($phpstorm->mcpConfigPath())->toBe('.junie/mcp/mcp.json'); +});