@pipeworx/uiuc-airfoils

Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/uiuc-airfoils’s. Install: one-click buttons

Connect to just the @pipeworx/uiuc-airfoils pack

https://gateway.pipeworx.io/uiuc-airfoils/mcp — only @pipeworx/uiuc-airfoils’s own tools, nothing else in the catalog.

No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.

Tools: 2

Airfoil shape coordinates for roughly 1,600 airfoils (NACA, Eppler, Selig, Wortmann, Goettingen, Drela AG, Clark Y, Wright Brothers and many designer-named one-offs), searchable by name or family, with max thickness/camber computed live from the raw coordinates.

Tools

  • uiuc_airfoil_search(query?, family?, limit?) — search by name, keyword, or exact family (e.g. "naca", "eppler", "goe", "2412", family: "Wortmann"). With no filters, returns the total catalog size and the known family list. Always returns the total match count first; a no-match response names the filters tried.
  • uiuc_airfoil_geometry(name, include_coordinates?) — fetches one airfoil’s coordinate file live and returns its point count, coordinate format, max thickness and max camber (each as a fraction of chord, with the chordwise station they occur at), and the method used to compute them. Pass include_coordinates: true to also get the raw upper/lower surface point arrays.

Auth

Keyless.

Data sources

  • University of Illinois Urbana-Champaign, Applied Aerodynamics Group, UIUC Airfoil Coordinates Database — airfoil shape coordinates and their one-line descriptions. Never a route or filename here — see src/index.ts and scripts/bake-index.mjs for the routes, which stay out of published copy per CLAUDE.md step 9b.

Licence — checked before building, flagged rather than assumed

Before writing a line of code, I checked the database’s listing page, its parent page, and the site’s robots.txt (a 404 — no restriction stated there either) for a stated licence or redistribution policy. There is none. The only copyright-adjacent text anywhere on the site is a generic, site-wide footer (”© 1994 - 2026 UIUC Applied Aerodynamics Group”) with no accompanying grant or prohibition for the coordinate data itself.

Per the standing rule (proxying a public, keyless upstream per request needs no explicit grant; baking a dataset is redistribution and needs one; when terms are silent, build and flag rather than hold):

  • The actual coordinate values are never baked. uiuc_airfoil_geometry fetches each airfoil’s .dat file live, per call, every time — a straight per-request proxy of one file.
  • uiuc_airfoil_search does read a small baked table of names, one-line descriptions and a coarse family classification (src/uiuc-index-data.ts, ~1,587 rows, regenerated by scripts/bake-index.mjs) — never the coordinates. This is the part resting on the “silent terms, build and flag” branch of the rule rather than an explicit grant.
  • Flag for whoever reviews this next: if UIUC ever publishes an explicit redistribution term for the coordinate data, re-check whether even this name/description/family index still fits it.

Coordinate formats and the thickness/camber method

UIUC’s .dat files come in two layouts, both handled by the parser in src/index.ts:

  • Selig format — one continuous point loop: starts at the trailing edge on the upper surface, runs forward to the leading edge, then back along the lower surface to the trailing edge. No header counts; the parser splits the loop at its minimum-x point (the leading edge).
  • Lednicer format — a header line giving (upperCount, lowerCount), then the upper surface from leading edge to trailing edge, a blank line, then the lower surface from leading edge to trailing edge.

Format is detected per file (a Lednicer header is two small integer-looking values on the first data line; anything else is treated as Selig). Once split into upper(x) and lower(x) surfaces, both are linearly interpolated onto a shared 101-station cosine-spaced grid over chord (x in 0..1 — UIUC’s coordinates are already chord-normalized). From that grid:

  • thickness(x) = upper(x) - lower(x)
  • camber(x) = (upper(x) + lower(x)) / 2

Max thickness and max (signed) camber are the largest values over that grid, reported as a fraction of chord along with the x station they occur at — the same convention NACA’s own 4-digit naming encodes. Verified against NACA 2412 itself: the tool returns 12.0% max thickness at 30% chord and 2.0% max camber at ~40% chord, which is exactly what “2-4-12” means (2% camber at 40% chord, 12% thickness) and exactly where the NACA 4-digit series places max thickness (30% chord) by construction — a strong correctness check, not a coincidence.

Known gaps

  • Family classification is a coarse heuristic over filenames/descriptions (keyword rules in scripts/bake-index.mjs), not an authoritative taxonomy UIUC itself publishes — airfoils that don’t match a known designer/series keyword land in "Other" (currently ~1/3 of the catalog), which is expected, not a bug.
  • A handful of .dat files on the site use nonstandard spacing or trailing annotations the parser can’t make sense of; uiuc_airfoil_geometry then returns geometry_error with the raw parse failure rather than a fabricated number.
  • The baked name index refreshes only when scripts/bake-index.mjs is re-run by hand (UIUC adds a handful of airfoils every year or two via its own “Update Directory” section) — there is no automatic refresh path yet.

Tools

  • uiuc_airfoil_search — Search the UIUC Airfoil Coordinates Database (University of Illinois Urbana-Champaign, Applied Aerodynamics Group) by name or family — e.g. “naca”, “eppler”, “selig”, “goettingen”, “wortmann\
  • uiuc_airfoil_geometry — Fetch one airfoil’s coordinate file live from the UIUC Airfoil Coordinates Database (University of Illinois Urbana-Champaign, Applied Aerodynamics Group) and compute its geometry: point count, max thi

Tools

  • uiuc_airfoil_geometry — Fetch one airfoil's coordinate file live from the UIUC Airfoil Coordinates Database (University of Illinois Urbana-Champaign, Applied Aerodynamics Group) and compute its geometry: point count, max thi
  • uiuc_airfoil_search — Search the UIUC Airfoil Coordinates Database (University of Illinois Urbana-Champaign, Applied Aerodynamics Group) by name or family — e.g. naca , eppler , selig , goettingen , wortmann , drela ag , c

Regenerated from source · build October 19, 2026