UNPKG

it-tools-mcp

Version:

Full MCP 2025-06-18 compliant server with 121+ IT tools, logging, ping, progress tracking, cancellation, and sampling utilities

60 lines (59 loc) 2.34 kB
import { z } from "zod"; export function registerCalculatePercentage(server) { server.registerTool("calculate_percentage", { description: "Calculate percentages, percentage of a number, or percentage change", inputSchema: { operation: z.enum(["percentage-of", "what-percentage", "percentage-change"]).describe("Type of percentage calculation"), value1: z.number().describe("First value"), value2: z.number().describe("Second value") }, // VS Code compliance annotations annotations: { title: "Calculate Percentage", description: "Calculate percentages, percentage of a number, or percentage change", readOnlyHint: false } }, async ({ operation, value1, value2 }) => { try { let result; let explanation; switch (operation) { case "percentage-of": // value1% of value2 result = (value1 / 100) * value2; explanation = `${value1}% of ${value2} = ${result}`; break; case "what-percentage": // value1 is what percentage of value2 result = (value1 / value2) * 100; explanation = `${value1} is ${result.toFixed(2)}% of ${value2}`; break; case "percentage-change": // percentage change from value1 to value2 result = ((value2 - value1) / value1) * 100; explanation = `Percentage change from ${value1} to ${value2} = ${result.toFixed(2)}%`; break; default: throw new Error("Invalid operation"); } return { content: [ { type: "text", text: explanation } ] }; } catch (error) { return { content: [ { type: "text", text: `Error calculating percentage: ${error instanceof Error ? error.message : 'Unknown error'}` } ] }; } }); }