Skip to main content
Glama

gauss-mcp

Licence Python Platform GAUSS

Python에서 GAUSS를 구동하고, Model Context Protocol을 통해 LLM 클라이언트에 노출합니다.

저자: Dr Merwan Roudane

GAUSS 26.1.1을 대상으로 Windows에서 빌드하고 테스트했습니다.

존재 이유

Aptech는 AI 어시스턴트가 더 나은 GAUSS 코드를 작성하도록 AI 어시스턴트용 레퍼런스를 제공하지만, 작성하는 것과 실행하는 것은 다릅니다. 코드를 실행할 수 없는 어시스턴트는 코드가 작동했는지, 숫자가 무엇이었는지 결코 알 수 없습니다. 이 프로젝트는 어시스턴트를 실제 GAUSS 설치에 연결하므로 결과는 모델이 아니라 GAUSS에서 나옵니다.

Related MCP server: julia-mcp

GAUSS 구동 방식

tgauss를 통해 구동합니다. tgauss는 일반 GAUSS 설치에 포함된 터미널 빌드로, 더 풍부한 기능을 제공하지만 Aptech의 별도 라이선스 키가 필요한 GAUSS Engine이 아닙니다.

각 호출은 자체 tgauss 프로세스이므로 일반적으로 아무것도 이어지지 않습니다. 작업 공간은 나갈 때 저장되고 들어올 때 복원되어, 일련의 호출이 하나의 연속 세션처럼 동작합니다. 한 호출에서 만든 행렬은 다음 호출에도 그대로 있습니다.

설치

배포판은 PyPI의 **gauss-lang-mcp**입니다. 평범한 gauss-mcp는 이미 import 워크플로에 관한 무관한 패키지가 사용 중이며, Aptech 언어와는 아무 관련이 없습니다. import 이름은 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 스트림입니다. stdin을 상속한 tgauss는 프로토콜 자체를 읽어 버릴 것입니다. 모든 서브프로세스 호출은 stdin을 분리합니다.

  • 작업 공간 복원은 loadall이 아닌 use를 사용합니다. 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. 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

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