Skip to main content
Glama

calc_eval

Evaluate mathematical expressions and calculate results with configurable precision for accurate computations.

Instructions

Alias of calc.eval

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
exprYes
precisionNo

Implementation Reference

  • Core handler function implementing the calculation logic: normalizes expression, evaluates with mathjs, applies precision formatting, returns success/error object.
    export async function calcEval(expr: string, precision?: number) {
      try {
        const norm = normalizeExponent(expr);
        const res = math.evaluate(norm);
        let out = String(res);
        if (typeof res === 'number' && Number.isFinite(res) && typeof precision === 'number') {
          const p = Math.max(0, Math.min(precision, 20));
          out = res.toFixed(p);
        }
        return { ok: true, result: out };
      } catch (e: any) {
        return { ok: false, error: e?.message || 'calc error' };
      }
    }
  • Zod input schema for calc_eval tool: required string expr, optional integer precision (0-64).
    { expr: z.string(), precision: z.number().int().min(0).max(64).optional() },
  • src/server.ts:29-36 (registration)
    MCP server registration of 'calc_eval' tool: defines name, description, schema, options, and thin async handler wrapper around calcEval.
    server.tool('calc_eval', 'Alias of calc.eval',
      { expr: z.string(), precision: z.number().int().min(0).max(64).optional() },
      OPEN,
      async ({ expr, precision }) => {
        const res = await calcEval(expr, precision);
        return { content: [{ type: 'text', text: JSON.stringify(res) }] };
      }
    );
  • Helper utility to normalize mathematical expressions, converting ** to ^ and Vietnamese exponent terms (e.g., 'mũ', 'lũy thừa') to ^ for mathjs compatibility.
    function normalizeExponent(s: string): string {
      let t = s;
    
      // Python style
      t = t.replace(/\*\*/g, '^');
    
      // "mũ", "mu" (viết không dấu), "lũy thừa"
      // ví dụ: "5 mũ 10" -> "5 ^ 10"
      t = t.replace(/\s*(m[ũu]|lu[ũu]y\s*thừa)\s*/gi, ' ^ ');
    
      // tuỳ chọn: gom nhiều khoảng trắng
      t = t.replace(/\s+/g, ' ').trim();
      return t;
    }

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/khanhs-234/tool4lm'

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