Skip to main content
Glama

MCP Agent TypeScript Port

by waldzellai
module-importer.cjs2.57 kB
/** * @fileoverview Universal module importer */ //----------------------------------------------------------------------------- // Imports //----------------------------------------------------------------------------- const { createRequire } = require("module"); const { pathToFileURL } = require("url"); //----------------------------------------------------------------------------- // Helpers //----------------------------------------------------------------------------- const SLASHES = new Set(["/", "\\"]); /** * Normalizes directories to have a trailing slash. * Resolve is pretty finicky -- if the directory name doesn't have * a trailing slash then it tries to look in the parent directory. * i.e., if the directory is "/usr/nzakas/foo" it will start the * search in /usr/nzakas. However, if the directory is "/user/nzakas/foo/", * then it will start the search in /user/nzakas/foo. * @param {string} directory The directory to check. * @returns {string} The normalized directory. */ function normalizeDirectory(directory) { if (!SLASHES.has(directory[directory.length-1])) { return directory + "/"; } return directory; } //----------------------------------------------------------------------------- // Exports //----------------------------------------------------------------------------- /** * Class for importing both CommonJS and ESM modules in Node.js. */ exports.ModuleImporter = class ModuleImporter { /** * Creates a new instance. * @param {string} [cwd] The current working directory to resolve from. */ constructor(cwd = process.cwd()) { /** * The base directory from which paths should be resolved. * @type {string} */ this.cwd = normalizeDirectory(cwd); } /** * Resolves a module based on its name or location. * @param {string} specifier Either an npm package name or * relative file path. * @returns {string|undefined} The location of the import. * @throws {Error} If specifier cannot be located. */ resolve(specifier) { const require = createRequire(this.cwd); return require.resolve(specifier); } /** * Imports a module based on its name or location. * @param {string} specifier Either an npm package name or * relative file path. * @returns {Promise<object>} The module's object. */ import(specifier) { const location = this.resolve(specifier); return import(pathToFileURL(location).href); } }

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/waldzellai/mcp-agent-ts'

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