Initial commit

This commit is contained in:
Felix Zösch
2025-12-11 20:29:51 +01:00
commit 1761c3cdd3
23 changed files with 5987 additions and 0 deletions

53
Dockerfile Normal file
View File

@@ -0,0 +1,53 @@
# Multi-stage build for Home Assistant MCP Server
FROM node:20-alpine AS builder
# Set working directory
WORKDIR /app
# Copy package files
COPY package*.json ./
COPY tsconfig.json ./
# Copy source code (needed before npm ci because prepare script builds)
COPY src ./src
# Install dependencies and build
# The prepare script will automatically run npm run build
RUN npm ci
# Production stage
FROM node:20-alpine
# Set working directory
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install production dependencies only
# Use --ignore-scripts because prepare script requires TypeScript (dev dependency)
# The built code is copied from builder stage, so no need to build again
RUN npm ci --omit=dev --ignore-scripts
# Copy built application from builder stage
COPY --from=builder /app/build ./build
# Create non-root user for security
RUN addgroup -g 1001 -S nodejs && \
adduser -S nodejs -u 1001 && \
chown -R nodejs:nodejs /app
# Switch to non-root user
USER nodejs
# Set environment variables with defaults
ENV NODE_ENV=production
ENV HA_BASE_URL=""
ENV HA_ACCESS_TOKEN=""
# Expose stdio for MCP communication
# Note: MCP servers communicate via stdio, not network ports
# Healthchecks are not applicable for stdio-based servers
# Start the MCP server
CMD ["node", "build/index.js"]