UNPKG

@onecompiler/onecompiler-mcp-server

Version:
62 lines (61 loc) 2.06 kB
import { Provider } from "./types.js"; import axios from "axios"; export const codeExec = async (params, apiKey, baseUrl, provider) => { const { language, stdin, files } = params; // console.log(`codeExec tool called with language: ${language}. stdin: ${stdin}. files: ${files}`); if (!apiKey) { throw new Error("API key and base URL are required"); } const headers = { "Content-Type": "application/json", }; if (provider === Provider.rapidapi) { headers["x-rapidapi-key"] = apiKey; headers["x-rapidapi-host"] = "onecompiler-apis.p.rapidapi.com"; } else { headers["X-OneCompiler-Key"] = apiKey; } try { // Call OneCompiler API const response = await axios.post(`${baseUrl}/api/v1/run`, { language, stdin: stdin, files: files, }, { headers: headers, }); // console.log(response.data); const result = response.data; // Format the output let outputText = ""; if (result.stdout) { outputText += `Output:\n${result.stdout}\n`; } if (result.stderr) { outputText += `Error:\n${result.stderr}\n`; } if (result.exception) { outputText += `Exception:\n${result.exception}\n`; } if (result.compileStatus) { outputText += `Compile Status: ${result.compileStatus}\n`; } if (result.executionTime !== undefined) { outputText += `Execution Time: ${result.executionTime}ms\n`; } if (result.memory !== undefined) { outputText += `Memory Used: ${result.memory} bytes\n`; } if (result.error) { // for ex: invalid access token outputText += `Error: ${result.error}`; } return outputText || "No output"; } catch (err) { // console.error(`Failed to execute code: ${err}`, err); const error = err; return `Error: ${error.message}`; } };