-
Notifications
You must be signed in to change notification settings - Fork 76
Introduce MCP Server Marketplace based on GitHub. Enhanced Lifecycle Management. #751
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
This significant feature enhancement revamps the MCP server configuration, introducing a "Marketplace" for discovering new servers and comprehensive lifecycle management for "Installed Servers."
**Key Changes:**
* **New "Marketplace" Tab:**
* Lists publicly available MCP server projects hosted on GitHub.
* Uses the public GitHub API to search for Java projects tagged with `mcp-server`.
* Displays repository name, description, star count, and last update date.
* Provides an "Install" button for each marketplace entry.
* Displays a warning popup for repositories with fewer than 100 stars, advising code review.
* **Intelligent Server Installation Workflow:**
* When "Install" is clicked, a background task clones the GitHub repository.
* Automatically detects Maven (`pom.xml`) or Gradle (`build.gradle`) build systems.
* Executes standard build commands (`mvn clean install -DskipTests` for Maven, `gradlew build -x test` for Gradle).
* Scans standard build output directories (`target/`, `build/libs/`) for the largest `.jar` file, assuming it's the runnable fat JAR.
* Copies the built JAR to a dedicated local installation directory (`~/.devoxx-genie/mcp-servers/<repo-name>`).
* Creates and adds a new `MCPServer` configuration to the "Installed Servers" list, pre-configured to run the installed JAR as a `STDIO` process.
* **Enhanced "Installed Servers" Tab (Formerly Default View):**
* Renamed for clarity.
* Added new columns for `STDIO` servers (including newly installed ones):
* **"Status"**: Dynamically shows "Running" or "Stopped".
* **"Actions"**: Provides buttons to `Start`, `Stop`, and `Restart` the MCP server process.
* **"Console"**: Offers a button to open the server's `console.log` file in the IDE for persistent output viewing, or a temporary dialog for in-memory output if a log file is not found.
* `Remove` action now prompts to delete the associated local installation files for marketplace-installed servers.
* **New Service Layer Components:**
* `MCPInstallerService`: Manages GitHub API interaction, Git cloning, build system detection, execution of build commands, and JAR artifact location.
* `MCPProcessManager`: An application service responsible for the actual `Process` lifecycle (starting, stopping, restarting `STDIO` MCP servers), handling process output redirection to dedicated log files, and providing real-time status updates to the UI.
* **Updated Models:**
* `MCPServer`: Augmented with new persistent fields (`installationPathString`, `gitHubUrl`, `repositoryName`) and transient runtime fields (`currentProcess`, `isRunning`, `consoleOutputBuffer`) to track installed servers and their live status.
* `GitHubRepo`: A new model to encapsulate data fetched from the GitHub API for marketplace entries.
* **UI/UX Improvements:**
* Refactored `MCPSettingsComponent` to utilize `JTabbedPane` for tab navigation.
* Introduced custom `TableCellRenderer` and `TableCellEditor` implementations (`ActionButtonRenderer`, `InstallButtonEditor`, `ConsoleButtonRenderer`, `MultiLineTableCellRenderer`, etc.) for rich, interactive table cells.
* Incorporated IntelliJ's `ProgressManager` for background tasks, providing visual feedback during marketplace refresh and installation.
* Improved error handling and user feedback through `Messages.showErrorDialog`.
This update significantly enhances the usability and functionality of managing MCP servers by providing a discovery mechanism and robust runtime control.
|
Thanks for the PR, will have a closer look at it first |
|
I like this idea very much, but I do not know whether this is the right way to go.
Is there similar functionality in other AI coding assistants which we can take as an example? |
|
@mydeveloperplanet thanks for testing, yeah the current PR is bare-bones (feel free to join the fun) and is meant to lay the groundwork for this idea, All your points are valid and they could be implemented like this:
|

fix #732
This is an initial commit outlining my idea, I reviewed the code roughly, a more in-depth review is needed, and I still need to test this by actually running the extension, so that's up next, let me know if you want to take over these steps.
This significant feature enhancement revamps the MCP server configuration, introducing a "Marketplace" for discovering new servers and comprehensive lifecycle management for "Installed Servers."
Key Changes:
New "Marketplace" Tab:
mcp-server.Intelligent Server Installation Workflow:
pom.xml) or Gradle (build.gradle) build systems.mvn clean install -DskipTestsfor Maven,gradlew build -x testfor Gradle).target/,build/libs/) for the largest.jarfile, assuming it's the runnable fat JAR.~/.devoxx-genie/mcp-servers/<repo-name>).MCPServerconfiguration to the "Installed Servers" list, pre-configured to run the installed JAR as aSTDIOprocess.Enhanced "Installed Servers" Tab (Formerly Default View):
STDIOservers (including newly installed ones):Start,Stop, andRestartthe MCP server process.console.logfile in the IDE for persistent output viewing, or a temporary dialog for in-memory output if a log file is not found.Removeaction now prompts to delete the associated local installation files for marketplace-installed servers.New Service Layer Components:
MCPInstallerService: Manages GitHub API interaction, Git cloning, build system detection, execution of build commands, and JAR artifact location.MCPProcessManager: An application service responsible for the actualProcesslifecycle (starting, stopping, restartingSTDIOMCP servers), handling process output redirection to dedicated log files, and providing real-time status updates to the UI.Updated Models:
MCPServer: Augmented with new persistent fields (installationPathString,gitHubUrl,repositoryName) and transient runtime fields (currentProcess,isRunning,consoleOutputBuffer) to track installed servers and their live status.GitHubRepo: A new model to encapsulate data fetched from the GitHub API for marketplace entries.UI/UX Improvements:
MCPSettingsComponentto utilizeJTabbedPanefor tab navigation.TableCellRendererandTableCellEditorimplementations (ActionButtonRenderer,InstallButtonEditor,ConsoleButtonRenderer,MultiLineTableCellRenderer, etc.) for rich, interactive table cells.ProgressManagerfor background tasks, providing visual feedback during marketplace refresh and installation.Messages.showErrorDialog.This update significantly enhances the usability and functionality of managing MCP servers by providing a discovery mechanism and robust runtime control.