Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Official MCP server for vehicle wheel and tire fitment data from wheel-size.com
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
WHEELSIZE_API_KEYValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"wheel-size": {
"command": "uvx",
"args": [
"wheel-size-mcp"
],
"env": {
"WHEELSIZE_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add wheel-size --env WHEELSIZE_API_KEY=your-value -- uvx wheel-size-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"wheel-size": {
"command": "uvx",
"args": [
"wheel-size-mcp"
],
"env": {
"WHEELSIZE_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"wheel-size": {
"type": "stdio",
"command": "uvx",
"args": [
"wheel-size-mcp"
],
"env": {
"WHEELSIZE_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account driveate, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: WHEELSIZE_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.7.1) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Tethered Trust
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Fit, compatibility and recall checks for AI agents before they buy: verdicts, evidence, receipts.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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:
Sign up at developer.wheel-size.com and copy your API key.
Add to your ~/.zshrc (or ~/.bashrc):
export WHEELSIZE_API_KEY="your-api-key-here"
Then reload your shell: source ~/.zshrc
Choose your client below — each config block is copy-paste ready.
claude mcp add wheel-size-api -- uvx wheel-size-mcp
Or add to .mcp.json in your project root:
{
"mcpServers": { "wheel-size-api": { "command": "uvx", "args": ["wheel-size-mcp"], "env": { "WHEELSIZE_API_KEY": "${WHEELSIZE_API_KEY}" } } } }
Add to claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": { "wheel-size-api": { "command": "uvx", "args": ["wheel-size-mcp"], "env": { "WHEELSIZE_API_KEY": "your-api-key-here" } } } }
Add to .cursor/mcp.json in your project root:
{
"mcpServers": { "wheel-size-api": { "command": "uvx", "args": ["wheel-size-mcp"], "env": { "WHEELSIZE_API_KEY": "your-api-key-here" } } } }
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": { "wheel-size-api": { "command": "uvx", "args": ["wheel-size-mcp"], "env": { "WHEELSIZE_API_KEY": "your-api-key-here" } } } }
Add to your Zed settings.json (Cmd+, → Open Settings):
{
"context_servers": { "wheel-size-api": { "command": { "path": "uvx", "args": ["wheel-size-mcp"], "env": { "WHEELSIZE_API_KEY": "your-api-key-here" } } } } }
The MCP server starts automatically when the client launches.
Besides stdio, the server can run as a standalone HTTP service — useful for hosting one shared instance instead of installing Python on every machine:
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:
{
"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.
| Tool | Description |
|---|---|
ws_list_makes | List all manufacturers. Start here. |
ws_list_models | Models for a make (e.g. Toyota → Camry, Corolla…). |
ws_list_years | Available years for a make/model. |
ws_list_generations | Generations for a make/model (alternative to years). |
ws_list_modifications | Trims for a specific vehicle (e.g. 2.0i, 3.0 V6…). |
ws_list_regions | Market regions (USDM, EUDM, JDM…). |
| Tool | Description |
|---|---|
ws_search_by_vehicle | OEM wheel/tire specs for a vehicle. Requires modification or region, plus year or generation (unless modification is given). |
ws_search_by_rim | Find vehicles compatible with a rim (exact specs or min/max ranges). |
ws_search_by_tire | Find vehicles by metric tire size, with speed/load/staggered filters and refinement facets. |
ws_search_by_hf_tire | Find 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_vehicle | Same for a metric tire size. |
ws_check_hf_tire_fitment_for_vehicle | Same for a high-flotation tire size. |
ws_calculate_upsteps | Plus/minus sizing calculator: asymmetric diameter range (steps_min/steps_max), per-diameter counts, width/diameter tolerances. |
| Tool | Description |
|---|---|
ws_find_tires_for_rim | Compatible tire sizes for a rim spec. |
ws_find_vehicles_for_rim | Vehicles that fit a given rim (geometric 2D filtering). |
ws_find_vehicle_modifications_for_rim | Drill down into trims for a specific generation. |
ws_find_vehicles_for_tire | Vehicles that use a specific tire size. |
ws_find_vehicle_modifications_for_tire | Drill down into trims for a generation that uses the tire. |
ws_find_vehicles_for_package | Vehicles compatible with a rim + tire combo. |
ws_find_vehicle_modifications_for_package | Drill down into trims for a rim + tire package. |
| Tool | Description |
|---|---|
ws_get_spec_metadata | Computed geometry, population stats, and intelligence hints for any spec. |
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:
{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.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.
Pre-built workflow prompts that guide LLM agents through multi-step operations:
| Prompt | Description |
|---|---|
vehicle_fitment_lookup | Complete catalog→search chain for a vehicle description |
rim_compatibility_check | Metadata→classified flow for rim compatibility |
product_card_generation | E-commerce product card workflow for wheels/packages |
| Variable | Required | Default | Description |
|---|---|---|---|
WHEELSIZE_API_KEY | Yes | — | API key from developer.wheel-size.com |
API_BASE_URL | No | https://api.wheel-size.com | API base URL |
API_HOST_HEADER | No | — | Host header override (only needed for local Docker routing) |
MCP_TRANSPORT | No | stdio | stdio or http (same as --transport) |
MCP_HOST | No | 127.0.0.1 | Bind address for http transport (same as --host) |
MCP_PORT | No | 8000 | Port for http transport (same as --port) |
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.
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:
# needs ANTHROPIC_API_KEY and a reachable Wheel Fitment API; costs money
uv sync --group evals uv run --group evals python evals/run_evals.py # all questions uv run --group evals python evals/run_evals.py -n 10 # smoke run uv run --group evals python evals/run_evals.py --category catalog_flow uv 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.
# Install dev dependencies
uv sync --dev
uv run pytest -m "not integration"
uv run pytest
uv run ruff check .
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.