Skip to main content
Glama

gauss-mcp

Licence Python Platform GAUSS

从Python驱动GAUSS,并通过模型上下文协议将其暴露给LLM客户端。

作者:Dr Merwan Roudane

在Windows上针对GAUSS 26.1.1构建并测试。

为什么存在这个项目

Aptech发布了一份AI助手参考,以便它们编写更好的GAUSS代码,但编写不等于运行:无法执行代码的助手永远不知道代码是否有效,也不知道数字是多少。本项目将助手连接到真实的GAUSS安装,因此结果来自GAUSS而非模型。

Related MCP server: julia-mcp

它如何驱动GAUSS

通过tgauss,即普通GAUSS安装附带的终端构建——而不是GAUSS引擎,后者功能更丰富,但需要向Aptech单独申请许可证密钥。

每次调用都是独立的tgauss进程,因此通常不会有任何状态延续。工作区在退出时保存,在进入时恢复,这使得一系列调用表现得像一个连续的会话:在一次调用中构建的矩阵在下一次调用中仍然存在。

安装

PyPI上的发行包名为**gauss-lang-mcp**:普通的gauss-mcp已被一个与导入工作流相关的无关包占用,与Aptech语言无关。导入名称仍然是gauss_mcp。

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

GAUSS会在C:\gauss*和C:\Program Files\gauss*下自动查找。设置GAUSS_HOME可以在多个安装之间选择。

库使用

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...]]

值以CSV而非打印文本的形式传递,因此它们保持完整的双精度,而不是GAUSS的显示舍入:

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

pandas双向传递:

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

MCP服务器使用

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

工具

工具

用途

gauss_status

GAUSS的位置、版本以及工作区包含的内容

run_gauss_code

主要工具。 运行GAUSS代码并返回其打印的内容

list_symbols

每个符号及其类型和维度

describe_symbol

单个符号的类型和形状

get_matrix

以全精度读取矩阵

put_matrix

根据对话中给出的数字创建矩阵

read_csv / write_csv

在文件和工作区之间移动数据

clear_workspace

从空状态重新开始

错误

GAUSS报告自己的代码、消息和行号,这些都会被传递:

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

行号指的是你的代码。工作区恢复会被前置到每个生成的程序,这会改变GAUSS自身的行号偏移;在显示之前会修正该偏移。

值得了解的行为

GAUSS和tgauss的特性,本包为你处理,每项都经过真实安装验证,而非假设。

  • 退出代码始终为0,无论程序成功还是失败。它不携带任何信息,因此错误从stderr读取。

  • stdout是干净的。 横幅和作业标题进入stderr,因此程序的输出无需过滤。

  • GAUSS先编译再运行。 任何未定义的符号都意味着没有执行任何操作,也没有输出。运行时错误会保留到该点为止的输出,然后显示“Program execute failed”。

  • 符号名称忽略大小写。 X和x是同一个符号,因此赋值给一个会覆盖另一个。这会让从R或Python来的人感到惊讶。

  • 子进程不能继承stdin。 在MCP下,服务器的stdin是JSON-RPC流;继承它的tgauss会读取协议本身。每次子进程调用都会分离stdin。

  • 恢复工作区使用use,而不是loadall。 saveall写入.gcg文件,而use <name>;必须是读取该文件的程序的第一条语句。

测试

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

许可证

MIT。版权所有(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

ActivitySlowing
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
    90
    MIT
  • A
    license
    A
    quality
    C
    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