UNPKG

@onecompiler/onecompiler-mcp-server

Version:
63 lines (62 loc) 2.48 kB
#!/usr/bin/env node import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import OnecompilerMCPServer from "./toolkit.js"; import { Environment, Provider } from "./types.js"; const ACCEPTED_ARGS = ["api-key", "provider", "environment"]; function parseArgs(args) { const options = { apiKey: "", provider: undefined, environment: undefined, }; args.forEach((arg) => { if (arg.startsWith("--")) { const [key, value] = arg.slice(2).split("="); if (key == "api-key") { options.apiKey = value; } else if (key == "environment") { options.environment = value; } else if (key == "provider") { options.provider = value; } else { throw new Error(`Invalid argument: ${key}. Accepted arguments are: ${ACCEPTED_ARGS.join(", ")}`); } } }); // Check if API key is either provided in args or set in environment variables const apiKey = options.apiKey || process.env.ONECOMPILER_API_KEY; if (!apiKey) { throw new Error("Onecompiler API key not provided. Please either pass it as an argument --api-key=$KEY or set the ONECOMPILER_API_KEY environment variable."); } const provider = options.provider || process.env.ONECOMPILER_PROVIDER || Provider.onecompiler; if (!provider || !Object.values(Provider).includes(provider)) { throw new Error(`Invalid provider: ${provider}. Accepted providers are: rapidapi, onecompiler`); } const environment = options.environment || process.env.ONECOMPILER_ENVIRONMENT || Environment.production; if (!environment || !Object.values(Environment).includes(environment)) { throw new Error(`Invalid environment: ${environment}. Accepted environments are: sandbox, production`); } return { apiKey: apiKey, provider: provider, environment: environment, }; } async function main() { const options = parseArgs(process.argv.slice(2)); // Create the MCP server const server = new OnecompilerMCPServer({ apiKey: options.apiKey, provider: options.provider, environment: options.environment, }); const transport = new StdioServerTransport(); await server.connect(transport); } main().catch((error) => { console.error("Fatal error in main():", error); process.exit(1); });