feat: Standalone CLI mit Installer und CI Release Pipeline #6

Merged
fred merged 14 commits from feature/standalone-cli into main 2026-02-27 16:22:07 +00:00
Collaborator

Summary

  • JDT MCP Server als eigenständige CLI-Anwendung ohne Eclipse IDE nutzbar (stdio-Transport)
  • Headless Eclipse Application mit automatischem Java-Projekt-Import
  • Eclipse Product Build für Linux, macOS und Windows
  • Ein-Befehl-Installer (curl ... | bash) der alles automatisch einrichtet
  • CI erstellt Forgejo Releases mit Platform-Archiven bei Git Tags

Commits

  • af941ed refactor: Eclipse UI-Dependencies entfernt
  • 7018a74 feat: Headless Application für Standalone-Betrieb
  • ddd08ae feat: stdio MCP Transport für Claude Code
  • 3cd8b42 feat: Eclipse Product Build für Distribution
  • 9f24d30 fix: Launcher-Script in Archives, MCP Notifications ignorieren
  • 38c8f0c docs: README für Standalone CLI
  • f02f1fb feat: Install-Script und CI Release Pipeline

Test plan

  • mvn clean package baut erfolgreich
  • Archiv entpacken und bin/jdtls-mcp starten
  • Claude Code Integration testen (stdio)
  • HTTP-Modus testen (--http)
  • Forgejo Secret forgejo_token in Woodpecker anlegen
  • Nach Merge: Tag setzen und Release-Pipeline prüfen
## Summary - JDT MCP Server als eigenständige CLI-Anwendung ohne Eclipse IDE nutzbar (stdio-Transport) - Headless Eclipse Application mit automatischem Java-Projekt-Import - Eclipse Product Build für Linux, macOS und Windows - **Ein-Befehl-Installer** (`curl ... | bash`) der alles automatisch einrichtet - CI erstellt Forgejo Releases mit Platform-Archiven bei Git Tags ## Commits - `af941ed` refactor: Eclipse UI-Dependencies entfernt - `7018a74` feat: Headless Application für Standalone-Betrieb - `ddd08ae` feat: stdio MCP Transport für Claude Code - `3cd8b42` feat: Eclipse Product Build für Distribution - `9f24d30` fix: Launcher-Script in Archives, MCP Notifications ignorieren - `38c8f0c` docs: README für Standalone CLI - `f02f1fb` feat: Install-Script und CI Release Pipeline ## Test plan - [ ] `mvn clean package` baut erfolgreich - [ ] Archiv entpacken und `bin/jdtls-mcp` starten - [ ] Claude Code Integration testen (stdio) - [ ] HTTP-Modus testen (`--http`) - [ ] Forgejo Secret `forgejo_token` in Woodpecker anlegen - [ ] Nach Merge: Tag setzen und Release-Pipeline prüfen
Phase 1 of standalone CLI migration:
- Activator: AbstractUIPlugin → BundleActivator
- McpServerManager: IPreferenceStore → System Properties (jdtmcp.port.start/end)
- Delete EarlyStartup, McpPreferencePage, McpPreferenceInitializer, McpPreferenceConstants
- MANIFEST.MF: remove org.eclipse.ui, org.eclipse.jface, org.eclipse.jdt.ui
- plugin.xml: remove all UI extensions (startup, preferencePages, preferences)
- CodeQualityTools: remove jdt_quick_fix tool (requires jdt.ui + SWT Display)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 2 of standalone CLI migration:
- HeadlessApplication (IApplication): imports project from cwd, blocks until shutdown
- ProjectImporter: auto-import for Eclipse (.project), Maven (pom.xml),
  multi-module, and basic Java projects with dependency resolution
- plugin.xml: register application extension (id=headless)

Application ID: org.naturzukunft.jdt.mcp.headless

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 3 of standalone CLI migration:
- McpStdioServer: stdin/stdout transport (NDJSON), progress notifications
- McpServerManager: transport selection via jdtmcp.transport property (default: stdio)
- Activator: skip auto-start in headless mode (jdtmcp.headless=true)
- HeadlessApplication: start server after project import, await stdio shutdown
- Replace ALL System.out with System.err/McpLogger (stdout reserved for MCP protocol)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds product module (org.naturzukunft.jdt.mcp.product) with Tycho-based
build that produces platform-specific archives (tar.gz/zip) for Linux,
macOS, and Windows. Includes launcher script and proper OSGi bundle
start level configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Configure antrun plugin to copy bin/jdtls-mcp into product before
  archiving (Linux + macOS)
- Handle MCP notifications (notifications/*) gracefully instead of
  returning "Method not found" error

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add standalone CLI as primary usage mode with build/install/config instructions
- Update Claude Code config example to stdio transport
- Remove jdt_quick_fix from tool list (removed in standalone mode)
- Update tool count to 47
- Fix repository URL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
One-command installer that auto-detects OS/arch, downloads the right
archive from Forgejo releases, and configures Claude Code automatically.
CI now creates Forgejo releases with platform archives on git tags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Migrate from Woodpecker CI (.woodpecker.yml) to Forgejo Actions
(.forgejo/workflows/) to match the existing CI infrastructure.
Build on push to main, create releases with platform archives on tags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Avoid dependency on platform project's internal CI infrastructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ci: run build on feature branches too
Some checks failed
Build and Release / build (push) Failing after 13s
Build and Release / release (push) Has been skipped
0f04edcb74
Allows testing the CI pipeline before merging to main.
Release job still only triggers on tags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ci: add own Maven+Node CI image for Forgejo Actions
Some checks failed
Build and Release / build (push) Failing after 0s
Build CI Maven image / build (push) Successful in 49s
Build and Release / release (push) Has been skipped
14af118caa
Own image (registry.cg.internal/ci/jdt-mcp-maven) based on
maven:3.9-eclipse-temurin-17 with Node.js for Forgejo Actions.
Avoids dependency on platform project's internal CI infrastructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
test: add smoke tests for standalone MCP server
Some checks failed
Build and Release / build (push) Failing after 42s
Build and Release / release (push) Has been skipped
244d26805f
Shell-based end-to-end tests that start the real binary, send
JSON-RPC messages via stdio, and validate responses. Covers
initialize, ping, tools/list, error cases, notifications, and
tool calls. CI runs them automatically after build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: upgrade CI image from Java 17 to 21
Some checks failed
Build and Release / build (push) Has been cancelled
Build and Release / release (push) Has been cancelled
Build CI Maven image / build (push) Successful in 1m4s
aee0bf53cb
Eclipse 2025-12 requires JavaSE-21 (org.eclipse.jdt.core.manipulation).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: update README and fix install scripts
Some checks failed
Build and Release / release (push) Has been cancelled
Build and Release / build (push) Has been cancelled
Build CI Maven image / build (push) Successful in 7s
df5342bb34
- README: reflect current 44 tools, standalone CLI as primary mode,
  remove outdated Eclipse plugin section and codeberg P2 URL,
  update Java requirement to 21+
- install.sh/install-local.sh: remove broken --strip-components=1
  (archive has no top-level dir), always replace existing jdt-mcp
  config instead of skipping, suppress LIBARCHIVE tar warnings
- install-local.sh: new script that builds and installs locally

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fred merged commit c1a8603634 into main 2026-02-27 16:22:07 +00:00
Sign in to join this conversation.
No description provided.