Menu

AI

uvx Not Found (spawn uvx ENOENT) in MCP: How to Fix It (Claude Desktop, Cursor, Claude Code)

Fix "uvx not found" and spawn uvx ENOENT for Python MCP servers. Install uv, find the full uvx path, put it in your config, and pick the right Python version.

By: Irina ShvayaNovember 2, 2026

uvx Not Found (spawn uvx ENOENT) in MCP: How to Fix It (Claude Desktop, Cursor, Claude Code)

This fix is part of MCP troubleshooting, within The MCP Guide. Still stuck? Request a free MCP readiness review.

"uvx not found" or spawn uvx ENOENT means your MCP client tried to run a Python server with uvx, and could not find the uvx program. Either uv is not installed, or it is installed in a folder the client does not search. The fastest fix is to install uv if needed, run which uvx (macOS, Linux) or where uvx (Windows), paste that full path into the command field, and restart the client.

Checked against: uv's installation guide, uv's guide to running tools, the MCP build-a-server tutorial and servers issue #40 on 2 November 2026. eSEOspace did not run these steps on each OS.

Key Takeaways

  • uvx comes with uv. uv's docs say it is "provided as an alias for convenience" for uv tool run.
  • uv's standalone installer puts uv and uvx in ~/.local/bin on macOS and Linux, and in $HOME\.local\bin on Windows.
  • GUI apps often do not have ~/.local/bin on their PATH, so a bare uvx fails even when it works in your terminal.
  • The MCP build tutorial says you "may need to put the full path to the uv executable in the command field."
  • If the server needs a certain Python version, uvx --python 3.12 package-name picks it.

What this error means

Many Python MCP servers are published on PyPI and documented with a config like "command": "uvx". When the client starts the server, it looks for a program named uvx. ENOENT is the error code for "not found."

A user in servers issue #40 posted the exact log text: "Could not start MCP server sqlite: Error: spawn uvx ENOENT." Their fix was to run which uvx and use that absolute path in claude_desktop_config.json.

Why does uvx work in your terminal? Your shell profile adds uv's folder to PATH. The MCP debugging guide says stdio servers "inherit only a limited subset of environment variables," and desktop apps do not read your shell profile.

Quick fix

  1. Check uv is installed. Run uv --version in a terminal.
  2. Install it if missing. From uv's installation guide:
# macOS and Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

uv's guide also lists brew install uv, winget install --id=astral-sh.uv -e and pipx install uv.

  1. Find the full path. which uvx on macOS or Linux, where uvx on Windows.
  2. Use it in the config. Replace "command": "uvx" with the full path.
  3. Warm the cache. Run the server command once in a terminal so the first launch from the app does not have to download packages.
  4. Restart the client fully.

Example:

{
  "mcpServers": {
    "git": {
      "command": "/Users/you/.local/bin/uvx",
      "args": ["mcp-server-git", "--repository", "/Users/you/code/project"]
    }
  }
}

On Windows the path looks like C:\\Users\\you\\.local\\bin\\uvx.exe inside JSON.

Fix by client / OS

Claude Desktop

Edit the config through Settings > Developer > Edit Config, then quit from the menu bar (macOS) or tray icon (Windows). If you run your own Python server with uv run, the build tutorial shows this pattern, with an absolute path to your project:

{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": ["--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather", "run", "weather.py"]
    }
  }
}

Replace "uv" with its full path if Claude Desktop cannot find it.

Cursor

Edit ~/.cursor/mcp.json or .cursor/mcp.json. Cursor's MCP docs support ${userHome}, so "${userHome}/.local/bin/uvx" keeps the config portable across machines with the same layout. Check Output > MCP Logs.

Claude Code

Add the server with the full path after the -- separator, as the Claude Code MCP docs show for any stdio server:

claude mcp add --transport stdio git -- /Users/you/.local/bin/uvx mcp-server-git

Older uv installs

uv's guide says that before version 0.5.0, uv was installed into ~/.cargo/bin. If which uvx points there, that path works too, but you may want to update with uv self update (standalone installs only).

Where to find the logs

  • Claude Desktop: mcp.log in ~/Library/Logs/Claude (macOS), %APPDATA%\Claude\logs (Windows) or ~/.config/Claude/logs (Linux).
  • Cursor: Output panel, MCP Logs.
  • Claude Code: claude mcp get <name> shows the error on an Issue: line.

If it still fails

  • uvx runs but the server crashes. Read the server's stderr log. A Python version mismatch is common. uv's tools guide says "you can specify the Python interpreter to use with the --python option," for example uvx --python 3.12 mcp-server-git. The MCP Python tutorial lists Python 3.10 or higher.
  • The server needs your project's packages. uv's docs say uvx runs tools in "temporary, isolated environments." Use uv run inside the project instead.
  • Pin versions. uv's docs say uvx <command>@<version> runs an exact version, and @latest the newest. Pinning avoids surprise upgrades.
  • Test in the Inspector. The Inspector docs show npx @modelcontextprotocol/inspector uvx mcp-server-git --repository ~/code/mcp/servers.git.
  • Same error with npx? See spawn npx ENOENT.

Look up any other code with the MCP error code lookup. If you are building a Python server, the course lesson your first tool in Python walks through setup, and our MCP development team can help with packaging.

More in the MCP Guide

Free tools: MCP Error Code Lookup · MCP Config Generator

Latest research: State of MCP: October 2026

Frequently asked questions

What is uvx?

It is a shortcut for uv tool run, which runs a Python command-line tool in a temporary, isolated environment. Many Python MCP servers tell you to start them with uvx.

Why does uvx work in Terminal but not in Claude Desktop?

Your terminal loads a profile that adds ~/.local/bin to PATH. Desktop apps usually do not, so they cannot find uvx by name. A full path fixes it.

Do I need Python installed separately?

You need a Python interpreter that uv can use. uv's tools guide says it uses the first interpreter it finds by default, and --python lets you choose one.

Should I use pip instead of uvx?

You can install a server with pip and run its command by full path. uvx is popular because it keeps each server isolated. Pick one approach per machine and document it.

You Might Also like to Read

Get a FREE Website Audit

Enter your website and get a 20–30 page SEO, GEO, AEO & CRO audit within 24 hours. Completely free.

Don't have a site yet? Get in touch →

Ready to speak with a marketing expert?
Give us a call! (916) 866-7893

Websites Launched
1407
Websites Launched
Marketing Experts
29
Marketing Experts
Hours of Dedicated Work
204533
Hours of Dedicated Work
Irina S.Benjamin G.Jeanette M.David G.