Wheel Fitment API

io.github.driveatePublished by GitHub account driveatev0.7.1Updated Oct 24, 2026

Official MCP server for vehicle wheel and tire fitment data from wheel-size.com

Overview

AI-generated overview

Official Wheel Fitment API server that lets an assistant look up vehicle wheel and tire specs, check rim and tire compatibility, and build fitment product…

What you can do
  • Browse the vehicle catalog: makes, models, years, generations, trims and market regions
  • Search OEM wheel and tire specs for a vehicle, or find vehicles that fit a given rim, metric tire or high-flotation tire
  • Check in one call whether a specific rim or tire fits a given vehicle
  • Calculate plus/minus upstep sizing options for a wheel or tire
  • Build e-commerce product cards: tires for a rim, vehicles for a rim, tire or rim+tire package, with trim drill-down
  • Read computed geometry, population stats and spec metadata, plus engine and powertrain blocks
When to use it
Useful when you need authoritative wheel and tire fitment answers: OEM specs for a specific car, reverse lookups of which vehicles fit a rim or tire, fitment checks, upstep sizing, or generating wheel product cards for a shop.
Requirements
Runs locally as a Python package (wheel-size-mcp) launched via uvx, or as a self-hosted HTTP service. Requires an API key from the provider, supplied in the WHEELSIZE_API_KEY environment variable, and network access to the Wheel Fitment API. Optional variables set the API base URL, transport, host and port.
Before you install
The API key is a paid-quota credential: anyone who can reach a self-hosted HTTP port consumes your quota, so keep it on localhost or behind an authenticating proxy. Search and classified tools must be initiated by real users per the API terms, not run in autonomous loops or for bulk data generation. Queries and vehicle data go to the provider's API.

Installation

In SourceWeft

  1. Open Wheel Fitment API in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

wheel-size-mcp

The official MCP server for the Wheel Fitment API — built and maintained by Wheel-Size.com, the API provider. Gives LLM agents access to vehicle wheel and tire compatibility data.

Ask your AI assistant things like:

  • "What are the OEM wheel specs for a 2024 Toyota Camry?"
  • "Which vehicles fit 5x114.3 18x8 ET35 rims?"
  • "Calculate plus-size options for 225/50R17 on 7Jx17 ET40"
  • "Generate a product card for this wheel showing all compatible vehicles"

Quick Start

1. Get an API key

Sign up at developer.wheel-size.com and copy your API key.

2. Set the API key in your shell

Add to your ~/.zshrc (or ~/.bashrc):

bash
export WHEELSIZE_API_KEY="your-api-key-here"

Then reload your shell: source ~/.zshrc

3. Add to your AI client

Choose your client below — each config block is copy-paste ready.

Claude Code
bash
claude mcp add wheel-size-api -- uvx wheel-size-mcp

Or add to .mcp.json in your project root:

json
{  "mcpServers": {    "wheel-size-api": {      "command": "uvx",      "args": ["wheel-size-mcp"],      "env": {        "WHEELSIZE_API_KEY": "${WHEELSIZE_API_KEY}"      }    }  }}
Claude Desktop

Add to claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

json
{  "mcpServers": {    "wheel-size-api": {      "command": "uvx",      "args": ["wheel-size-mcp"],      "env": {        "WHEELSIZE_API_KEY": "your-api-key-here"      }    }  }}
Cursor

Add to .cursor/mcp.json in your project root:

json
{  "mcpServers": {    "wheel-size-api": {      "command": "uvx",      "args": ["wheel-size-mcp"],      "env": {        "WHEELSIZE_API_KEY": "your-api-key-here"      }    }  }}
Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "wheel-size-api": {      "command": "uvx",      "args": ["wheel-size-mcp"],      "env": {        "WHEELSIZE_API_KEY": "your-api-key-here"      }    }  }}
Zed

Add to your Zed settings.json (Cmd+, → Open Settings):

json
{  "context_servers": {    "wheel-size-api": {      "command": {        "path": "uvx",        "args": ["wheel-size-mcp"],        "env": {          "WHEELSIZE_API_KEY": "your-api-key-here"        }      }    }  }}

4. Restart your client

The MCP server starts automatically when the client launches.

Remote Server (Streamable HTTP)

Besides stdio, the server can run as a standalone HTTP service — useful for hosting one shared instance instead of installing Python on every machine:

bash
wheel-size-mcp --transport http --port 8000

The MCP endpoint is served at http://127.0.0.1:8000/mcp/. Point HTTP-capable clients at it:

json
{  "mcpServers": {    "wheel-size-api": {      "url": "http://127.0.0.1:8000/mcp/"    }  }}

Security: the server binds to 127.0.0.1 by default. The WHEELSIZE_API_KEY lives on the server side, so anyone who can reach the port consumes your API quota — expose it beyond localhost (--host 0.0.0.0) only behind a reverse proxy that handles authentication.

Available Tools (22)

Catalog — vehicle lookup

ToolDescription
ws_list_makesList all manufacturers. Start here.
ws_list_modelsModels for a make (e.g. Toyota → Camry, Corolla…).
ws_list_yearsAvailable years for a make/model.
ws_list_generationsGenerations for a make/model (alternative to years).
ws_list_modificationsTrims for a specific vehicle (e.g. 2.0i, 3.0 V6…).
ws_list_regionsMarket regions (USDM, EUDM, JDM…).

Search — fitment data

ToolDescription
ws_search_by_vehicleOEM wheel/tire specs for a vehicle. Requires modification or region, plus year or generation (unless modification is given).
ws_search_by_rimFind vehicles compatible with a rim (exact specs or min/max ranges).
ws_search_by_tireFind vehicles by metric tire size, with speed/load/staggered filters and refinement facets.
ws_search_by_hf_tireFind vehicles by high-flotation (LT) inch size (e.g. 31x10.50R15).
ws_check_rim_fitment_for_vehicle"Will these rims fit my 2020 Civic?" — one-call fitment check.
ws_check_tire_fitment_for_vehicleSame for a metric tire size.
ws_check_hf_tire_fitment_for_vehicleSame for a high-flotation tire size.
ws_calculate_upstepsPlus/minus sizing calculator: asymmetric diameter range (steps_min/steps_max), per-diameter counts, width/diameter tolerances.

Classified — product cards for e-commerce

ToolDescription
ws_find_tires_for_rimCompatible tire sizes for a rim spec.
ws_find_vehicles_for_rimVehicles that fit a given rim (geometric 2D filtering).
ws_find_vehicle_modifications_for_rimDrill down into trims for a specific generation.
ws_find_vehicles_for_tireVehicles that use a specific tire size.
ws_find_vehicle_modifications_for_tireDrill down into trims for a generation that uses the tire.
ws_find_vehicles_for_packageVehicles compatible with a rim + tire combo.
ws_find_vehicle_modifications_for_packageDrill down into trims for a rim + tire package.

Utility

ToolDescription
ws_get_spec_metadataComputed geometry, population stats, and intelligence hints for any spec.

Engine and Powertrain Data

Since the API release of 2026-09-15, every modification row returned by ws_list_modifications, ws_search_by_vehicle and the ws_check_*_fitment_for_vehicle tools carries two sibling blocks:

  • engine — the legacy block {fuel, capacity, type, power, code}, unchanged. engine.power is the headline figure whose source depends on the electrification level (combustion engine for combustion-only cars and mild hybrids, system power for full/plug-in hybrids and EVs). engine.fuel is a display string; group and filter on the powertrain fuel codes instead.
  • powertrain — combustion_engine, electrification_level, primary_fuel, secondary_fuel, engine_power, system_power, engine_power_secondary, motors. ws_search_by_vehicle returns the block as the API sends it ({kW, PS, hp} power objects, {code, title} fuel refs); the list and fitment-check tools return a compact summary (hp figures, fuel codes, motors [{axle, hp, code}]) to stay within token limits.

Absence words in enums and fuel codes are data, not errors: not_applicable (cannot apply — a BEV has no engine), not_reported (applies, not recorded yet), unknown (neither electrification tier nor fuel recorded). engine_power is the combustion engine alone and is the figure most other vehicle-data providers publish as "power" (on bi-fuel vehicles it may still be the higher of the engine's two ratings while engine_power_secondary is being filled in); system_power is the manufacturer-declared total of the whole powertrain, normally null outside full/plug-in hybrids and EVs with a motor on each axle, and must never be reconstructed by adding engine and motor figures.

The fuel filter of ws_list_modifications takes fuel codes (biodiesel_blend, cng, diesel, e100, electric, ethanol_blend, flex_fuel, h2, hybrid, lpg, petrol, petrol_cng, petrol_lpg); one value matches the legacy engine.fuel, the primary fuel or the secondary fuel, and a real code read from powertrain.primary_fuel / secondary_fuel can be passed straight back. Older spellings such as natural-gas are still accepted; the absence words (not_applicable, not_reported, unknown) and anything else are a 400 error.

MCP Prompts

Pre-built workflow prompts that guide LLM agents through multi-step operations:

PromptDescription
vehicle_fitment_lookupComplete catalog→search chain for a vehicle description
rim_compatibility_checkMetadata→classified flow for rim compatibility
product_card_generationE-commerce product card workflow for wheels/packages

Environment Variables

VariableRequiredDefaultDescription
WHEELSIZE_API_KEYYes—API key from developer.wheel-size.com
API_BASE_URLNohttps://api.wheel-size.comAPI base URL
API_HOST_HEADERNo—Host header override (only needed for local Docker routing)
MCP_TRANSPORTNostdiostdio or http (same as --transport)
MCP_HOSTNo127.0.0.1Bind address for http transport (same as --host)
MCP_PORTNo8000Port for http transport (same as --port)

API Terms of Service

Search tools (ws_search_by_vehicle, ws_search_by_rim, ws_search_by_tire, ws_search_by_hf_tire, the ws_check_*_fitment_for_vehicle checks) and classified tools (ws_find_*) must be initiated by real users per API Terms of Usage. Do not call them in autonomous agent loops or for bulk data generation. Catalog tools, utility tools and ws_calculate_upsteps have no such restriction.

Evals

tests/test_questions.json contains 89 natural-language questions across 12 categories (catalog navigation, fitment lookups, reverse searches, fitment checks, upstep calculation, e-commerce product cards, spec metadata, multi-step workflows, edge cases, tool selection). Each entry includes expected_tools, optional expected_params / expected_params_search, and a free-text tests note.

evals/run_evals.py feeds these questions to a real Claude model with the MCP tools attached, records which tools it calls with which parameters, and grades them against the expectations — catching regressions in tool descriptions and server instructions:

bash
# needs ANTHROPIC_API_KEY and a reachable Wheel Fitment API; costs moneyuv sync --group evalsuv run --group evals python evals/run_evals.py                  # all questionsuv run --group evals python evals/run_evals.py -n 10            # smoke runuv run --group evals python evals/run_evals.py --category catalog_flowuv run --group evals python evals/run_evals.py --json report.json --min-pass 0.8

Grading is deterministic (no LLM judge): every expected tool must be called (multiset — repeats counted, extra navigation calls allowed), and some single call must carry the expected parameters. Questions without machine-checkable expectations are reported as SKIP and excluded from the pass rate. The default model is pinned (claude-sonnet-5) so pass-rate history stays comparable; override with --model.

The eval runner is not part of pytest or CI — it bills the Anthropic API. The grading logic itself is unit-tested in CI (tests/test_eval_grading.py). ToS note: every question simulates a user-initiated request, so the search-tool restriction is respected.

Development

bash
# Install dev dependenciesuv sync --dev
# Unit tests (no API needed — this is what CI runs)uv run pytest -m "not integration"
# Full test suite (requires a private API instance, see note below)uv run pytest
# Lintuv run ruff check .
# Run server (stdio)wheel-size-mcp

Note on tests: integration tests run against a private test instance of the API and auto-skip when it is unreachable. External contributors should rely on the unit suite (pytest -m "not integration"), which mocks all HTTP and is what CI runs on every push and pull request.

Source: README.md at commit a755ea2

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v0.7.1LatestSep 17, 2026
  2. v0.6.0Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts