Files

275 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

2026-05-31 18:45:22 +08:00
# ⚡ Using MCP Python Manager with uvx
This guide explains how to use the MCP Python Project Manager server with [`uv`](https://github.com/astral-sh/uv) and `uvx` for faster, simpler execution.
## Why uvx?
**No virtual environment setup** - Run directly without `python -m venv`
**Instant startup** - uv's caching makes repeated runs lightning fast
**Dependency isolation** - Each run uses isolated dependencies
**Cross-platform** - Works the same on Windows, macOS, and Linux
**Automatic updates** - uvx fetches the latest version automatically
## 🚀 Quick Start
### Install uv (one-time)
```cmd
# Via winget (Windows)
winget install astral-sh.uv
# Or via pip
pip install uv
# Verify installation
uv --version
uvx --version
```
### Run the MCP Server
```cmd
# Basic run (recommended for MCP clients)
uvx --from C:/Users/dimir/proects/mcp-python mcp-python-manager
# With custom workspace
uvx --from C:/Users/dimir/proects/mcp-python mcp-python-manager --workspace "C:\MyProjects"
# With debug logging
uvx --from C:/Users/dimir/proects/mcp-python mcp-python-manager --debug
# Via SSE transport
uvx --from C:/Users/dimir/proects/mcp-python mcp-python-manager --transport sse --port 8000
```
### Run from Project Directory
If you're already in the project directory:
```cmd
cd C:\Users\dimir\proects\mcp-python
uvx --from . mcp-python-manager
```
## 🔌 Claude Desktop Configuration
Add to `%APPDATA%\Claude\claude_desktop_config.json`:
```json
{
"mcpServers": {
"python-manager": {
"command": "uvx",
"args": [
"--from",
"C:/Users/dimir/proects/mcp-python",
"mcp-python-manager",
"--transport",
"stdio"
],
"env": {
"MCP_PYTHON_WORKSPACE": "C:/Users/dimir/projects",
"UV_NO_CACHE": "0",
"UV_LINK_MODE": "copy",
"PYTHONUNBUFFERED": "1"
}
}
}
}
```
### Environment Variables Explained
| Variable | Purpose | Recommended Value |
|----------|---------|------------------|
| `MCP_PYTHON_WORKSPACE` | Root directory for Python projects | `C:/Users/dimir/projects` |
| `UV_NO_CACHE` | Disable uv cache (0 = use cache) | `0` |
| `UV_LINK_MODE` | How uv links packages (`copy`, `symlink`, `hardlink`) | `copy` (safest on Windows) |
| `PYTHONUNBUFFERED` | Disable Python output buffering | `1` |
## 🔧 Cursor / VS Code Configuration
```json
{
"mcp": {
"servers": {
"python-manager": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"C:/Users/dimir/proects/mcp-python",
"mcp-python-manager",
"--transport",
"stdio"
],
"env": {
"MCP_PYTHON_WORKSPACE": "C:/Users/dimir/projects",
"UV_LINK_MODE": "copy"
}
}
}
}
}
```
## 🛠️ Development with uvx
### Test Changes Locally
```cmd
# After editing server.py or tools.py, test immediately:
uvx --from C:/Users/dimir/proects/mcp-python mcp-python-manager --debug
# No need to reinstall - uvx picks up local changes!
```
### Install for Development
```cmd
# Install with dev dependencies
uv pip install -e ".[dev]" --system
# Run tests
uv run pytest tests/ -v
# Run linting
uv run ruff check .
uv run black --check .
```
### Build and Publish (Optional)
```cmd
# Build distribution
uv build
# Publish to PyPI (requires token)
uv publish --token $PYPI_TOKEN
```
## 🐛 Troubleshooting uvx
### "Command not found: uvx"
```cmd
# Install uv
winget install astral-sh.uv
# or
pip install uv
# Ensure it's in PATH
where uvx
```
### Permission errors on Windows
```cmd
# Use copy link mode (safer than symlinks on Windows)
set UV_LINK_MODE=copy
uvx --from . mcp-python-manager
# Or run as Administrator if needed
```
### Cache issues
```cmd
# Clear uv cache
uv cache clean
# Disable cache for one run
uvx --no-cache --from . mcp-python-manager
```
### Slow first run
The first `uvx` run downloads dependencies. Subsequent runs are instant due to caching.
```cmd
# Pre-warm cache (optional)
uvx --from . mcp-python-manager --help
```
### Debug uvx behavior
```cmd
# Enable uv debug output
set UV_VERBOSE=1
uvx --from . mcp-python-manager --debug
# See what uvx is doing
set RUST_LOG=uv=debug
uvx --from . mcp-python-manager
```
## 📊 Performance Comparison
| Method | First Run | Subsequent Runs | Setup Time |
|--------|-----------|----------------|------------|
| `python server.py` + venv | ~30s | ~1s | ~2 min (venv + pip) |
| `uvx --from .` | ~15s | **~0.5s** | **0s** |
| `pip install -e .` + run | ~45s | ~1s | ~3 min |
## 🔄 Updating the Server
With uvx, updates are automatic:
```cmd
# Just run again - uvx fetches latest code
uvx --from C:/Users/dimir/proects/mcp-python mcp-python-manager
# Or force refresh
uv cache clean mcp-python-manager
uvx --from C:/Users/dimir/proects/mcp-python mcp-python-manager
```
## 📁 Project Structure for uvx
```
mcp-python/
├── pyproject.toml # [project.scripts] defines entry points
├── server.py # Contains run_server() entry point
├── .uvrc # uv-specific configuration (optional)
└── ...
```
### Key pyproject.toml Settings
```toml
[project.scripts]
# This creates the 'mcp-python-manager' command
mcp-python-manager = "server:run_server"
[tool.uv]
# uv-specific optimizations
dev-dependencies = ["dev"]
```
## 🎯 Best Practices
1. **Use `--from .` when in project directory** - Faster than full path
2. **Set `UV_LINK_MODE=copy` on Windows** - Avoids symlink permission issues
3. **Keep `MCP_PYTHON_WORKSPACE` in env** - Consistent project access
4. **Use `--debug` during development** - See detailed logs
5. **Cache warmup** - Run `--help` once to pre-download dependencies
## 🔄 Switching Back to Python
If you need to use traditional Python:
```cmd
# Traditional setup
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python server.py
```
Both methods work - choose what fits your workflow!
---
**uv Documentation**: https://docs.astral.sh/uv/
**MCP Specification**: https://modelcontextprotocol.io