Skip to main content
Glama

vCFD

Voice-driven CFD: Grok Voice + MCP + OpenFOAM + ParaView.

Speak natural language commands; a Grok voice agent calls vCFD MCP tools that set up and run OpenFOAM cases, then summarize results and export data for ParaView on your Mac.

JARVIS for CFD (pragmatic edition): full-duplex speech → tool calls → async solvers → spoken engineering summaries. Not movie magic—solid async job handling and careful tool design.

Architecture

Human (speech)
    ↕ Speech-to-Speech
Grok Voice / Voice Agent Builder
    ↓ Remote MCP (HTTP/SSE + auth)
vCFD MCP Server (Python / FastMCP)
    ↓ subprocess or Docker
OpenFOAM cases & solvers
    ↓ foamToVTK / case zip
ParaView (Mac)

vCFD does not modify OpenFOAM. It launches OpenFOAM executables and edits case dictionaries. OpenFOAM remains a separate GPLv3 runtime (see NOTICE).

Related MCP server: Foam-Agent

Quick start (Mac Silicon)

Requirements

  • Python 3.12+ and uv

  • Optional: Docker (for real OpenFOAM; mock mode works offline)

  • Optional: ParaView (visualization)

  • Grok Build for agentic development / local MCP

Install

git clone https://github.com/gpu7/vCFD.git
cd vCFD
uv sync

Run tests (mock OpenFOAM)

uv run pytest -q

Run MCP server (stdio)

export VCFD_OPENFOAM_MODE=mock   # or docker | native
./scripts/dev_stdio.sh

Attach to Grok Build

grok mcp add vcfd -- uv run --directory /path/to/vCFD vcfd-mcp

Or configure in ~/.grok/config.toml:

[mcp_servers.vcfd]
command = "uv"
args = ["run", "--directory", "/path/to/vCFD", "vcfd-mcp"]
env = { VCFD_OPENFOAM_MODE = "mock" }
enabled = true

First case: Hagen–Poiseuille pipe

Through MCP tools (or voice):

  1. create_case(name="pipe1", template="hagen_poiseuille")

  2. set_pipe_parameters(case_name="pipe1", radius=0.05, bulk_velocity=0.1)

  3. generate_mesh(case_name="pipe1")check_mesh(...)

  4. start_solver(case_name="pipe1")get_job_status(job_id=...)

  5. summarize_results / compare_to_analytical

  6. export_for_paraview → open zip/VTK in ParaView

OpenFOAM modes

Mode

Env

Use when

mock

VCFD_OPENFOAM_MODE=mock

Unit tests, no OF install

docker

VCFD_OPENFOAM_MODE=docker

Mac or EC2 with Docker

native

VCFD_OPENFOAM_MODE=native

Ubuntu with OF packages

See .env.example for all settings.

Voice agent (Grok Voice Agent Builder)

  1. Deploy public MCP (EC2: ./deploy/aws/launch-ec2.sh).

  2. Follow prompts/voice_agent_builder.md — console steps + MCP fields.

  3. System prompt: prompts/voice_agent_system.md.

  4. Code / paste helpers: voice/session.example.json, scripts/voice_session_snippet.py --from-latest.

./deploy/aws/launch-ec2.sh
uv run python scripts/voice_session_snippet.py --from-latest
# Paste URL + Bearer token into Voice Agent Builder remote MCP

AWS EC2

Automated launch scripts (AWS CLI on your Mac):

./deploy/aws/launch-ec2.sh --dry-run   # plan only
./deploy/aws/launch-ec2.sh             # launch Ubuntu + Docker + Caddy + MCP
./deploy/aws/status.sh
./deploy/aws/teardown.sh

Details: deploy/aws/README.md.

Project layout

src/vcfd/           # MCP server, OpenFOAM runner, analytics
cases/templates/    # OpenFOAM case templates (not OF source)
tests/              # pytest
deploy/             # Docker, systemd, AWS notes
prompts/            # Voice agent system prompt
scripts/            # dev helpers

License

  • vCFD code: MIT

  • OpenFOAM: GPLv3 (external dependency — not distributed as part of this repo’s source)

You may charge for applications or services built with vCFD as an external controller of OpenFOAM. Do not link or redistribute modified OpenFOAM without complying with GPLv3.

Status

  • Mock OpenFOAM pipeline: tested (uv run pytest)

  • Real OpenFOAM via Docker (opencfd/openfoam-default:2506, arm64-capable): mesh + simpleFoam + ParaView export verified on Mac Silicon

  • Grok Build project MCP: .grok/config.toml (grok mcp list)

  • Next: Voice Agent Builder / remote HTTP MCP on EC2, richer field sampling, more templates

Docker end-to-end

# Requires Docker Desktop running and image pull once:
docker pull opencfd/openfoam-default:2506
./scripts/e2e_docker.sh

Results land under cases/workspace/ (gitignored). Open the .foam or VTK/ export in ParaView.

ParaView via S3 (Mac)

After export_for_paraview on a server with VCFD_S3_BUCKET configured:

# Hands-off: watch S3 → download → open ParaView
./scripts/install_paraview_s3_watch.sh install

# Or one-shot:
./scripts/fetch_paraview_from_s3.sh --latest

Grok Build MCP

Project config is already set (docker mode):

grok mcp list
# tools available after restart / new session in this directory

Available Tools

16 tools
check_meshC

Run checkMesh and return a quality summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 of disclosing side effects, safety, and behavior. It only says 'run checkMesh and return a quality summary,' but does not state whether it modifies files, requires an existing mesh, or 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.

Conciseness4/5

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

The description is a single, clear sentence with no redundant words. It is front-loaded with the verb and outcome. While minimal, it is appropriately concise for such a simple tool, though not as short as a tautology.

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 simplicity of the tool, the description is still incomplete. It does not mention when to use it, whether the mesh must already exist, or what 'quality summary' entails. An output schema exists, so return details are not needed, but the description lacks enough context for safe and correct invocation.

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?

The input schema has one required parameter, case_name, with no description. The tool description does not elaborate on this parameter at all. Schema description coverage is 0%, and the description does not compensate.

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 runs checkMesh and returns a quality summary, providing a specific action and output. It is unambiguous and can be distinguished from sibling tools like generate_mesh or summarize_results.

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, what prerequisites exist (e.g., a mesh must be generated first), or how it compares to alternatives. There is no mention of when not to use it.

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

clean_caseA

Remove time directories and post-processing output; keep 0/, constant/, system/.

Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the destructive action, specifies what is kept, and states the confirm=true requirement. However, it does not mention irreversibility, what happens if confirm is false, or any 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 two concise sentences with no fluff. The main action and preserved directories are front-loaded, and the confirmation requirement is stated clearly.

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, and an output schema exists, so return values need no explanation. The description covers the main effect, preserved paths, and confirmation flag. It could note irreversibility or how this differs from delete_case, but it is largely complete for its scope.

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

Parameters3/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 adds meaning to the 'confirm' parameter by requiring true, but 'case_name' is left self-evident from the tool name. This is partial but not full compensation for the missing schema descriptions.

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 ('Remove time directories and post-processing output') and the resource, while listing what is preserved ('0/, constant/, system/'). This distinguishes it from sibling tools like delete_case, which would remove the entire case.

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 (cleaning a case after simulation/post-processing) but does not explicitly contrast with alternatives like delete_case. The confirm=true requirement is a precondition, not a usage guideline.

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

compare_to_analyticalA

Compare numerical pipe flow to Hagen–Poiseuille analytical solution.

In mock mode, uses an ideal parabolic profile with small noise-free match. With real OpenFOAM results, samples from case parameters (MVP: uses bulk U and analytical profile as reference; full field sampling can be extended).

ParametersJSON Schema
NameRequiredDescriptionDefault
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses mode-specific behavior: mock mode uses an ideal parabolic profile with a 'small noise-free match', and real mode uses an MVP approach with bulk U and analytical profile as reference, with future extension possible. This is useful behavioral context, though it omits side-effect or permission details.

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 two short paragraphs with no redundancy. The first sentence states the core purpose, and the second adds necessary mode-specific detail without wasting words.

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?

Given a simple tool with one parameter and an output schema, the description covers the primary purpose and mode-dependent behavior. However, the missing parameter documentation and lack of explicit alternative guidance create clear gaps. It is an adequate but not fully self-sufficient description.

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 input schema has only one parameter, case_name, with 0% schema description coverage. The description never explains what case_name refers to, its expected format, or valid values, leaving the agent to infer solely from the parameter name. This is a clear gap, though minimized by having only one obvious 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 opening sentence 'Compare numerical pipe flow to Hagen–Poisseuille analytical solution' is a specific verb+resource+reference statement. It clearly distinguishes this tool from sibling tools like summarize_results or export_for_paraview, which have different purposes.

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 mentions two contexts, 'In mock mode' and 'With real OpenFOAM results', providing implied guidance on when the tool behaves differently. However, it does not explicitly name alternative tools or state when to prefer this tool over siblings, so usage guidance remains only implicit.

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

create_caseA

Create a new OpenFOAM case from a template.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCase directory name (letters, digits, ._-).
templateNoTemplate name (default: hagen_poiseuille laminar pipe).hagen_poiseuille
descriptionNoOptional human description.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. However, it only states that a case is created from a template; it does not disclose what happens if the case already exists, whether it copies files, requires prior steps, or what side effects occur. This is a significant gap for a mutation tool.

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, compact sentence that immediately states the tool's purpose without any filler or redundancy. It is well-structured and front-loaded, earning a full score.

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?

Given the tool's simplicity, the presence of an output schema, and high schema coverage, the description is minimally adequate. However, it lacks context about prerequisites (e.g., selecting a template), potential name conflicts, and interaction with sibling tools like list_templates, leaving some gaps for the agent.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains each parameter (name, template, description) with defaults and constraints. The description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 applies.

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 'Create a new OpenFOAM case from a template' clearly identifies the action (create), the resource (OpenFOAM case), and the method (from a template). It distinguishes this tool from siblings like delete_case, clean_case, and list_cases, which serve different purposes.

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 ('Create a new...') but does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites such as listing available templates first. It provides no exclusions or alternative tool references, leaving the decision to the agent's inference from the tool name and sibling list.

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

delete_caseA

Permanently delete a case directory. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It clearly discloses the destructive, irreversible nature ('Permanently delete') and the mandatory confirm flag, which are the most critical behavioral traits for a deletion tool. It omits side effects or failure modes, but the disclosure is still strong.

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 concise sentences, front-loaded with the action, and every word adds value. No redundancy or filler.

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, and an output schema exists, so return values are covered elsewhere. The description covers the core destructive action and safety requirement. It lacks a contrast with clean_case and potential side effects, but for a straightforward delete operation, it is nearly complete.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It explains confirm must be true, adding meaning to that parameter. However, case_name is left to its self-evident name, and the behavior when confirm is false is only implied, not stated. Partial compensation.

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 uses a specific verb ('delete') and a clear resource ('case directory'), making the action unambiguous. The word 'Permanently' adds important irreversible context and differentiates it from non-destructive operations like clean_case.

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?

No guidance is given for when to use this tool versus alternatives like clean_case or describe_case. The only usage-related instruction is 'Requires confirm=true', which is an invocation detail, not a selection guideline.

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

describe_caseB

Describe a case: template, mesh status, parameters, latest time, solver.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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 the full burden. It does not disclose any behavioral traits beyond the basic function, such as whether it is read-only, requires permissions, or has side effects. The read-only nature is implied but never stated.

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 directly states the tool's purpose and key coverage areas. Every word contributes meaning, with no filler or redundancy.

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 description is concise and covers the tool's main purpose, but given the presence of an output schema and no annotations, it could benefit from clarifying that the tool is read-only or mentioning what happens if the case does not exist. It is adequate for a simple describe operation but leaves some edge-case context unaddressed.

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?

With 0% schema description coverage, the description must compensate for the undocumented 'case_name' parameter. It does not explain what 'case_name' should be, where to find valid values, or any formatting requirements, leaving the parameter semantics ambiguous.

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 function: 'Describe a case' and lists the specific aspects it covers (template, mesh status, parameters, latest time, solver). This distinguishes it from sibling tools like list_cases (which lists cases) and other operations.

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 tool is for getting a detailed summary of a single case, as opposed to listing or modifying cases, but it does not explicitly state when to use it over alternatives or mention any prerequisites or exclusions.

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

export_for_paraviewB

Export case for ParaView via foamToVTK and optional zip package on disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
make_zipNo
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavior disclosure. It does tell the agent that the export uses foamToVTK and produces an optional zip file on disk, which is useful context. However, it omits side effects like overwriting existing files, required permissions, or whether the case is modified, leaving some behavioral ambiguity.

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: it leads with the verb and resource, then provides the method and optional zip. There is no wasted verbiage, and it is easily scannable.

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 having an output schema, the description lacks critical contextual information: it does not say that the case must already exist or that the solver must have run, nor does it mention whether the operation is synchronous or asynchronous. For an agent to invoke this correctly, it would need to infer prerequisites from sibling tool names. This is a clear gap.

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

Parameters3/5

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

Schema description coverage is 0%, but the description still maps to the two parameters: 'case' implies case_name is the case to export, and 'optional zip package' indirectly indicates the make_zip boolean. However, it does not explicitly explain how the parameters are set or any constraints/format for case_name, so the added value is moderate.

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: exporting a case for ParaView via foamToVTK. It uses a specific verb (export), a specific resource (case), and even identifies the underlying method and optional zip output, distinguishing it from sibling tools like create_case or start_solver.

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?

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites (e.g., the case must exist and have been solved), nor does it note whether this should follow start_solver or be used instead of summarize_results. Contextual cues must be inferred from the name and sibling list.

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

generate_meshA

Run blockMesh for the case. Use background=true for async job.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_nameYes
backgroundNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the core action (running blockMesh) and the async option for background, but does not detail side effects, failure behavior, or prerequisites such as the case already existing.

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 short, front-loaded sentences deliver the core action and the async hint without any waste. Every word earns its place.

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?

For a simple tool, the description covers the basic operation and the async option, but it lacks explicit guidance on when to use it relative to sibling tools and prerequisites like the case needing to exist. An output schema exists, so return value details are not required, but other context gaps remain.

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

Parameters3/5

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

The description adds meaning to background by explaining it enables async jobs, which is beyond the schema's bare boolean. However, case_name is not explicitly described, though 'for the case' implies its role. Schema coverage is 0%, so the description partially compensates.

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 runs blockMesh for a given case, using a specific verb and resource. This distinguishes it from sibling tools like check_mesh (which checks the mesh) and start_solver (which runs the solver).

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 mentions using background=true for async jobs, offering a conditional usage hint. However, it does not explicitly say when to use this tool versus alternatives or mention any prerequisites/exclusions.

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

get_job_statusA

Get status of a job by job_id, or list jobs for a case / all jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNo
case_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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 the burden. It implies a read-only operation through the verb 'get', but it does not explicitly state safety, nor does it disclose any potential limitations such as pagination, ordering, or the exact fields returned. The description is adequate for a simple read tool but lacks explicit 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?

The description is a single, efficient sentence that front-loads the verb and resource, then lists the modes. It contains zero filler and earns every word.

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 and has an output schema, which covers return-value details. The description adequately communicates the two main usage modes. However, the ambiguity about parameter combinations and the scope of 'all jobs' leaves a small completeness gap, preventing a 5.

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

Parameters3/5

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

The schema has no parameter descriptions (0% coverage), so the description must compensate. It mentions job_id and case context, indicating that job_id targets a specific job and case_name filters jobs by case. However, it does not explain the precedence when both are provided, nor does it clarify the default 'all jobs' behavior in detail. Some meaning is added, but the full parameter logic is not spelled out.

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 function: retrieving job status by job_id, or listing jobs for a case/all jobs. It uses a specific verb and resource, and the focus on 'status' distinguishes it from sibling tools like get_logs or stop_job.

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 contexts (by job, by case, all jobs) but does not explicitly state when to prefer this tool over alternatives, nor does it provide exclusions. The purpose is self-evident, but there is no direct guidance about choosing this vs. other job-related tools.

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

get_logsC

Return the tail of a solver/mesh job log (filtered residual-friendly).

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNo
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/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 disclose behavior. It states the output is a tail and 'filtered residual-friendly', but does not mention whether the operation is read-only, if the job must exist, or what happens for empty logs. This is insufficient for a tool with no annotation safety profile.

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 sentence with no extraneous words, stating the action and resource directly. Though 'filtered residual-friendly' is somewhat jargon-like, it is appropriately short and front-loaded.

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 simple tool (2 parameters, output schema exists), the description is not complete. It lacks usage context and parameter semantics, making it hard for an agent to know when to call it and what lines does. The output schema may cover return values, but the missing guidance on job_id and lines is critical.

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?

The schema has job_id (required) and lines (default 40), but the description does not explain either. 'Tail' implies lines, but it is not explicit. With 0% schema description coverage, the description should clarify parameter semantics; it does not.

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 uses a specific verb 'Return' and resource 'tail of a solver/mesh job log', clearly indicating it retrieves log output. It distinguishes from siblings like get_job_status by focusing on logs, but the ambiguous phrase 'filtered residual-friendly' prevents a 5.

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?

No guidance is provided on when to use this tool versus alternatives like get_job_status or summarize_results. The description does not mention any exclusions or preferred contexts.

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

list_casesA

List CFD cases in the workspace with mesh and time status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/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. 'List' implies a read-only operation, and the mention of 'mesh and time status' adds useful behavioral context, but it does not explicitly state safety, filtering behavior, or return format. More transparency could be provided.

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, concise sentence that front-loads the main purpose ('List CFD cases') and adds essential detail ('with mesh and time status') without any unnecessary words or repetition.

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?

For a simple list tool with no parameters and an existing output schema, the description is adequately complete. It covers what is listed and the type of status information provided. It lacks explicit usage guidance, but the tool's simplicity and clear purpose make the description sufficient overall.

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 an empty schema, so there are no parameter details to document. The description's mention of 'workspace' indirectly indicates scope, but it does not add parameter semantics beyond the schema, which is acceptable given the baseline for zero params.

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 uses the specific verb 'List' and clearly identifies the resource as 'CFD cases in the workspace', adding detail about the included status fields ('mesh and time status'). This distinguishes it from siblings like 'list_templates' (templates vs cases) and 'describe_case' (single case detail vs list).

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 typical usage for listing cases but does not explicitly state when to use it over alternatives or mention any exclusions. It lacks comparative guidance such as 'for details on a single case, use describe_case'.

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

list_templatesA

List available OpenFOAM case templates (e.g. hagen_poiseuille).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. It states a read-only list operation, which is inherently safe, but it does not disclose details such as where templates come from or whether the list is static. Minimal behavioral context beyond the name.

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?

One sentence, front-loaded with the action, and includes a useful example. No wasted words.

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 zero-parameter, simple nature of the tool, the presence of an output schema, and the description with an example, this is complete enough for an agent to understand and invoke the tool correctly.

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?

There are no parameters, so the description has nothing to add to the schema. The example template name is non-parameter context. The baseline for zero parameters is 4.

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?

Clearly states the verb 'list' and the resource 'OpenFOAM case templates', with an example ('hagen_poiseuille'). This distinguishes it from sibling list_cases, which likely lists existing cases rather than templates.

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 implies the tool is used for discovering available templates before creating a case, but it does not explicitly mention alternatives or exclusions. The context is clear, but there is no direct comparison to sibling tools like list_cases.

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

set_pipe_parametersC

Set Hagen–Poiseuille pipe geometry, fluid properties, and mesh resolution.

Units: meters, Pa·s (dynamic viscosity), kg/m³, m/s.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthNo
radiusNo
densityNo
n_axialNo
n_radialNo
case_nameYes
viscosityNo
bulk_velocityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden. It discloses units for several parameters, which is useful, but it does not explain whether the tool overwrites all parameters, how null defaults are interpreted, or whether the case must already exist. This is a significant gap for a mutation-like tool.

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 two sentences with no filler. The main purpose is stated first, and the units sentence provides essential context without redundancy.

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 8 parameters, no schema descriptions, no annotations, and the complexity of a simulation workflow, the description is too sparse. It omits crucial context such as the requirement for an existing case, the meaning of mesh-resolution parameters, and the behavior when optional parameters are left as null. The presence of an output schema does not mitigate these gaps.

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

Parameters3/5

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

The description groups parameters into categories (geometry, fluid properties, mesh resolution) and specifies units for length, viscosity, density, and velocity. However, it does not explain n_axial and n_radial beyond 'mesh resolution' and does not clarify the null-default semantics. With 0% schema coverage, the description only partially compensates.

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's action ('Set') and resource ('Hagen–Poiseuille pipe geometry, fluid properties, and mesh resolution'). It distinguishes the tool from siblings like generate_mesh and start_solver, though it does not explicitly mention that parameters are set on an existing case.

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 provides no guidance on when to use the tool relative to its siblings, e.g., after creating a case and before generating a mesh. It also does not mention any prerequisites or alternatives.

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

start_solverA

Start the OpenFOAM solver as a background job. Returns job_id immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
solverNo
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses that the solver runs as a background job and returns a job_id immediately. However, it omits side effects (e.g., file modifications), error conditions, and how to check progress, which are important for a mutation-like tool.

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 sentence with 12 words, no fluff, and front-loads the action and return behavior. Every word earns its place.

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?

While an output schema exists (so return format is covered), the description is thin on operational context. It doesn't mention that job_id can be used with sibling tools like get_job_status or stop_job, nor does it state prerequisites such as an existing case. Still, for a minimal start tool, it provides the essential 'what' and basic 'how'.

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%, and the description does not explain the parameters. 'case_name' is self-explanatory from its name, but 'solver' is ambiguous and not described in any way. The optional nature of 'solver' is not mentioned in the description, leaving the agent to guess its meaning.

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 uses a specific verb and resource: 'Start the OpenFOAM solver as a background job.' This clearly distinguishes it from sibling tools like generate_mesh or list_cases. It also adds the asynchronous behavior (background job) and immediate job_id return, making the tool's purpose unambiguous.

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 (when you want to run the solver) but provides no explicit guidance on when to use this tool versus alternatives, prerequisites (e.g., existing case, mesh), or exclusions. No mention of how job_id connects to monitoring tools like get_job_status.

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

stop_jobA

Stop a running job. force=true sends SIGKILL.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It reveals that force=true sends SIGKILL (implying a non-force stop is gentler), but it does not disclose whether the stop is reversible, what happens to data or state, whether special permissions are needed, or any side effects. This meets the minimum for a stop operation but leaves significant behavioral gaps.

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 two short sentences with zero wasted words. It front-loads the primary action and follows with a critical parameter detail. Every word earns its place.

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, but the description leaves out important operational context that could affect agent decisions, such as whether stopping is irreversible, whether force=true is recommended in certain scenarios, or whether the tool returns a status/error state (though an output schema exists). The description is sufficient for basic use but lacks depth for a robust agent.

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 explains the 'force' parameter's effect (sends SIGKILL), which clarifies the boolean's meaning beyond the schema. The 'job_id' parameter is self-explanatory and doesn't require elaboration. This adds value but does not fully document all parameter nuances (e.g., job_id format).

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 uses a specific verb ('Stop') and a clear resource ('a running job'), unambiguously stating the tool's core function. It is distinct from all sibling tools, which focus on listing, creating, or managing cases/meshes/solvers, not on stopping jobs.

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 clearly implies when to use the tool (to stop a running job) and even hints at a conditional ('force=true'), but it does not explicitly state when to use this tool over alternatives or any exclusions (e.g., cannot stop jobs already finished). It provides context but lacks direct guidance on alternatives or when not to use it.

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

summarize_resultsC

Summarize latest results for spoken delivery (times, parameters, residuals).

ParametersJSON Schema
NameRequiredDescriptionDefault
case_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/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 does not disclose whether the operation is read-only, what 'spoken delivery' implies, potential side effects, or any limitations. The description is purely functional and lacks behavioral depth.

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 sentence with no filler words. It front-loads the core action ('Summarize latest results') and succinctly lists the result categories. Every word earns its place, exemplifying strong conciseness.

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?

With one parameter and 0% schema coverage, the description does not explain the purpose of case_name or any usage context. An output schema exists, so return format is covered, but the tool's purpose relative to case inputs and the meaning of 'spoken delivery' remain unclear, making the description inadequate for full contextual understanding.

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?

The description does not mention the parameter case_name, and schema coverage is 0%. It provides no explanation of how the parameter is used or what values it accepts beyond the schema's bare type definition. The description adds zero semantic value for the parameter.

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 states the tool summarizes latest results, specifying the content (times, parameters, residuals) and the intended use case (spoken delivery). This clearly identifies the tool's purpose and differentiates it from siblings like get_logs or compare_to_analytical, though it does not 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 Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. The description does not mention prerequisites, typical scenarios, or exclusions. It simply states what the tool does, leaving the agent without context for selection.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct aspect of the CFD workflow—case lifecycle, mesh generation, solver jobs, or result analysis—so an agent can reliably select the right one. The slight similarity between describe_case and summarize_results is mitigated by their clear separation of case state versus result outcome.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., list_cases, create_case, generate_mesh). Even longer names like set_pipe_parameters and export_for_paraview maintain the same verb-first structure, making the pattern predictable.

Tool Count4/5

At 16 tools, the count is slightly above the typical 3–15 sweet spot, but each tool maps to a necessary step in the CFD pipeline—templates, cases, mesh, solver, results, and export. No tool feels redundant, and the granularity supports a coherent workflow.

Completeness4/5

The tool surface covers the full lifecycle from template listing and case creation through mesh generation, solver execution, job monitoring, result summarization, and ParaView export. Minor gaps, such as editing arbitrary case files or importing custom templates, are outside the apparent intended scope and can likely be worked around.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables natural language-driven ANSYS simulations (Fluent, Mechanical, Geometry) with automatic TUI script generation for reproducibility.
    41
    6
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Automates OpenFOAM CFD simulations via MCP, enabling AI agents to mesh, run, and post-process cases from natural language prompts without any API keys.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables controlling a live Abaqus/CAE session through natural language, allowing model inspection, job submission, ODB analysis, and viewport capture.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that enables AI assistants to interact with Ansys CFX through PyCFX, supporting natural-language-assisted CFX-Pre, CFX Solver, and CFD-Post workflows for setup, execution, and postprocessing.
    7
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gpu7/vCFD'

If you have feedback or need assistance with the MCP directory API, please join our Discord server