Skip to main content
Glama

Medusa MCP Server

by SGFGOV
patch.js2.6 kB
#!/usr/bin/env node /** * This script fixes the MCP SDK issue with pkce-challenge ES Module * It replaces the static require with a dynamic import in the auth.js file */ const fs = require("fs"); const path = require("path"); // Path to the file that needs patching const authFilePath = path.resolve( __dirname, "node_modules", "@modelcontextprotocol", "sdk", "dist", "cjs", "client", "auth.js" ); console.log("Checking if MCP SDK patch is needed..."); // Check if the file exists if (!fs.existsSync(authFilePath)) { console.error(`Error: File not found at ${authFilePath}`); console.log( "Make sure you have installed @modelcontextprotocol/sdk package" ); process.exit(1); } // Read the file content const fileContent = fs.readFileSync(authFilePath, "utf8"); // Check if the file already contains our patch if (fileContent.includes("loadPkceChallenge")) { console.log("MCP SDK is already patched!"); process.exit(0); } // Check if the file contains the problematic require if (!fileContent.includes('require("pkce-challenge")')) { console.log( "The MCP SDK file does not contain the expected require statement." ); console.log("This patch may not be needed or the SDK has been updated."); process.exit(0); } console.log("Applying patch to MCP SDK..."); // The code to replace the problematic require const requireLine = 'const pkce_challenge_1 = __importDefault(require("pkce-challenge"));'; const replacementCode = `let pkce_challenge_1 = { default: null }; async function loadPkceChallenge() { if (!pkce_challenge_1.default) { const mod = await import("pkce-challenge"); pkce_challenge_1.default = mod.default; } }`; // Replace the require line let patchedContent = fileContent.replace(requireLine, replacementCode); // Replace the function call to add the loading step const challengeCall = "const challenge = await (0, pkce_challenge_1.default)();"; const replacementCall = "await loadPkceChallenge();\n const challenge = await pkce_challenge_1.default();"; patchedContent = patchedContent.replace(challengeCall, replacementCall); // Write the patched content back to the file fs.writeFileSync(authFilePath, patchedContent, "utf8"); console.log("✅ MCP SDK patched successfully!"); console.log("The patch changes:"); console.log( "1. Replaced static require with dynamic import for pkce-challenge" ); console.log("2. Added async loading function to handle the import"); console.log( "\nYou should now be able to run the application without ESM errors." );

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/SGFGOV/medusa-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server