vCFD
The vCFD MCP server lets an AI/voice agent manage OpenFOAM CFD cases end-to-end — from template-based case creation through meshing, async solving, job monitoring, result analysis, and ParaView export.
Discover templates & cases:
list_templates,list_cases(with mesh/time status),describe_caseCase lifecycle:
create_case(from a template likehagen_poiseuille),delete_case,clean_case(both requireconfirm=true)Pipe setup:
set_pipe_parametersfor geometry (radius, length), fluid properties (density, viscosity), and mesh resolution (n_axial, n_radial), plus bulk velocityMeshing:
generate_mesh(blockMesh, optionally async) andcheck_meshfor quality summariesSolving (async jobs):
start_solver(returns job_id immediately),get_job_status,get_logs(residual-friendly tail),stop_job(SIGTERM or forced SIGKILL)Results:
summarize_resultsfor spoken-friendly summaries andcompare_to_analyticalagainst the Hagen–Poiseuille solutionVisualization export:
export_for_paraviewvia foamToVTK, with optional zip packaging
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vCFD Create a Hagen-Poiseuille pipe case and run the simulation."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 syncRun tests (mock OpenFOAM)
uv run pytest -qRun MCP server (stdio)
export VCFD_OPENFOAM_MODE=mock # or docker | native
./scripts/dev_stdio.shAttach to Grok Build
grok mcp add vcfd -- uv run --directory /path/to/vCFD vcfd-mcpOr configure in ~/.grok/config.toml:
[mcp_servers.vcfd]
command = "uv"
args = ["run", "--directory", "/path/to/vCFD", "vcfd-mcp"]
env = { VCFD_OPENFOAM_MODE = "mock" }
enabled = trueFirst case: Hagen–Poiseuille pipe
Through MCP tools (or voice):
create_case(name="pipe1", template="hagen_poiseuille")set_pipe_parameters(case_name="pipe1", radius=0.05, bulk_velocity=0.1)generate_mesh(case_name="pipe1")→check_mesh(...)start_solver(case_name="pipe1")→get_job_status(job_id=...)summarize_results/compare_to_analyticalexport_for_paraview→ open zip/VTK in ParaView
OpenFOAM modes
Mode | Env | Use when |
|
| Unit tests, no OF install |
|
| Mac or EC2 with Docker |
|
| Ubuntu with OF packages |
See .env.example for all settings.
Voice agent (Grok Voice Agent Builder)
Deploy public MCP (EC2:
./deploy/aws/launch-ec2.sh).Follow
prompts/voice_agent_builder.md— console steps + MCP fields.System prompt:
prompts/voice_agent_system.md.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 MCPAWS 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.shDetails: 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 helpersLicense
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 SiliconGrok 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.shResults 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 --latestGrok Build MCP
Project config is already set (docker mode):
grok mcp list
# tools available after restart / new session in this directorySupport
Dark Factory
Richard Casey
richardcaseyhpc@protonmail.com
+1 970-980-5975
Available Tools
16 toolscheck_meshC
Run checkMesh and return a quality summary.
Inputs: case_name (required). Returns: object
clean_caseA
Remove time directories and post-processing output; keep 0/, constant/, system/.
Requires confirm=true.
Inputs: case_name (required), confirm. Returns: object
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).
Inputs: case_name (required). Returns: object
create_caseA
Create a new OpenFOAM case from a template.
Inputs: name (required), template, description. Returns: object
delete_caseA
Permanently delete a case directory. Requires confirm=true.
Inputs: case_name (required), confirm. Returns: object
describe_caseB
Describe a case: template, mesh status, parameters, latest time, solver.
Inputs: case_name (required). Returns: object
export_for_paraviewB
Export case for ParaView via foamToVTK and optional zip package on disk.
Inputs: case_name (required), make_zip. Returns: object
generate_meshA
Run blockMesh for the case. Use background=true for async job.
Inputs: case_name (required), background. Returns: object
get_job_statusA
Get status of a job by job_id, or list jobs for a case / all jobs.
Inputs: job_id, case_name. Returns: object
get_logsC
Return the tail of a solver/mesh job log (filtered residual-friendly).
Inputs: job_id (required), lines. Returns: object
list_casesA
List CFD cases in the workspace with mesh and time status.
Inputs: no named parameters. Returns: object
list_templatesA
List available OpenFOAM case templates (e.g. hagen_poiseuille).
Inputs: no named parameters. Returns: object
set_pipe_parametersC
Set Hagen–Poiseuille pipe geometry, fluid properties, and mesh resolution.
Units: meters, Pa·s (dynamic viscosity), kg/m³, m/s.
Inputs: case_name (required), length, radius, density, +4 more. Returns: object
start_solverA
Start the OpenFOAM solver as a background job. Returns job_id immediately.
Inputs: case_name (required), solver. Returns: object
stop_jobA
Stop a running job. force=true sends SIGKILL.
Inputs: job_id (required), force. Returns: object
summarize_resultsC
Summarize latest results for spoken delivery (times, parameters, residuals).
Inputs: case_name (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Speech-to-Text
MCP-Native LLM Orchestration Agent
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables natural language-driven ANSYS simulations (Fluent, Mechanical, Geometry) with automatic TUI script generation for reproducibility.416MIT
- AlicenseNot gradedqualityAmaintenanceAutomates OpenFOAM CFD simulations via MCP, enabling AI agents to mesh, run, and post-process cases from natural language prompts without any API keys.MIT

Ansys CFX-MCPofficial
AlicenseAqualityBmaintenanceAn 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.71,053 PyPI3Apache 2.0- AlicenseNot gradedqualityCmaintenanceTurns an AI assistant into an OpenFOAM setup and debugging co-pilot, enabling case scaffolding, dictionary edits, mesh sizing, turbulence calculations, and solver log analysis through natural language.MIT