From 03f65bf90b4438cf543da9536c6eac68f9da1a64 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 11 Sep 2025 15:34:19 +0300 Subject: [PATCH 1/3] try to adapt to the new smithery behavior --- .smithery/Dockerfile | 9 +++++++-- package-lock.json | 12 ++++++++++++ package.json | 2 ++ src/transports/streamableHttp.ts | 9 +++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/.smithery/Dockerfile b/.smithery/Dockerfile index a2f4aed9c..7442592f8 100644 --- a/.smithery/Dockerfile +++ b/.smithery/Dockerfile @@ -28,7 +28,12 @@ COPY ../package.json ../package-lock.json ./ # Install only production dependencies RUN npm ci --production --ignore-scripts -# Expose no ports (stdio only) +# Smithery sets the PORT env variable to some value - typically 8081. We map it to +# MDB_MCP_HTTP_PORT used by the MCP server. +ENV PORT=8081 +ENV MDB_MCP_HTTP_PORT=${PORT} + +EXPOSE ${PORT} # Default command -CMD ["node", "dist/esm/index.js"] +CMD ["node", "dist/esm/index.js", "--transport", "http"] diff --git a/package-lock.json b/package-lock.json index 089fd9998..a9c77549b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@mongosh/service-provider-node-driver": "~3.12.0", "@vitest/eslint-plugin": "^1.3.4", "bson": "^6.10.4", + "cors": "^2.8.5", "express": "^5.1.0", "lru-cache": "^11.1.0", "mongodb": "^6.19.0", @@ -43,6 +44,7 @@ "@modelcontextprotocol/inspector": "^0.16.5", "@mongodb-js/oidc-mock-provider": "^0.11.3", "@redocly/cli": "^2.0.8", + "@types/cors": "^2.8.19", "@types/express": "^5.0.3", "@types/http-proxy": "^1.17.16", "@types/node": "^24.3.0", @@ -5339,6 +5341,16 @@ "@types/node": "*" } }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/deep-eql": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", diff --git a/package.json b/package.json index db065bb1e..a6b6e0332 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "@modelcontextprotocol/inspector": "^0.16.5", "@mongodb-js/oidc-mock-provider": "^0.11.3", "@redocly/cli": "^2.0.8", + "@types/cors": "^2.8.19", "@types/express": "^5.0.3", "@types/http-proxy": "^1.17.16", "@types/node": "^24.3.0", @@ -103,6 +104,7 @@ "@mongosh/service-provider-node-driver": "~3.12.0", "@vitest/eslint-plugin": "^1.3.4", "bson": "^6.10.4", + "cors": "^2.8.5", "express": "^5.1.0", "lru-cache": "^11.1.0", "mongodb": "^6.19.0", diff --git a/src/transports/streamableHttp.ts b/src/transports/streamableHttp.ts index 0a20e59e8..dbd4cb87f 100644 --- a/src/transports/streamableHttp.ts +++ b/src/transports/streamableHttp.ts @@ -6,6 +6,7 @@ import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js"; import { LogId } from "../common/logger.js"; import { SessionStore } from "../common/sessionStore.js"; import { TransportRunnerBase, type TransportRunnerConfig } from "./base.js"; +import cors from "cors"; const JSON_RPC_ERROR_CODE_PROCESSING_REQUEST_FAILED = -32000; const JSON_RPC_ERROR_CODE_SESSION_ID_REQUIRED = -32001; @@ -43,6 +44,14 @@ export class StreamableHttpRunner extends TransportRunnerBase { app.enable("trust proxy"); // needed for reverse proxy support app.use(express.json()); + app.use( + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + cors({ + origin: "*", + exposedHeaders: ["mcp-Session-Id", "mcp-protocol-version"], + allowedHeaders: ["Content-Type", "mcp-session-id"], + }) + ); app.use((req, res, next) => { for (const [key, value] of Object.entries(this.userConfig.httpHeaders)) { const header = req.headers[key.toLowerCase()]; From 1dd6e0c806a286ece62ce69dd38b5e3e0ea4fac6 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 11 Sep 2025 15:37:12 +0300 Subject: [PATCH 2/3] copy tsconfig jsons --- .smithery/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.smithery/Dockerfile b/.smithery/Dockerfile index 7442592f8..fdf524c48 100644 --- a/.smithery/Dockerfile +++ b/.smithery/Dockerfile @@ -8,7 +8,7 @@ USER mcpuser WORKDIR /app # Copy package and configuration -COPY ../package.json ../package-lock.json ../tsconfig.json ../tsconfig.build.json ./ +COPY ../package.json ../package-lock.json ../tsconfig.*.json ./ # Copy source code COPY ../src ./src From e00f3dea9eda9df8766efd99816636e6f5f52673 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 11 Sep 2025 15:44:10 +0300 Subject: [PATCH 3/3] Copy over the scripts --- .smithery/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.smithery/Dockerfile b/.smithery/Dockerfile index fdf524c48..649afca21 100644 --- a/.smithery/Dockerfile +++ b/.smithery/Dockerfile @@ -13,6 +13,8 @@ COPY ../package.json ../package-lock.json ../tsconfig.*.json ./ # Copy source code COPY ../src ./src +COPY ../scripts ./scripts + # Install dependencies and build RUN npm ci && npm run build