Skip to main content
Glama

gauss-mcp

Licence Python Platform GAUSS

Drive GAUSS from Python, and expose it to LLM clients over the Model Context Protocol.

Author: Dr Merwan Roudane

Built and tested against GAUSS 26.1.1 on Windows.

Why this exists

Aptech publishes a reference for AI assistants so they write better GAUSS, but writing is not running: an assistant that cannot execute the code never learns whether it worked or what the numbers were. This connects an assistant to a real GAUSS installation, so the results come from GAUSS rather than from the model.

Related MCP server: julia-mcp

How it drives GAUSS

Through tgauss, the terminal build that ships with an ordinary GAUSS installation — not the GAUSS Engine, which is richer but needs a separate licence key from Aptech.

Each call is its own tgauss process, so nothing would normally carry over. The workspace is saved on the way out and restored on the way in, which makes a run of calls behave like one continuous session: a matrix built in one call is still there in the next.

Install

The distribution is gauss-lang-mcp on PyPI: plain gauss-mcp was already taken by an unrelated package about import workflows, nothing to do with the Aptech language. The import name stays gauss_mcp.

pip install "gauss-lang-mcp[pandas]"

GAUSS is found automatically under C:\gauss* and C:\Program Files\gauss*. Set GAUSS_HOME to choose between installations.

Library use

from gauss_mcp import Gauss

with Gauss() as g:
    g.run("""
        rndseed 90210;
        n = 400;
        x = rndn(n, 1);
        y = 1.25 + 0.8*x + 0.3*rndn(n, 1);
        des = ones(n,1)~x;
        bhat = invpd(des'des)*des'y;
    """)
    print(g.get_matrix("bhat"))     # [[1.2489...], [0.8043...]]

Values cross as CSV rather than as printed text, so they keep full double precision instead of GAUSS's display rounding:

g.run("pi_like = 3.14159265358979;")
g.get_scalar("pi_like")          # 3.14159265358979, every digit

pandas both ways:

frame = g.to_dataframe(["x", "y"])
g.from_dataframe(frame)

MCP server use

{
  "mcpServers": {
    "gauss": { "command": "gauss-lang-mcp" }
  }
}

Tools

Tool

Purpose

gauss_status

Where GAUSS is, its version, what the workspace holds

run_gauss_code

Main tool. Run GAUSS code and return what it printed

list_symbols

Every symbol with its type and dimensions

describe_symbol

Type and shape of one symbol

get_matrix

Read a matrix out at full precision

put_matrix

Create a matrix from numbers given in the conversation

read_csv / write_csv

Move data between files and the workspace

clear_workspace

Start again from empty

Errors

GAUSS reports its own code, message and line, and those are passed through:

GaussError: G0025: Undefined symbol: 'no_such_thing' on line 2

The line refers to your code. The workspace restore is prepended to every generated program, which shifts GAUSS's own numbering by a line; that offset is corrected before you see it.

Behaviour worth knowing

Characteristics of GAUSS and of tgauss that this package handles for you, each confirmed against a live installation rather than assumed.

  • The exit code is always 0, whether the program succeeded or died. It carries nothing, so errors are read from stderr instead.

  • stdout is clean. The banner and job header go to stderr, so the program's own output needs no filtering.

  • GAUSS compiles before it runs. An undefined symbol anywhere means nothing executed and no output appears. A runtime error leaves the output produced up to that point, followed by "Program execute failed".

  • Symbol names ignore case. X and x are the same symbol, so assigning to one overwrites the other. This surprises people arriving from R or Python.

  • The child must not inherit stdin. Under MCP, the server's stdin is the JSON-RPC stream; a tgauss that inherited it would read the protocol itself. Every subprocess call detaches stdin.

  • Restoring a workspace uses use, not loadall. saveall writes a .gcg and use <name>; must be the first statement of the program that reads it.

Tests

python tests/test_offline.py   # 10 tests, no GAUSS needed
python tests/test_live.py      # 24 tests, drives a real installation

Licence

MIT. Copyright (c) 2026 Merwan Roudane.

Available Tools

9 tools
clear_workspaceA

Discard every symbol, so the next run starts from an empty workspace.

Matrices and results from earlier calls are lost. Write anything worth keeping to a file first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It openly states that 'Matrices and results from earlier calls are lost' and warns to save data first. This fully communicates the destructive nature and the only side effect, making it transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first line states the core action and purpose, followed by a succinct warning. Every sentence delivers useful information with zero fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, an output schema exists, and the description covers the essential behavior and warns about data loss, it is fully complete for its purpose. No additional context is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, so the baseline is 4. The description does not need to explain parameter syntax or meaning since none exist. It correctly avoids introducing extraneous parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Discard every symbol' with a specific resource (workspace). It distinguishes itself from sibling tools like list_symbols or get_matrix by focusing on clearing all symbols. Verbatim evidence: 'Discard every symbol, so the next run starts from an empty workspace.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context: it is used before a new run to start fresh. It implicitly states when to use (when you want a clean slate) and includes an important precondition: 'Write anything worth keeping to a file first.' It does not explicitly mention alternatives or when-not-to-use, but for a simple clear operation this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_symbolA

Report one symbol's type and dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states 'Report', implying a read operation, but does not disclose behavior for missing symbols, scope limitations, or side effects. Minimal behavioral context beyond the verb itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is direct and front-loaded. Every word contributes to the meaning with no redundancy or filler. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema (which defines return values), the description is mostly sufficient. Minor gaps remain, such as error handling for unknown symbols, but these are not critical for a basic describe operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for the single 'name' parameter. The description does not explicitly explain what 'name' refers to, though the tool name and context infer it means the symbol's name. No added semantic value beyond the schema's bare type declaration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Report' and identifies the resource 'one symbol' plus the precise output scope ('type and dimensions'). This clearly distinguishes it from siblings like list_symbols (which lists many) and get_matrix (which retrieves data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for inspecting a single symbol, contrasting with list_symbols for enumerating symbols. However, it lacks explicit when-to-use or when-not-to-use guidance, and does not mention alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gauss_statusA

Report where GAUSS is, its version, and what the workspace holds.

Start here when anything looks wrong. A successful result means the installation was found and can be run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool reports status and defines success (installation found and runnable). It does not mention side effects, but for a status tool this is implicitly non-mutating, and no contradiction exists. It could be more explicit about output structure, but given the output schema exists, the description adds sufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two crisp sentences: the first states the core function, the second gives a usage trigger and a success criterion. There is zero padding, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter status tool with an output schema, the description is complete. It covers purpose, when to use, and what a successful result means, leaving no gaps given the tool's low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema (empty) covers 100% by triviality. The description does not need to explain parameters, so the baseline of 4 is appropriate. It adds no parameter info, but none is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports where GAUSS is, its version, and workspace contents, using a specific verb and resource. It distinguishes from sibling tools that manipulate symbols, matrices, or code, establishing this as a status/diagnostic tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance to 'Start here when anything looks wrong,' framing it as a first diagnostic step. It does not explicitly mention exclusions or alternatives, but the context of sibling tools implies when not to use it, and the success criterion adds practical usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_matrixA

Read a numeric matrix out of the workspace as a table.

The values travel through a CSV file rather than through printed output, so they keep full double precision instead of GAUSS's display rounding.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
digitsNo
max_rowsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the burden of behavioral disclosure. It explains a non-obvious behavior: values travel via CSV to preserve full double precision. This adds context beyond the schema, though it does not describe output format or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with two sentences that deliver the core purpose and a key behavioral detail without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the existence of an output schema, the description lacks any parameter semantics, which are critical for correct invocation. It also does not mention how digits or max_rows affect output, making it incomplete for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description does not explain any of the three parameters (name, digits, max_rows). It fails to add meaning beyond the raw schema, which only lists names and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a numeric matrix from the workspace as a table. The verb 'Read' with the resource 'numeric matrix' is specific, and it distinguishes from siblings like put_matrix (write) and list_symbols (list).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly implies usage for reading workspace matrices, contrasting with read_csv which handles files. However, it does not explicitly state when not to use or mention alternatives like describe_symbol.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_symbolsA

List every symbol in the workspace with its type and dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the output includes type and dimensions, which is useful. However, it does not disclose whether the operation is read-only (which seems obvious) or any potential performance implications (e.g., large workspaces). It also doesn't clarify the exact format of the returned list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence, front-loading the key verb and object. It is efficient and avoids waste, though a second sentence could add more value (like usage guidance).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params) and has an output schema that can describe the return structure. The description covers the essential information: what it lists and what it returns per symbol (type and dimensions). This is adequate for a simple list operation, though it lacks explicit guidance on alternatives and performance caveats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters (0 params), and schema coverage is 100% (vacuously). The description correctly focuses on what the tool returns rather than parameters. Since there are no parameters to explain, the description effectively covers the parameter semantics by being clear about the tool's scope.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists every symbol in the workspace with its type and dimensions. It uses a specific verb ('list') and resource ('symbols in the workspace') and distinguishes from siblings like describe_symbol (which likely describes a single symbol) and get_matrix (which retrieves a specific matrix).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the go-to for getting an overview of all symbols, but it does not explicitly state when to use it versus alternatives like describe_symbol or get_matrix. Given the context of sibling tools, some guidance on scope (e.g., 'for details on a single symbol, use describe_symbol') would improve this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

put_matrixB

Create a matrix in the workspace from numbers given here.

values: rows separated by semicolons, numbers within a row separated by commas or spaces, e.g. "1, 2; 3, 4" for a two-by-two matrix.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valuesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It reveals that the tool stores a matrix in the workspace, but it does not disclose whether it overwrites existing matrices with the same name, any size limits, or error behavior on invalid input. For a state-changing tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the main purpose, followed by a compact parameter format explanation. It includes a concrete example which is valuable. Slightly more structure could help, but it's appropriately concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only 2 parameters and no nested objects. The description covers the values format well. However, it does not mention what the output schema entails (likely a success message or matrix object), and it lacks behavioral context like overwrite semantics. Given the simplicity, it's adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides detailed syntax for the 'values' parameter (rows separated by semicolons, numbers by commas/spaces, with an example). The 'name' parameter is only implied as the matrix name, which is fairly clear from context but not explicitly described. The 'values' explanation goes well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a matrix in the workspace from numbers provided. It uses a specific verb ('Create') and resource ('matrix in the workspace'), and distinguishes from siblings like get_matrix (read) and read_csv (import from file), though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you need to create a matrix from literal numbers in the conversation) but does not explicitly state when not to use it or mention alternatives like read_csv for file-based data. Minimal guidance beyond the core purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_csvB

Load a CSV file into the workspace as a matrix.

skip_header: skip the first row, which is usually column names. GAUSS matrices hold numbers only, so a header row would otherwise be read as data.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathYes
skip_headerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It explains that GAUSS matrices only hold numbers and warns that a header row would be read as data unless skipped, which is a valuable behavioral detail. However, it doesn't disclose side effects like overwriting an existing workspace variable, error handling on missing files, or the exact return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences. It front-loads the primary action in the first sentence and the key parameter explanation in the second. There is no fluff, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters and no annotations, the description is incomplete. It omits details about the 'name' parameter (e.g., whether it overwrites existing variables), behavior on non-numeric data (error vs. conversion), and error scenarios. While the output schema may describe return values, the description still lacks sufficient context for an agent to use the tool safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage for parameters. The description adds context for skip_header (explaining header rows and numeric-only constraint), but does not explain the meaning of 'path' (likely file location) or 'name' (the matrix name in workspace) beyond what the schema already implies. Since coverage is low, the description must compensate more but only addresses one of three parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool loads a CSV file into the workspace as a matrix, which is a clear action on a resource. It distinguishes itself from sibling tools like write_csv (which writes) and get_matrix/put_matrix (which operate on matrices), and the action of reading from a CSV is unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not mention when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. It only hints at numerical data limitations, but there is no explicit guidance on choosing between read_csv and other tools for data import/export.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_gauss_codeA

Run GAUSS code and return what it printed. This is the main tool.

The full GAUSS language is available: matrices, procedures, loops, the library routines, and anything the installation provides.

Symbols created here survive into later calls, so build up an analysis step by step. Use print to show a value; a bare expression prints nothing.

On failure GAUSS reports its own error code and the line of your code it objected to. Note that it compiles before running: an undefined symbol anywhere means nothing ran at all.

keep_state: set false for a throwaway calculation that should leave the workspace untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
keep_stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full transparency burden. It discloses key behaviors: state persistence across calls, the requirement to use 'print' for output, compilation before execution (meaning undefined symbols prevent any execution), and the 'keep_state' parameter's effect. It also mentions error reporting (GAUSS's own error codes and source line). However, it doesn't describe potential side effects like file writes or resource consumption, though those are less critical for a code runner.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized for a tool with this complexity. It front-loads the primary purpose, then provides critical usage details (state persistence, printing requirements, compilation behavior), and ends with a parameter hint. Every sentence serves a purpose—no fluff or repetition. The use of bullet-like formatting via line breaks aids readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (full GAUSS language support) and the presence of an output schema, the description is remarkably complete. It covers execution semantics, state management, output expectations, error handling, and the key parameter. The context signals indicate an output schema exists, so the description correctly focuses on behavior rather than return structure. This matches the standard for excellent contextual completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining both parameters: 'code' is implicitly the GAUSS code to run, and 'keep_state' is explicitly described as 'set false for a throwaway calculation that should leave the workspace untouched.' This adds meaning beyond the schema's bare type definitions, clarifying the purpose and typical usage of each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Run GAUSS code and return what it printed.' It explicitly identifies the main action (running GAUSS code) and the output behavior (returning printed output). It differentiates itself from siblings by being the core execution tool, while siblings handle state inspection, file I/O, and status queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong usage context: it explains that symbols persist across calls (enabling step-by-step analysis), emphasizes using 'print' to display values, and notes the compile-before-run behavior. It doesn't explicitly contrast with sibling tools like 'clear_workspace' or 'run_gauss_code' specific alternatives, but the guidance is clear enough for an agent to know when to use this tool for code execution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_csvC

Write a matrix to a CSV file, creating the folder if it is missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It does disclose one side effect—creating the folder if missing—but omits other relevant behaviors such as whether an existing file is overwritten, whether the named matrix must already exist, and what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that states the core operation and a key side effect with no filler or redundant wording. It is appropriately concise for a simple two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description remains incomplete because it fails to explain the key `name` parameter and provides no usage context relative to sibling tools. The folder-creation detail is helpful, but it does not resolve the main operational ambiguities.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining the parameters. It implies that `path` is the CSV file destination, but it never clarifies what `name` refers to—whether it is the matrix identifier, the output file name, or something else. This ambiguity is significant for an agent selecting and invoking the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: writing a matrix to a CSV file. It also adds a concrete behavioral detail about creating missing folders. It does not explicitly differentiate from sibling `put_matrix`, but the CSV-file target makes the file-export purpose reasonably distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like `read_csv`, `put_matrix`, or `get_matrix`. The intended use is only implied by the phrase 'Write a matrix to a CSV file', with no stated exclusions or comparison to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedclear_workspace
    • First observeddescribe_symbol
    • First observedgauss_status
    • First observedget_matrix
    • First observedlist_symbols
    • First observedput_matrix
    • First observedread_csv
    • First observedrun_gauss_code
    • First observedwrite_csv

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Most tools are clearly distinct: listing, describing, getting, putting, reading, writing, status, clearing, and executing. The main overlap is between gauss_status reporting what the workspace holds and list_symbols listing every symbol, but the descriptions are clear enough to prevent serious confusion.

Naming Consistency4/5

The overwhelming majority of tools follow a consistent verb_noun pattern such as list_symbols, put_matrix, read_csv, and run_gauss_code. The one outlier is gauss_status, which lacks a verb and breaks the otherwise predictable pattern.

Tool Count5/5

With nine tools, the server is well-scoped for a GAUSS workspace MCP. Each tool covers a distinct need—inspection, data exchange, file I/O, status, reset, and arbitrary code execution—without feeling bloated or thin.

Completeness4/5

The server covers the core GAUSS workflow well: list and describe symbols, get and put matrices, import/export CSV, check status, clear the workspace, and run arbitrary GAUSS code. There is no dedicated delete-symbol or rename tool, but run_gauss_code can handle those cases, so the gap is minor.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to execute Julia code efficiently with persistent sessions, avoiding startup costs and maintaining state across calls.
    3
    86
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to interact with the Baltamatica scientific computing kernel, executing code, managing variables, and running scripts while preserving workspace state across calls.
    6
    5
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables ISLI agents and MCP clients to dispatch natural-language coding and terminal tasks to a locally-installed Claude Code CLI, supporting both one-shot execution and persistent sessions with workspace and security controls.
    -