Skip to content

Commit 76cb0d7

Browse files
authored
fix: docker security warnings (#259)
1 parent e4c1ee1 commit 76cb0d7

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

.github/workflows/docker.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ jobs:
3737
tags: ${{ vars.DOCKERHUB_IMAGE_REPOSITORY }}:latest, ${{ vars.DOCKERHUB_IMAGE_REPOSITORY }}:${{ steps.set-properties.outputs.VERSION }}, ${{ vars.DOCKERHUB_IMAGE_REPOSITORY }}:${{ steps.set-properties.outputs.VERSION }}-${{ steps.set-properties.outputs.DATE }}
3838
file: Dockerfile
3939
push: true
40+
provenance: mode=max
41+
sbom: true
4042
build-args: |
4143
VERSION=${{ steps.set-properties.outputs.VERSION }}
4244
- uses: mongodb-js/devtools-shared/actions/setup-bot-token@main

Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
FROM node:22-alpine
22
ARG VERSION=latest
3+
RUN addgroup -S mcp && adduser -S mcp -G mcp
34
RUN npm install -g mongodb-mcp-server@${VERSION}
5+
USER mcp
6+
WORKDIR /home/mcp
47
ENTRYPOINT ["mongodb-mcp-server"]
58
LABEL maintainer="MongoDB Inc <info@mongodb.com>"
69
LABEL description="MongoDB MCP Server"

src/index.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,22 @@ try {
3131

3232
const transport = createEJsonTransport();
3333

34+
process.on("SIGINT", () => {
35+
logger.info(LogId.serverCloseRequested, "server", `Server close requested`);
36+
37+
server
38+
.close()
39+
.then(() => {
40+
logger.info(LogId.serverClosed, "server", `Server closed successfully`);
41+
process.exit(0);
42+
})
43+
.catch((err: unknown) => {
44+
const error = err instanceof Error ? err : new Error(String(err));
45+
logger.error(LogId.serverCloseFailure, "server", `Error closing server: ${error.message}`);
46+
process.exit(1);
47+
});
48+
});
49+
3450
await server.connect(transport);
3551
} catch (error: unknown) {
3652
logger.emergency(LogId.serverStartFailure, "server", `Fatal error running server: ${error as string}`);

src/logger.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ export type LogLevel = LoggingMessageNotification["params"]["level"];
99
export const LogId = {
1010
serverStartFailure: mongoLogId(1_000_001),
1111
serverInitialized: mongoLogId(1_000_002),
12+
serverCloseRequested: mongoLogId(1_000_003),
13+
serverClosed: mongoLogId(1_000_004),
14+
serverCloseFailure: mongoLogId(1_000_005),
1215

1316
atlasCheckCredentials: mongoLogId(1_001_001),
1417
atlasDeleteDatabaseUserFailure: mongoLogId(1_001_002),

0 commit comments

Comments
 (0)