profili-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROFILI_DIR | No | Path to the installed Profili 2.x directory (containing Profili.exe, Profili.mdb and Xfoil.exe). Can also be supplied via the install_dir tool parameter or auto-discovered. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_statusA | Probe the Profili installation: paths, database row counts, whether the GUI is running, and platform notes. Call this first. |
| launch_profiliC | Start the Profili GUI. |
| close_profiliB | Close all running Profili GUI instances. |
| list_librariesC | List airfoil libraries defined in the Profili database. |
| search_airfoilsC | Search the 2200+ airfoil library. |
| get_airfoil_geometryB | Get an airfoil's metadata + full coordinates (chord fractions, LE->TE for both surfaces). |
| export_airfoil_datC | Export an airfoil from the library to a Profili .dat coordinate file. |
| import_airfoil_datB | Import a .dat coordinate file into the Profili library. The database is backed up first unless backup=False. Restart Profili afterwards if it was already running. |
| list_polarsC | List the Reynolds numbers for which stored polars exist. |
| get_polarB | Get the stored polar (CL/CD/CM vs alpha, degrees) at the Reynolds number
closest to |
| find_airfoils_by_polarB | Search airfoils by aerodynamic performance at one operating point. Narrows by name prefix first (the polar table is huge), then evaluates the
polar at |
| analyze_airfoilB | Compute a fresh viscous polar with the bundled XFOIL (same recipe as Profili's own solver). If save_to_db=True the result is written into the Profili library and appears in the GUI after restart. |
| analyze_nacaB | Compute a polar for any NACA 4/5-digit airfoil without touching the library (XFOIL generates the geometry itself). |
| redesign_airfoilB | Rescale max thickness and/or camber (chord fractions) via XFOIL GDES TSET — the same 'modify airfoil' recipe Profili uses internally. If save_as is given, the new geometry is saved into the library under that name (and as a .dat file next to it). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools target clearly distinct actions: listing, probing, GUI lifecycle, library search, geometry retrieval, import/export, polar lookup, fresh XFOIL analysis, and geometry redesign. The only plausible confusion is between get_polar (stored polar) and analyze_airfoil (fresh computed polar), plus find_airfoils_by_polar vs search_airfoils, but the descriptions make the stored-vs-computed and name-vs-performance distinctions explicit.
Every tool follows a consistent snake_case verb_noun pattern (list_polars, get_status, search_airfoils, export_airfoil_dat, analyze_naca). Domain nouns are used uniformly, and the launch_/close_ pair is symmetric.
14 tools is squarely within the well-scoped range and each tool maps to a distinct capability (inspection, GUI control, library CRUD-ish operations, aerodynamics analysis). No obvious filler or redundant tools.
The surface covers discovery, inspection, geometry access, import/export, polar analysis, and geometry modification, which covers the main airfoil-database workflows. Notable gaps are deletion/rename of library airfoils and any library-creation operation, though these are safely workable around via import/export.