Skip to content

Commit 74024b5

Browse files
committed
add preference to allow users to set a specific port for the embedded mcp server
1 parent d0892b2 commit 74024b5

File tree

7 files changed

+27
-12
lines changed

7 files changed

+27
-12
lines changed

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class Constants {
6060

6161
public static final String PREF_CODELENS_WEB_CONFIGS_ON_CONTROLLER_CLASSES = "boot-java.java.codelens-web-configs-on-controller-classes";
6262

63-
public static final String PREF_AI_ENABLE_MCP = "boot-java.ai.mcp-server-enabled";
63+
public static final String PREF_AI_MCP_ENABLED = "boot-java.ai.mcp-server-enabled";
64+
public static final String PREF_AI_MCP_PORT = "boot-java.ai.mcp-server-port";
6465

6566
}

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,8 @@ private void sendConfiguration() {
270270
);
271271

272272
bootJavaObj.put("ai", Map.of(
273-
"mcp-server-enabled", preferenceStore.getBoolean(Constants.PREF_AI_ENABLE_MCP)
273+
"mcp-server-enabled", preferenceStore.getBoolean(Constants.PREF_AI_MCP_ENABLED),
274+
"mcp-server-port", preferenceStore.getBoolean(Constants.PREF_AI_MCP_PORT)
274275
)
275276
);
276277

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/SpringBootLanguageServer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,15 @@ private List<String> getJVMArgs() {
4747
args.add("-Dspring.config.location=classpath:/application.properties");
4848

4949
// disable embedded MCP server, depending on preference
50-
if (BootLanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(Constants.PREF_AI_ENABLE_MCP) == false) {
50+
if (BootLanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(Constants.PREF_AI_MCP_ENABLED) == false) {
5151
args.add("-Dspring.main.web-application-type=NONE");
5252
}
5353

54+
int mcpServerPort = BootLanguageServerPlugin.getDefault().getPreferenceStore().getInt(Constants.PREF_AI_MCP_PORT);
55+
if (mcpServerPort >= 0 && mcpServerPort < 65536) {
56+
args.add("-Dserver.port=" + mcpServerPort);
57+
}
58+
5459
addCustomJVMArgs(args);
5560

5661
return args;

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/prefs/AiConfigPreferencePage.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import org.eclipse.jface.preference.BooleanFieldEditor;
1414
import org.eclipse.jface.preference.FieldEditorPreferencePage;
15+
import org.eclipse.jface.preference.StringFieldEditor;
1516
import org.eclipse.swt.widgets.Composite;
1617
import org.eclipse.ui.IWorkbench;
1718
import org.eclipse.ui.IWorkbenchPreferencePage;
@@ -24,10 +25,6 @@ public AiConfigPreferencePage() {
2425
super(GRID);
2526
}
2627

27-
@Override
28-
protected void adjustGridLayout() {
29-
}
30-
3128
@Override
3229
public void init(IWorkbench workbench) {
3330
setPreferenceStore(BootLanguageServerPlugin.getDefault().getPreferenceStore());
@@ -36,8 +33,8 @@ public void init(IWorkbench workbench) {
3633
@Override
3734
protected void createFieldEditors() {
3835
Composite fieldEditorParent = getFieldEditorParent();
39-
addField(new BooleanFieldEditor(Constants.PREF_AI_ENABLE_MCP, "Enable embedded MCP server", fieldEditorParent));
36+
addField(new BooleanFieldEditor(Constants.PREF_AI_MCP_ENABLED, "Enable embedded MCP server", fieldEditorParent));
37+
addField(new StringFieldEditor(Constants.PREF_AI_MCP_PORT, "Port used by the embedded MCP server", fieldEditorParent));
4038
}
4139

42-
4340
}

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/prefs/PrefsInitializer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ public void initializeDefaultPreferences() {
6969
preferenceStore.setDefault(Constants.PREF_CODELENS_QUERY_METHODS, true);
7070
preferenceStore.setDefault(Constants.PREF_CODELENS_WEB_CONFIGS_ON_CONTROLLER_CLASSES, true);
7171

72-
preferenceStore.setDefault(Constants.PREF_AI_ENABLE_MCP, true);
72+
preferenceStore.setDefault(Constants.PREF_AI_MCP_ENABLED, true);
73+
preferenceStore.setDefault(Constants.PREF_AI_MCP_PORT, 0);
7374
}
7475

7576
}

vscode-extensions/vscode-spring-boot/lib/Main.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,16 @@ export function activate(context: ExtensionContext): Thenable<ExtensionAPI> {
4848

4949
const specificVmArgs = ["-Dspring.config.location=classpath:/application.properties"];
5050

51-
const workspaceConfig = workspace.getConfiguration("boot-java.ai");
52-
if (workspaceConfig.get("mcp-server-enabled") === false) {
51+
const aiPreferencesConfig = workspace.getConfiguration("boot-java.ai");
52+
if (aiPreferencesConfig.get("mcp-server-enabled") === false) {
5353
specificVmArgs.push("-Dspring.main.web-application-type=NONE");
5454
}
5555

56+
var mcpServerPort = aiPreferencesConfig.get<number>("mcp-server-port", 0);
57+
if (mcpServerPort >= 0 && mcpServerPort <= 655536) {
58+
specificVmArgs.push("-Dserver.port=" + mcpServerPort);
59+
}
60+
5661
let options : commons.ActivatorOptions = {
5762
DEBUG: false,
5863
CONNECT_TO_LS: false,

vscode-extensions/vscode-spring-boot/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,11 @@
586586
"type": "boolean",
587587
"default": true,
588588
"description": "Enable embedded MCP server"
589+
},
590+
"boot-java.ai.mcp-server-port": {
591+
"type": "integer",
592+
"default": 0,
593+
"description": "Port used by the embedded MCP serverr"
589594
}
590595
}
591596
},

0 commit comments

Comments
 (0)