mcp-calculator/docs/tools.md
2026-09-15 20:38:16 +02:00

10 KiB
Raw Blame History

Tool-Referenz

13 Tools, nach Fachgebiet gruppiert. Die Tools mit vielen Operationen (calculus, matrix, number_theory …) nutzen ein operation-Enum. So bleibt die Tool-Liste für das LLM überschaubar, und die Schemas bleiben trotzdem präzise.

Alle Tools sind readOnly, idempotent und openWorld=false annotiert. Clients können sie also ohne Rückfrage freigeben (z. B. Cline autoApprove).

Gemeinsame Konventionen

Ausdrucks-Syntax (für alle String-Ausdrücke):

Schreibweise Bedeutung
x^2 oder x**2 Potenz
2x, 3(x+1) implizite Multiplikation
5! Fakultät
a % b, Mod(a, b) Modulo
pi, e, I, oo π, Euler'sche Zahl, imaginäre Einheit, ∞
sin(30*deg) Grad (deg = π/180)
ln(x), log(x), log(x, 2), log10(x) Logarithmen
sqrt, cbrt, root(x, n), abs, floor, ceiling Wurzeln, Betrag, Runden
sin cos tan …, asin/arcsin …, sinh … Trigonometrie
factorial, binomial, gamma, erf, min, max, gcd, lcm Sonderfunktionen
x^2 = 4 Gleichung (genau ein =)
x^2 < 4, <=, >, >=, != Ungleichungen
  • Dezimalpunkt, kein Komma. Dezimalzahlen werden exakt als Brüche behandelt (0.1 + 0.2 = 3/10).
  • Unicode wird normalisiert: π × ÷ − ² ³ √ ∞ ≤ ≥ ≠.
  • Mehrbuchstabige Namen sind ein Symbol (rate*time, nicht r*a*t*e).

Ergebnisse:

  • result bzw. exact: symbolisches Ergebnis in derselben Syntax, direkt als Eingabe für das nächste Tool verwendbar
  • latex: für die Darstellung
  • numeric: Dezimalwert als String, damit keine Präzision verloren geht
  • Sehr lange Ergebnisse werden gekürzt (MCP_CALC_MAX_OUTPUT_LENGTH), große Ganzzahlen enthalten zusätzlich digits.

Fehler kommen als Tool-Fehler (isError: true) mit einer verständlichen Meldung zurück, z. B. matrix is singular (determinant 0) and has no inverse; try 'pseudo_inverse'. Das LLM kann darauf reagieren und den Aufruf korrigieren.


evaluate

Wert exakt und dezimal berechnen, mit beliebiger Präzision.

Parameter Typ Default
expression string – Ausdruck
precision int 15 signifikante Stellen (1–1000)
variables object – Werte einsetzen, z. B. {"x": 2, "r": "1/3"}
{"expression": "1000 * (1 + 0.05)^10", "precision": 12}
→ {"exact": "16679880978201/10240000000", "numeric": "1628.89462678", ...}

transform

Symbolisch umformen.

Parameter Typ Default
expression string –
operation enum simplify simplify, expand, factor, collect, cancel, apart, together, trigsimp, expand_trig, powsimp, expand_log, logcombine, radsimp, rationalize_denominator, nsimplify, substitute
variable string – Hauptvariable für collect, apart, factor
substitutions object – für substitute: {"x": "2t"}
assume enum none none, real, positive, integer

equivalent_to_input: true bestätigt, dass die Umformung mathematisch identisch ist. nsimplify findet geschlossene Formen zu Dezimalzahlen (1.41421356… → sqrt(2)).

solve

Gleichungen, Gleichungssysteme, Ungleichungen.

Parameter Typ Default
equations string | string[] – eine Gleichung oder ein System; bloßer Ausdruck = … = 0
variables string[] alle freien wonach aufgelöst wird
domain enum complex complex, real, positive, integer
numeric_only bool false numerisch lösen (Newton / Polynomwurzeln)
initial_guess number[] 1.0 je Variable Startwerte für numeric_only
precision int 15
  • Endliche Lösungen: solutions: [{"x": "2"}, {"x": "3"}] plus numeric
  • Periodische Lösungen (z. B. sin(x) = 1/2): solution_set als Menge plus principal_solutions
  • Unterbestimmte Systeme: parametrisierte Lösung plus Hinweis in note
  • Ungleichungen: solution_set: "Interval.open(-2, 2)"
  • Transzendente Gleichungen ohne geschlossene Form: numeric_only: true

calculus

operation benötigt Ergebnis
derivative variable, order Ableitung; mehrere Variablen "x, y" = gemischte partielle Ableitung
integral optional lower+upper unbestimmt (+C-Hinweis) oder bestimmt; fällt numerisch zurück, wenn keine geschlossene Form existiert
limit point, direction (+-, +, -) Grenzwert
series point (Default 0), terms Taylorreihe mit O-Term, zusätzlich polynomial
sum / product lower, upper (auch oo) geschlossene Form oder numerisch; converges bei unendlichen Summen
gradient, hessian variable: "x, y" Vektor / Matrix
jacobian expression: "f1, f2", variable: "x, y" Matrix

Weitere Parameter: assume, precision.

analyze_function

Komplette Kurvendiskussion einer reellen Funktion f(x) in einem Aufruf: Definitionsbereich, f′/f″/f‴, Nullstellen, y-Achsenabschnitt, Extrema mit Art, Wendepunkte, Symmetrie, Grenzverhalten ±∞, senkrechte Asymptoten, Monotonie- und Krümmungsintervalle. Teilschritte, die sich nicht bestimmen lassen, liefern "not determinable", statt den ganzen Aufruf scheitern zu lassen.

Parameter Default
expression –
variable x
precision 10

solve_ode

Gewöhnliche Differentialgleichungen, symbolisch gelöst.

Parameter Default
equation – Strich-Notation: "y'' + 2y' + y = sin(x)"
function y Name der gesuchten Funktion
variable x unabhängige Variable
initial_conditions – {"y(0)": 1, "y'(0)": 0}

Ohne Anfangsbedingungen kommt die allgemeine Lösung mit C1, C2, …. Zusätzlich wird das Lösungsverfahren (method) zurückgegeben.

matrix

Parameter Default
operation – siehe unten
matrix – Liste von Zeilen [[1, 2], [3, 4]]; Einträge dürfen Ausdrücke sein ("1/3", "a"); flache Liste = Spaltenvektor
other – zweiter Operand bzw. rechte Seite b bei solve
exponent – für power
numeric_mode false Gleitkomma (NumPy) statt exakt

Operationen (exakt): determinant, inverse, transpose, rank, trace, rref, eigenvalues, eigenvectors, characteristic_polynomial, diagonalize, nullspace, columnspace, multiply, add, subtract, power, solve, dot, cross, norm, pseudo_inverse. Nur numerisch: svd, condition_number. Bei numeric_mode löst solve nicht-quadratische Systeme per Least Squares.

statistics

Deskriptive Statistik: count, sum, mean, median, mode, min/max, range, variance, std_dev, Quartile, IQR, Standardfehler, Variationskoeffizient, Schiefe, Exzess, geometrisches/harmonisches Mittel.

Parameter Default
data – Zahlen
sample true Stichprobe (n−1) oder Grundgesamtheit (n)
percentiles – z. B. [5, 95]
y – gepaarte zweite Variable: Kovarianz, Pearson, Spearman

regression

Parameter Default
x, y – Datenpunkte
model linear linear, polynomial, exponential, logarithmic, power
degree 2 für polynomial
predict – x-Werte für Vorhersagen

Liefert Koeffizienten, Gleichung, R², RMSE; beim linearen Modell zusätzlich r, p-Wert und Standardfehler.

probability

Parameter
distribution normal(mean, std), t(df), chi2(df), f(dfn, dfd), exponential(rate), uniform(low, high), lognormal(mu, sigma), gamma(shape, scale), beta(a, b), binomial(n, p), poisson(lambda), geometric(p), hypergeometric(population, successes, draws), negative_binomial(successes, p)
operation pdf (Dichte bzw. P(X=x)), cdf P(X≤x), sf P(X>x), between P(lower<X≤upper), quantile, interval, summary
parameters z. B. {"n": 10, "p": 0.3}
x, lower, upper, q, confidence je nach Operation

Das Feld meaning sagt genau, was berechnet wurde. Bei diskreten Verteilungen z. B. "P(X > 7) = P(X >= 8)". Das verhindert die typischen Off-by-one-Fehler von LLMs.

hypothesis_test

test Eingaben
one_sample_t sample, mu
two_sample_t sample, sample2, equal_variance (Default Welch)
paired_t sample, sample2
one_way_anova groups
mann_whitney sample, sample2
wilcoxon sample + sample2 oder mu
chi2_goodness_of_fit sample (beobachtete Häufigkeiten), expected (Häufigkeiten oder Wahrscheinlichkeiten)
chi2_independence table (Kontingenztafel), zusätzlich Cramér's V
shapiro_wilk sample
binomial sample: [Erfolge, Versuche], p
pearson_correlation sample, sample2

Gemeinsam: alternative (two-sided, less, greater) und alpha. Ergebnis: Teststatistik, p-Wert, gegebenenfalls Freiheitsgrade und Konfidenzintervall, reject_null und eine Schlussfolgerung im Klartext.

number_theory

operation values
gcd, lcm [a, b, …]
factorize, is_prime, next_prime, previous_prime, divisors, totient, factorial, fibonacci [n]
nth_prime [k]
primes_in_range [low, high]
mod [a, m]
mod_pow [base, exp, mod]
mod_inverse [a, m]
crt Reste in values, Moduli in moduli
binomial, permutations [n, k]
continued_fraction [x] (z. B. "415/93", "sqrt(2)")
base_convert ["ff"] plus from_base, to_base (2–36)

Ganzzahlen über 2^53 bitte als String übergeben. JSON-Zahlen verlieren sonst in manchen Clients Stellen. Große Ergebnisse kommen ebenfalls als String zurück.

convert_units

Parameter Default
quantity – "100 km/h", "25 degC", "5 km/h * 2 h", "1.5 kg * 9.81 m/s^2"
to_unit – Zieleinheit; ohne Angabe SI-Basiseinheiten plus compact
precision 12

Die Dimensionen werden geprüft (kg → m ergibt einen Fehler). Unterstützt werden SI- und imperiale Einheiten, Präfixe, Temperaturen, Datengrößen (B, KiB, MB), Energie, Druck usw. (Pint-Einheitenregister).

Ressource calculator://syntax

Kurzreferenz der Syntax und Verteilungen als Text. Dieselbe Information steckt auch in den Server-instructions, die jeder Client beim Verbindungsaufbau erhält.