Changelog
[2.0.0] - 2026-11-02
Section titled “[2.0.0] - 2026-11-02”A ground-up rewrite focused on correctness, security and being immediately useful to coding agents. Tool names now mirror the uv CLI. This is a breaking release: see the migration table below.
Highlights
Section titled “Highlights”- Install with one command:
uvx uv-mcp-server@latest. The distribution is now nameduv-mcp-server(matching PyPI). The olduv-mcpconsole script remains as an alias. - Complete uv coverage: 51 tools across projects, Python versions, the pip interface, virtual
environments, tools (
uvx), packaging, cache, auth and uv itself. Every tool acceptsextra_args, anduv_commandruns any other uv subcommand. A coverage map plus a test against the installed uv’s--helpguarantees every uv command is covered and flags new ones. - Every uv option: about 300 of uv’s ~1,060 command options are typed parameters (including a shared
resolverobject for resolution strategy, pre-releases, exclude-newer, indexes, platform, no-build, no-sources, offline). The rest go throughextra_args, now validated against the installed uv’s own--help, so typos, missing values and invalid choices are rejected with suggestions. The newuv_helptool lists any command’s options, choices and env vars and says how to pass each one. - New tools:
uv_help(option discovery),uv_check(type checking),uv_auditanduv_tool_audit(vulnerability audits),uv_workspace_list,uv_workspace_dir,uv_workspace_metadata,uv_pip_tree,uv_pip_check,uv_auth_login,uv_auth_logout,uv_project_info,uv_command. - Uniform results: every command returns
success,exit_code(the real one),command,cwd,stdout,stderr,duration_seconds,timed_out,truncatedand an actionablehint. Lists of packages, Python installations and tools are parsed into typed fields. - Diagnose and repair rewritten:
uv_diagnosechecks the interpreter,uv lock --check,.venvhealth,uv sync --checkanduv pip check, with a suggested fix per finding.uv_repairplans and runs the fixes (withdry_run) and re-diagnoses. - Agent instructions: the server sends MCP instructions telling models which tool to use when.
Security
Section titled “Security”- No shell anywhere; option-like values are rejected wherever a name, version or path is expected.
- Tokens and passwords go to uv through environment variables or stdin, never argv, and are redacted
from all output along with URL credentials, PyPI tokens and GitHub tokens.
uv auth tokenis refused. uv_publishis a dry run unlessdry_run=falseis passed.- Accurate MCP annotations (
readOnlyHint,destructiveHint,idempotentHint,openWorldHint). - New
--read-onlymode,UV_MCP_ALLOWED_ROOTSpath confinement,UV_MCP_TOOLSETSselection and--no-raw-command. - Commands time out (default 600 s, configurable) and the whole process group is killed; stdin is closed so uv can never hang on a prompt; mutating commands are serialised per project.
uv piptools acted on the server’s own virtual environment when it was launched withuv runoruvx(inheritedVIRTUAL_ENV). It is now scrubbed.- Configurations using
uv --directory /path/to/uv-mcpmade every tool operate on the uv-mcp source tree. The documented commands no longer change directory, the workspace root honoursUV_MCP_WORKSPACE_ROOTandCLAUDE_PROJECT_DIR, and the Gemini extension passes${workspacePath}. uv_tool_listcounted executables as tools.- Exit codes were always reported as 0 or 1.
pytestwas a runtime dependency, andfastmcpwas unpinned (>=0.2.0); it is now>=4.1,<5.- The documentation’s installation instructions were wrong in several places (package name, Python
version,
codex trust, client config files). They have been rewritten and checked.
Migration
Section titled “Migration”| 1.x tool | 2.0 tool |
|---|---|
uv_check_installation, uv_install, uv_self_version, uv_cache_dir, uv_python_dir | uv_info |
uv_diagnose_environment | uv_diagnose |
uv_repair_environment, uv_self_heal_environment | uv_repair (after uv_diagnose) |
uv_initialize_project | uv_init |
uv_add_dependency / uv_remove_dependency | uv_add / uv_remove (take a list of packages) |
uv_sync_environment | uv_sync |
uv_lock_project | uv_lock |
uv_export_requirements | uv_export |
uv_run_script | uv_run |
uv_run_ephemeral_tool | uv_tool_run |
uv_list_dependencies | uv_pip_list or uv_tree |
uv_analyze_dependency_tree | uv_tree |
uv_show_package_info | uv_pip_show |
uv_check_outdated_packages | uv_pip_list with outdated=true, or uv_tree with outdated=true |
uv_get_workspace_manifest | uv_project_info |
uv_create_venv | uv_venv |
uv_project_version | uv_version (bump is now a list) |
uv_format_code | uv_format |
uv_build_project / uv_publish_project | uv_build / uv_publish |
uv_pip_sync_requirements | uv_pip_sync |
uv_list_python_versions, uv_find_python | uv_python_list, uv_python_find |
uv_install_python_version, uv_upgrade_python_version, uv_uninstall_python_version | uv_python_install, uv_python_upgrade, uv_python_uninstall |
uv_pin_python_version | uv_python_pin |
uv_clear_cache, uv_prune_cache | uv_cache_clean, uv_cache_prune |
uv_pip_compile, uv_pip_install, uv_pip_uninstall, uv_pip_freeze, uv_tool_install,
uv_tool_upgrade, uv_tool_list, uv_tool_uninstall, uv_cache_size and uv_self_update keep their
names. Client configs should switch to uvx uv-mcp-server@latest; the example configs name the server
uv, so Claude Code tool names become mcp__uv__uv_add and so on.
[1.0.0] - 2026-05-16
Section titled “[1.0.0] - 2026-05-16”The Stop Shop Release
Section titled “The Stop Shop Release”UV-MCP now covers the entire uv CLI surface area. Every command from uv --help is now available as a typed MCP tool.
Added (24 new tools)
Section titled “Added (24 new tools)”| Tool | uv Command | Purpose |
|---|---|---|
uv_create_venv | uv venv | Create .venv with --seed, --relocatable, --clear, --system-site-packages |
uv_run_script | uv run | Execute scripts/commands with optional --with temporary deps |
uv_project_version | uv version | Read, set, or bump project version |
uv_format_code | uv format | Format Python code via Ruff (--check, --diff) |
uv_pip_compile | uv pip compile | Compile requirements.in → requirements.txt |
uv_pip_sync_requirements | uv pip sync | Sync environment from requirements.txt |
uv_pip_freeze | uv pip freeze | Freeze installed packages |
uv_pip_install | uv pip install | Imperative package installation |
uv_pip_uninstall | uv pip uninstall | Imperative package removal |
uv_tool_install | uv tool install | Install global CLI tools |
uv_tool_upgrade | uv tool upgrade | Upgrade installed tools |
uv_tool_list | uv tool list | List installed tools |
uv_tool_uninstall | uv tool uninstall | Remove installed tools |
uv_prune_cache | uv cache prune | Prune unreachable cache objects |
uv_cache_dir | uv cache dir | Show cache directory path |
uv_cache_size | uv cache size | Show cache disk usage |
uv_find_python | uv python find | Find Python installations |
uv_python_dir | uv python dir | Show Python installation directory |
uv_upgrade_python_version | uv python upgrade | Upgrade Python installations |
uv_uninstall_python_version | uv python uninstall | Uninstall Python versions |
uv_publish_project | uv publish | Publish distributions to PyPI |
uv_self_update | uv self update | Update the uv binary |
uv_self_version | uv self version | Display uv binary version |
New Models
Section titled “New Models”VenvResult,ScriptRunResult,VersionResult,FormatResult,PipCompileResult,PipSyncResult,PipFreezeResult,ToolListResult,CacheInfoResult,PublishResult,SelfUpdateResult
Total Tool Count: 45 MCP tools covering 100% of uv CLI functionality.
Section titled “Total Tool Count: 45 MCP tools covering 100% of uv CLI functionality.”[0.8.0] - 2026-05-16
Section titled “[0.8.0] - 2026-05-16”- Ephemeral Tool Runner (
uvxproxy):uv_run_ephemeral_tool(package, command)executes ephemeral tools viauv tool run --from <pkg>with typedEphemeralToolResult. - Workspace Introspection Engine:
uv_get_workspace_manifest()parses[tool.uv.workspace]members frompyproject.tomland returns aWorkspaceManifestwith topological dependency graph. - Self-Healing Diagnostics Handler:
uv_self_heal_environment()capturesModuleNotFoundErrorsignatures via regex, triggersuv sync, and yields per-packageuv add <pkg>recommendations in aSelfHealingDiagnosticspayload. - ANSI-Free Subprocess Environment: All
uvinvocations now unconditionally injectUV_COLOR=neverandTERM=dumbto guarantee clean, parseable streams. - Concurrency Lockfile Gate:
asyncio.Lock()serializes mutating commands (add,remove,sync,lock) to preventuv.lockdeadlocks under concurrent MCP tool calls. - Absolute Path Resolution: Every
project_pathinput is normalized withPath.resolve()before being passed touv --directory. - New Pydantic Models:
EphemeralToolResult,WorkspaceManifest,WorkspaceMember,SelfHealingDiagnostics,HealingAction.
- Docker Health Check updated to use
uv_mcp.utils(previously referenced non-existentuv_mcp.uv_utils). - Docker image label bumped to
0.8.0. - Type safety:
errors.pyandserver.pytightened for--strictcompliance.
Changed
Section titled “Changed”ProjectToolsrefactored from rawstrreturns to strictly typed Pydantic models (ProjectInitResult,SyncResult,ExportResult).
[0.7.2] - 2026-02-07
Section titled “[0.7.2] - 2026-02-07”- Configuration Module: Centralized
config.pyfor timeouts, limits, and retry policies. - Concurrency Limits:
MAX_CONCURRENT_COMMANDSprevents resource exhaustion. - Core Utilities: Improved
validate_project_pathandcheck_uv_available(zombie process fix). - Output Limits: Truncation for large dependency trees and sync outputs to avoid MCP payload limits.
- Docstrings: Added comprehensive docstrings with examples to all actions.
- Tests: New
test_error_paths.pycovering edge cases and missing files.
- Resource Leaks: Fixed zombie processes in
check_uv_available. - Timeouts: Fixed cascading timeouts in
run_uv_command. - Bug Fixes:
- Fixed
KeyErrorinshow_package_info. - Fixed list slicing in
list_dependencies. - Fixed logic in
check_dependenciesregarding return codes. - Fixed validation in
check_outdated_packages.
- Fixed
- Safety: Added rigorous project path validation across all tools.
[0.6.4] - 2025-12-28
Section titled “[0.6.4] - 2025-12-28”Major Release
Section titled “Major Release”This release adds powerful new build and cache management tools, comprehensive error handling, and extensive edge case testing.
New Features
Section titled “New Features”Build & Distribution Tools
Section titled “Build & Distribution Tools”-
build_project: Build wheel and source distributionsresult = await build_project(wheel=True, sdist=True)# Creates dist/myapp-0.1.0.tar.gz and .whl files -
lock_project: Update lockfile without syncing environmentawait lock_project() # Updates uv.lock only -
clear_cache: Clear UV package cacheawait clear_cache() # Clear entire cacheawait clear_cache(package="requests") # Clear specific package
Enhanced Error Handling
Section titled “Enhanced Error Handling”-
7 Custom Exception Classes: Structured errors with error codes
UVNotInstalledError- UV not foundProjectNotFoundError- Missing project directoryPyProjectNotFoundError- No pyproject.tomlDependencyConflictError- Version conflictsVirtualEnvMissingError- Missing .venvPackageNotFoundError- Package not in PyPIInvalidPythonVersionError- Python version issues
-
Smart Error Suggestions: Context-aware help messages
{"error": "uv is not installed","error_code": "UV_NOT_FOUND","suggestion": "Install uv using: curl -LsSf https://astral.sh/uv/install.sh | sh"} -
Error Suggestion Engine: Automatically parses stderr and provides actionable advice
Comprehensive Testing
Section titled “Comprehensive Testing”- 56 New Edge Case Tests covering:
- Command execution boundaries (empty output, large data, special characters)
- Concurrent operations and race conditions
- Platform variations (Windows/Unix paths, Unicode)
- Error recovery scenarios
- Memory and performance (1000+ dependencies, 10MB+ output)
- Boundary conditions (name lengths, dependency sizes)
Bug Fixes
Section titled “Bug Fixes”- Fixed pytest async marker warnings in test suite
- Fixed
CacheOperationResultmodel default values - All 134 tests now pass cleanly (133 passed, 1 intentionally skipped)
Documentation
Section titled “Documentation”Added 6 comprehensive documentation files:
IMPROVEMENTS.md- Technical changelogSUMMARY.md- Executive overviewQUICK_REFERENCE.md- Usage guideTEST_REPORT.md- Test documentationNAMING_CONVENTIONS.md- MCP naming complianceFINAL_SUMMARY.md- Complete project report
Metrics
Section titled “Metrics”- Total MCP Tools: 19 (↑ 3 new)
- Total Tests: 134 (↑ 56 new)
- Pass Rate: 99.3%
- Test Execution: ~2.5 seconds
- Code Coverage: 85%+ on critical modules
- Breaking Changes: 0 (100% backward compatible)
[0.6.1] - 2025-12-16
Section titled “[0.6.1] - 2025-12-16”- Dependency Inspection Suite: Deep dependency analysis tools
list_dependencies: List all installed packagesshow_package_info: Detailed package metadatacheck_outdated_packages: Find packages with updates availableanalyze_dependency_tree: Visualize dependency relationships
- Environment Isolation: Fixed bug where
uv pipinspected wrong environment - Test Isolation: Improved test suite isolation from host system
[0.5.3] - 2025-12-16
Section titled “[0.5.3] - 2025-12-16”- GitHub Actions CI/CD workflow syntax error
- Release asset upload process
[0.5.2] - 2025-12-16
Section titled “[0.5.2] - 2025-12-16”Refactor
Section titled “Refactor”- Modern Python: Updated to Python 3.10+ style with type hints
- File Renaming: Standardized naming (
uv_utils.py→utils.py) - Pydantic Integration: All inputs/outputs use Pydantic models
- Error Handling: Custom exception hierarchy
- Code Structure: Decomposed complex functions for readability
Changed
Section titled “Changed”- Default Python version: 3.12
- Updated all imports for new file structure
[0.5.0] - 2025-12-15
Section titled “[0.5.0] - 2025-12-15”Documentation
Section titled “Documentation”- Comprehensive docs powered by Astro Starlight
- Usage guide, installation guide, architecture overview
- Tool reference documentation
- Search functionality
Changed
Section titled “Changed”- Removed unicode emojis for better compatibility
- Improved error handling in project tools
- Fixed typos and improved documentation workflow
[0.4.0] - 2025-12-14
Section titled “[0.4.0] - 2025-12-14”remove_dependencytool- Auto-install Python in
repair_environment - Comprehensive test coverage
check_python_versiondetectioncheck_dependenciesoutput parsing- Race conditions in test suite
[0.1.0] - 2025-12-13
Section titled “[0.1.0] - 2025-12-13”Initial Release
Section titled “Initial Release”- Core tools: check, install, diagnose, repair, add
- Gemini CLI extension support
- Comprehensive test suite
- Full documentation
- Example configurations
Features
Section titled “Features”- Automatic project root detection
- Virtual environment management
- Dependency conflict detection
- Python version compatibility
- Lockfile synchronization
- JSON-formatted responses