Skip to main content
Glama
index.js2.06 kB
const fs = require("fs"); const { exec } = require("child_process"); const tempFile = require("temp-write"); const shell = require("shelljs"); const createTempFile = async (content) => { return await tempFile(content, "temp.m"); }; const hasMATLAB = () => { return !shell.which("matlab"); }; /** * Checks MATLAB version * @returns {number} version */ const getVersion = () => { return new Promise((resolve, reject) => { exec(`matlab -help`, (error, stdout, stderr) => { let version = stdout .trim() .split("\r\n") .reverse()[0] .trim() .match(/Version:(.*),/)[1] .trim() .split("."); version.length -= 1; if (version[0].length === 1) { version[0] = "0" + version[0]; } if (version[1].length === 1) { version[1] = "0" + version[1]; } version = parseFloat(version.join(".")).toFixed(2); if (version < 9.06) { reject("You must have installed MATLAB 2019a or later"); } resolve(version); }); }); }; /** * Runs MATLAB script and gives output * @param {string} input Runnable Script * @returns {string} result */ const run = async (input) => { let temporaryFile; try { if (hasMATLAB()) { return "You must have MATLAB installed"; } let version = await getVersion(); if (version) { fs.existsSync(input) ? (temporaryFile = input) : (temporaryFile = await createTempFile(input)); return new Promise((resolve, reject) => { exec( `matlab -nosplash -batch "run('${temporaryFile}'); exit;"`, (error, stdout, stderr) => { if (error) { reject(stderr.trim()); } resolve( stdout .replace("ans =\r\n\r\n", "") .trim() .replace(/\\n/g, "\n") .trim() ); } ); }); } } catch (error) { return error; } }; module.exports = { run, getVersion, };

Latest Blog Posts

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/WilliamCloudQi/matlab-mcp-server'

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