FROM node:20-alpine AS builder
WORKDIR /app
# Copy package files
COPY package*.json ./
COPY yarn.lock ./
# Install all dependencies (including devDependencies for build)
RUN yarn install --frozen-lockfile
# Copy configuration files
COPY vite.config.ts ./
COPY tsconfig.json ./
# Copy source code
COPY src ./src
# Build the application
RUN yarn build
# Production stage
FROM node:20-alpine AS production
WORKDIR /app
# Copy package files
COPY package*.json ./
COPY yarn.lock ./
# Install only production dependencies
RUN yarn install --frozen-lockfile --production && yarn cache clean
# Copy built application from builder stage
COPY --from=builder /app/dist ./dist
# Create a non-root user for security
RUN addgroup -g 1001 -S nodejs && \
adduser -S nextjs -u 1001
# Change ownership of the app directory
RUN chown -R nextjs:nodejs /app
USER nextjs
# Expose the port
EXPOSE 3000
# Set environment to production
ENV NODE_ENV=production
# Start the application
CMD ["node", "dist/index.js"]
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nfishel48/conduit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server