Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ jobs:
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 }}
file: Dockerfile
push: true
provenance: mode=max
sbom: true
build-args: |
VERSION=${{ steps.set-properties.outputs.VERSION }}
- uses: mongodb-js/devtools-shared/actions/setup-bot-token@main
Expand Down
5 changes: 4 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
FROM node:22-alpine
ARG VERSION=latest
RUN addgroup -S mcp && adduser -S mcp -G mcp
RUN npm install -g mongodb-mcp-server@${VERSION}
USER mcp
WORKDIR /home/mcp
ARG VERSION=latest
ENTRYPOINT ["mongodb-mcp-server"]
LABEL maintainer="MongoDB Inc <[email protected]>"
LABEL description="MongoDB MCP Server"
Expand Down
16 changes: 16 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,22 @@ try {

const transport = createEJsonTransport();

process.on("SIGINT", () => {
logger.info(LogId.serverCloseRequested, "server", `Server close requested`);

server
.close()
.then(() => {
logger.info(LogId.serverClosed, "server", `Server closed successfully`);
process.exit(0);
})
.catch((err: unknown) => {
const error = err instanceof Error ? err : new Error(String(err));
logger.error(LogId.serverCloseFailure, "server", `Error closing server: ${error.message}`);
process.exit(1);
});
});

await server.connect(transport);
} catch (error: unknown) {
logger.emergency(LogId.serverStartFailure, "server", `Fatal error running server: ${error as string}`);
Expand Down
3 changes: 3 additions & 0 deletions src/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ export type LogLevel = LoggingMessageNotification["params"]["level"];
export const LogId = {
serverStartFailure: mongoLogId(1_000_001),
serverInitialized: mongoLogId(1_000_002),
serverCloseRequested: mongoLogId(1_000_003),
serverClosed: mongoLogId(1_000_004),
serverCloseFailure: mongoLogId(1_000_005),

atlasCheckCredentials: mongoLogId(1_001_001),
atlasDeleteDatabaseUserFailure: mongoLogId(1_001_002),
Expand Down
Loading