10 KiB
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, nichtr*a*t*e).
Ergebnisse:
resultbzw.exact: symbolisches Ergebnis in derselben Syntax, direkt als Eingabe für das nächste Tool verwendbarlatex: für die Darstellungnumeric: 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ätzlichdigits.
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"}]plusnumeric - Periodische Lösungen (z. B.
sin(x) = 1/2):solution_setals Menge plusprincipal_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.