Skip to content

Commit 658a39b

Browse files
SLCORE-1652 allow quick install of MCP Server
1 parent bbdb64e commit 658a39b

File tree

6 files changed

+120
-93
lines changed

6 files changed

+120
-93
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
<properties>
2626
<jdk.min.version>17</jdk.min.version>
27-
<sonarlint.core.version>10.32.0.82302</sonarlint.core.version>
27+
<sonarlint.core.version>10.33.0.82369</sonarlint.core.version>
2828
<slf4j.version>2.0.17</slf4j.version>
2929
<!-- Version used by Xodus -->
3030
<kotlin.version>1.6.10</kotlin.version>

src/main/java/org/sonarsource/sonarlint/ls/SonarLintExtendedLanguageServer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import org.sonarsource.sonarlint.core.rpc.protocol.backend.binding.GetSharedConnectedModeConfigFileParams;
3838
import org.sonarsource.sonarlint.core.rpc.protocol.backend.binding.GetSharedConnectedModeConfigFileResponse;
3939
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetConnectionSuggestionsResponse;
40+
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetMCPServerConfigurationParams;
41+
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetMCPServerConfigurationResponse;
4042
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.HelpGenerateUserTokenResponse;
4143
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.org.OrganizationDto;
4244
import org.sonarsource.sonarlint.core.rpc.protocol.backend.sca.ChangeDependencyRiskStatusParams;
@@ -707,6 +709,9 @@ record AnalyseOpenFileIgnoringExcludesParams(
707709
@JsonRequest("sonarlint/getSharedConnectedModeFileContent")
708710
CompletableFuture<GetSharedConnectedModeConfigFileResponse> getSharedConnectedModeConfigFileContents(GetSharedConnectedModeConfigFileParams params);
709711

712+
@JsonRequest("sonarlint/getMCPServerConfiguration")
713+
CompletableFuture<GetMCPServerConfigurationResponse> getMCPServerConfiguration(GetMCPServerConfigurationParams params);
714+
710715
enum BindingCreationMode {
711716
AUTOMATIC,
712717
IMPORTED,

src/main/java/org/sonarsource/sonarlint/ls/SonarLintLanguageServer.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@
9292
import org.sonarsource.sonarlint.core.rpc.protocol.backend.binding.GetSharedConnectedModeConfigFileParams;
9393
import org.sonarsource.sonarlint.core.rpc.protocol.backend.binding.GetSharedConnectedModeConfigFileResponse;
9494
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetConnectionSuggestionsResponse;
95+
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetMCPServerConfigurationParams;
96+
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetMCPServerConfigurationResponse;
9597
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.HelpGenerateUserTokenResponse;
9698
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.config.SonarCloudConnectionConfigurationDto;
9799
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.config.SonarQubeConnectionConfigurationDto;
@@ -673,6 +675,11 @@ public CompletableFuture<GetSharedConnectedModeConfigFileResponse> getSharedConn
673675
return backendServiceFacade.getBackendService().getSharedConnectedModeConfigFileContents(params);
674676
}
675677

678+
@Override
679+
public CompletableFuture<GetMCPServerConfigurationResponse> getMCPServerConfiguration(GetMCPServerConfigurationParams params) {
680+
return backendServiceFacade.getBackendService().getMCPServerConfiguration(params);
681+
}
682+
676683
@Override
677684
public void onTokenUpdate(OnTokenUpdateNotificationParams onTokenUpdateNotificationParams) {
678685
CompletableFutures.computeAsync(cancelToken -> {

src/main/java/org/sonarsource/sonarlint/ls/backend/BackendService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555
import org.sonarsource.sonarlint.core.rpc.protocol.backend.config.scope.DidAddConfigurationScopesParams;
5656
import org.sonarsource.sonarlint.core.rpc.protocol.backend.config.scope.DidRemoveConfigurationScopeParams;
5757
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetConnectionSuggestionsResponse;
58+
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetMCPServerConfigurationParams;
59+
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetMCPServerConfigurationResponse;
5860
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.HelpGenerateUserTokenParams;
5961
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.auth.HelpGenerateUserTokenResponse;
6062
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.common.TransientSonarCloudConnectionDto;
@@ -259,6 +261,10 @@ public CompletableFuture<GetSharedConnectedModeConfigFileResponse> getSharedConn
259261
return backend.getBindingService().getSharedConnectedModeConfigFileContents(params);
260262
}
261263

264+
public CompletableFuture<GetMCPServerConfigurationResponse> getMCPServerConfiguration(GetMCPServerConfigurationParams params) {
265+
return backend.getConnectionService().getMCPServerConfiguration(params);
266+
}
267+
262268
public void didChangeClientNodeJsPath(DidChangeClientNodeJsPathParams params) {
263269
backend.getAnalysisService().didChangeClientNodeJsPath(params);
264270
}

src/test/java/org/sonarsource/sonarlint/ls/backend/BackendServiceTests.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.sonarsource.sonarlint.core.rpc.protocol.backend.config.ConfigurationRpcService;
4040
import org.sonarsource.sonarlint.core.rpc.protocol.backend.config.binding.DidUpdateBindingParams;
4141
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.ConnectionRpcService;
42+
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.GetMCPServerConfigurationParams;
4243
import org.sonarsource.sonarlint.core.rpc.protocol.backend.connection.org.ListUserOrganizationsParams;
4344
import org.sonarsource.sonarlint.core.rpc.protocol.backend.flightrecorder.FlightRecordingRpcService;
4445
import org.sonarsource.sonarlint.core.rpc.protocol.backend.hotspot.HotspotRpcService;
@@ -253,4 +254,19 @@ void shouldAskBackendToDumpThreads() {
253254

254255
verify(flightRecordingService).captureThreadDump();
255256
}
257+
258+
@Test
259+
void shouldForwardMCPServerConfigurationRequestToBackend() {
260+
var connectionId = "connectionId";
261+
var token = "token";
262+
263+
var argumentCaptor = ArgumentCaptor.forClass(GetMCPServerConfigurationParams.class);
264+
when(backend.getConnectionService()).thenReturn(connectionRpcService);
265+
266+
underTest.getMCPServerConfiguration(new GetMCPServerConfigurationParams(connectionId, token));
267+
268+
verify(connectionRpcService).getMCPServerConfiguration(argumentCaptor.capture());
269+
assertThat(argumentCaptor.getValue().getConnectionId()).isEqualTo(connectionId);
270+
assertThat(argumentCaptor.getValue().getToken()).isEqualTo(token);
271+
}
256272
}

0 commit comments

Comments
 (0)