Skip to content

Conversation

@AlexanderNZ
Copy link

@AlexanderNZ AlexanderNZ commented Dec 9, 2025

Summary

Adds Docker support and HTTP/SSE transport for containerized deployment of the IcePanel MCP Server, following the pattern established by mcp-atlassian.

Motivation

Benefits:

  • No Node.js installation required on host
  • Can run as a background daemon with HTTP/SSE transport
  • Supports both stdio (default) and HTTP transports

Changes

New Files

Dockerfile

  • Multi-stage build for minimal image size
  • Stage 1: Builds TypeScript with pnpm
  • Stage 2: Production runtime with Node.js 22 Alpine

.dockerignore

  • Excludes node_modules, dist, .env files, and other unnecessary files from build context

src/http-server.ts

  • Express server with SSE transport
  • Endpoints: /sse, /messages, /health
  • Session management for multiple clients

Updated Files

bin/icepanel-mcp-server.js

  • Added --transport flag (stdio | sse)
  • Added --port flag (default: 3000)
  • Support for MCP_TRANSPORT and MCP_PORT environment variables

src/main.ts

  • Support for both stdio and SSE transports

README.md

  • Added Docker build and run instructions
  • Added HTTP/SSE usage documentation

Usage

Stdio Transport (default)

docker run -i --rm \
  -e API_KEY="your-api-key" \
  -e ORGANIZATION_ID="your-org-id" \
  icepanel-mcp-server

HTTP/SSE Transport

docker run -d -p 9846:9846 \
  -e API_KEY="your-api-key" \
  -e ORGANIZATION_ID="your-org-id" \
  icepanel-mcp-server --transport sse --port 9846

Testing

  • Verified Docker image builds successfully
  • Tested stdio transport with all MCP tools ✅
  • Tested HTTP/SSE transport with all MCP tools ✅

Add Dockerfile with multi-stage build:
- Stage 1: Build TypeScript with pnpm
- Stage 2: Minimal production image with Node.js 22 Alpine

Add .dockerignore to exclude unnecessary files from build context.

Update README with Docker build and run instructions, including
MCP client configuration for Docker-based deployment.

Follows the pattern established by mcp-atlassian for Docker support.
@AlexanderNZ AlexanderNZ closed this Dec 9, 2025
@AlexanderNZ AlexanderNZ deleted the feature/docker-support branch December 9, 2025 21:24
@AlexanderNZ AlexanderNZ restored the feature/docker-support branch December 9, 2025 21:29
@AlexanderNZ AlexanderNZ reopened this Dec 9, 2025
Add HTTP server mode using Server-Sent Events (SSE) transport,
following conventions from mcp-atlassian.

Changes:
- Add express and cors dependencies
- Create src/http-server.ts with Express + SSEServerTransport
- Update CLI to support --transport and --port flags
- Update main.ts to support both stdio and sse transports
- Update Dockerfile with EXPOSE and new env var documentation
- Update README with HTTP/SSE usage instructions

Usage:
  # Stdio (default)
  node bin/icepanel-mcp-server.js

  # HTTP/SSE
  node bin/icepanel-mcp-server.js --transport sse --port 9846

  # Docker with SSE
  docker run -d -p 9846:9846 ... icepanel-mcp-server --transport sse --port 9846
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant