calculate
Perform basic mathematical operations including addition, subtraction, multiplication, and division with two numbers.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | ||
| a | Yes | ||
| b | Yes |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"a": {
"type": "number"
},
"b": {
"type": "number"
},
"operation": {
"enum": [
"add",
"subtract",
"multiply",
"divide"
],
"type": "string"
}
},
"required": [
"operation",
"a",
"b"
],
"type": "object"
}
Implementation Reference
- src/server.ts:17-31 (handler)Handler function that executes the arithmetic calculation based on the specified operation and parameters a and b, returning the result in MCP text content format or an error for division by zero.async ({ operation, a, b }) => { switch (operation) { case "add": return { content: [{ type: "text", text: String(a + b) }] }; case "subtract": return { content: [{ type: "text", text: String(a - b) }] }; case "multiply": return { content: [{ type: "text", text: String(a * b) }] }; case "divide": if (b === 0) { return { isError: true, content: [{ type: "text", text: "Division by zero" }] }; } return { content: [{ type: "text", text: String(a / b) }] }; } }
- src/server.ts:12-16 (schema)Zod input schema defining the tool parameters: operation as one of add/subtract/multiply/divide, and numeric arguments a and b.{ operation: z.enum(["add", "subtract", "multiply", "divide"]), a: z.number(), b: z.number(), },
- src/server.ts:10-32 (registration)Registration of the 'calculate' tool on the MCP server, specifying the name, input schema, and handler function.server.tool( "calculate", { operation: z.enum(["add", "subtract", "multiply", "divide"]), a: z.number(), b: z.number(), }, async ({ operation, a, b }) => { switch (operation) { case "add": return { content: [{ type: "text", text: String(a + b) }] }; case "subtract": return { content: [{ type: "text", text: String(a - b) }] }; case "multiply": return { content: [{ type: "text", text: String(a * b) }] }; case "divide": if (b === 0) { return { isError: true, content: [{ type: "text", text: "Division by zero" }] }; } return { content: [{ type: "text", text: String(a / b) }] }; } } );