From df9f27807012bf9f6b364dd2919359958c8e4453 Mon Sep 17 00:00:00 2001 From: Bruno Clermont Date: Thu, 13 Nov 2025 18:22:12 -0500 Subject: [PATCH 1/3] add support for http --- main.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main.go b/main.go index b51429c..c82c177 100644 --- a/main.go +++ b/main.go @@ -27,6 +27,8 @@ type config struct { lspCommand string openGlobs StringArrayFlag lspArgs []string + httpMode bool + httpPort string } type mcpServer struct { @@ -57,6 +59,8 @@ func parseConfig() (*config, error) { flag.StringVar(&cfg.workspaceDir, "workspace", "", "Path to workspace directory") flag.StringVar(&cfg.lspCommand, "lsp", "", "LSP command to run (args should be passed after --)") flag.Var(&cfg.openGlobs, "open", "Glob of files to open by default (can specify more than once)") + flag.BoolVar(&cfg.httpMode, "http", false, "Enable HTTP server mode instead of stdio") + flag.StringVar(&cfg.httpPort, "port", "80", "HTTP port to listen on (only used with -http)") flag.Parse() // Get remaining args after -- as LSP arguments @@ -172,6 +176,12 @@ func (s *mcpServer) start() error { return fmt.Errorf("tool registration failed: %v", err) } + if s.config.httpMode { + coreLogger.Info("Starting HTTP server on port %s", s.config.httpPort) + httpServer := server.NewStreamableHTTPServer(s.mcpServer) + return httpServer.Start(":" + s.config.httpPort) + } + return server.ServeStdio(s.mcpServer) } From 582ede3dffe348c34fc26d8e8bfe72b04fc07ce5 Mon Sep 17 00:00:00 2001 From: Bruno Clermont Date: Fri, 14 Nov 2025 20:48:02 -0500 Subject: [PATCH 2/3] Add Dockerfile for mcp-language-server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Multi-stage build with golang:1.24.2-alpine3.21 - Binary compression with UPX 5.0.0 - Final image based on alpine:3.21.3 - Pinned versions per docker-constitution 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- Dockerfile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5e8c404 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +# syntax=docker/dockerfile:1 + +FROM golang:1.24.2-alpine3.21 AS builder +WORKDIR /workdir +COPY . . +RUN --mount=type=cache,target=/go/pkg/mod \ + go build -v -o mcp-language-server . + +FROM transformia/upx:5.0.0 AS compressor +COPY --from=builder /workdir/mcp-language-server /mcp-language-server +RUN upx -9 -o /mcp-language-server.compressed /mcp-language-server + +FROM alpine:3.21.3 +COPY --from=compressor /mcp-language-server.compressed /usr/local/bin/mcp-language-server +ENTRYPOINT ["/usr/local/bin/mcp-language-server"] From d70dc98be1d50b190fec818256306f64dd13befc Mon Sep 17 00:00:00 2001 From: Bruno Clermont Date: Sat, 15 Nov 2025 02:17:07 +0000 Subject: [PATCH 3/3] Update base images to latest stable versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - golang:1.24.2-alpine3.21 → golang:1.25.4-alpine3.22 - transformia/upx:5.0.0 → transformia/upx:5.0.2 - alpine:3.21.3 → alpine:3.22.2 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5e8c404..d33e5d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,15 @@ # syntax=docker/dockerfile:1 -FROM golang:1.24.2-alpine3.21 AS builder +FROM golang:1.25.4-alpine3.22 AS builder WORKDIR /workdir COPY . . RUN --mount=type=cache,target=/go/pkg/mod \ go build -v -o mcp-language-server . -FROM transformia/upx:5.0.0 AS compressor +FROM transformia/upx:5.0.2 AS compressor COPY --from=builder /workdir/mcp-language-server /mcp-language-server RUN upx -9 -o /mcp-language-server.compressed /mcp-language-server -FROM alpine:3.21.3 +FROM alpine:3.22.2 COPY --from=compressor /mcp-language-server.compressed /usr/local/bin/mcp-language-server ENTRYPOINT ["/usr/local/bin/mcp-language-server"]