Introduction
This guide will walk you through the process of creating a Python MCP (Model Control Protocol) Server from scratch using the uvx tool. We’ll cover everything from initial setup to project structure.
Prerequisites
- Python 3.12 or higher installed
- Windows PowerShell or Command Prompt
- Basic understanding of Python
Step 1: Installation and Project Creation
First, navigate to your desired project directory:
cd "D:\github_repository"
Create a new MCP server project using the uvx command:
uvx create-mcp-server
During the creation process, you’ll be prompted for:
- Project name (we used “server-google-jobs”)
- Project description (optional)
- Project version (default: 0.1.0)
- Confirmation of project location
Step 2: Virtual Environment and Dependencies
The tool automatically:
- Creates a virtual environment in .venv directory
- Installs necessary dependencies including: mcp==1.1.2 pydantic==2.10.4 starlette==0.45.0 httpx==0.28.1 And other required packages
To ensure all dependencies are properly installed, run:
cd server-google-jobs
uv sync --dev --all-extras
Step 3: Project Structure
The generated project structure looks like this:
SERVER-GOOGLE-JOBS/
├── .venv/
├── Lib/
│ └── site-packages/
├── Scripts/
├── src/
│ └── server_google_jobs/
│ ├── __pycache__/
│ │ ├── __init__.cpython-312.pyc
│ │ └── server.cpython-312.pyc
│ ├── __init__.py
│ └── server.py
├── .gitignore
├── CACHEDIR.TAG
├── pyproject.toml
├── pyenv.cfg
├── .python-version
├── README.md
└── uv.lock
Key files and their purposes:
- src/server_google_jobs/server.py: Main server implementation file
- src/server_google_jobs/__init__.py: Package initialization
- pyproject.toml: Project configuration and dependencies
- .gitignore: Specifies which files Git should ignore
- README.md: Project documentation
Notes
- The server is automatically configured for Claude.app integration if detected
- The configuration file is stored at %APPDATA%\Claude\claude_desktop_config.json
- The project uses Python 3.12.2 by default
Next Steps
After setting up the project structure, you can:
- Implement your server logic in server.py
- Add custom routes and endpoints
- Configure authentication if needed
- Add tests and documentation
- Deploy your server
Common Issues
If you encounter the hardlink warning during installation:
warning: Failed to hardlink files; falling back to full copy
This is normal and won’t affect functionality. You can suppress it by setting:
export UV_LINK_MODE=copy
or using the — link-mode=copy flag.
Conclusion
You now have a fully configured Python MCP Server project ready for development. The structure provided gives you a solid foundation to build upon, with all necessary dependencies and configurations in place.