Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
46 lines (37 loc) · 1.62 KB
/
Copy pathDockerfile
File metadata and controls
46 lines (37 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile
# syntax=docker/dockerfile:1
# Build stage
# The build reads skills/ from the repo root, so the layout here mirrors the
# repo rather than flattening mcp-server/ into the workdir.
FROM node:24-alpine AS build
WORKDIR /repo/mcp-server
# Install dependencies
COPY mcp-server/package.json mcp-server/package-lock.json ./
# prepare runs `git config` for local hooks; skip in image (no git in alpine).
RUN npm ci --production=false --ignore-scripts
# Copy source code
COPY mcp-server/tsconfig.json mcp-server/tsdown.config.ts ./
COPY mcp-server/assets ./assets
COPY mcp-server/scripts ./scripts
COPY mcp-server/src ./src
COPY skills /repo/skills
# Build the project
RUN npm run build
# Runtime stage
FROM node:20-alpine AS runtime
WORKDIR /app
# Copy build artifacts and dependencies
COPY --from=build /repo/mcp-server/dist ./dist
COPY --from=build /repo/mcp-server/assets ./assets
COPY --from=build /repo/mcp-server/package.json ./package.json
COPY --from=build /repo/mcp-server/node_modules ./node_modules
# Default API URL environment variable (must include the /v1 path segment)
ENV CURRENTS_API_URL=https://api.currents.dev/v1
# Port the Streamable HTTP server listens on (TLS terminates at the proxy in front).
ENV PORT=3000
EXPOSE 3000
# This image serves the hosted remote MCP endpoint (Streamable HTTP) at /mcp.
# No API key is baked in: callers pass their Currents API key as a Bearer token
# per request. The stdio transport remains available via the npm package bin
# (node dist/index.mjs) for local Claude Desktop usage.
ENTRYPOINT ["node", "dist/http.mjs"]