Before you can experiment with Model Context Protocol, you need a predictable local environment where your code, your dependencies, and your editor all agree on how things should run.
- A thorough README is the fastest way to avoid setup pain across Windows, Mac, and Linux.
- UV is the Python virtual environment manager that keeps FastMCP dependencies tidy and reproducible.
- API keys are only needed for a few optional hands-on steps, so you can start building without any credentials at all.
This lesson is a preview from our Building Your First MCP Server and Client Course Online. Enroll in a course for detailed lessons, live instructor support, and project-based training.
MCP projects are easy to start once the groundwork is done, but that groundwork has a handful of steps that catch people out if they skip ahead. The goal of a good initial setup is to get to the point where you can focus on the interesting parts, like designing outcome-based tools, instead of debugging environment issues.
Start With the README
Every MCP project in this workflow ships with a README that covers setup end to end: commands for Windows, Mac, and Linux, along with notes on the areas that tend to fail. Reading it once through before running anything is worth the time. It lists every command you will need, in the order you will need it, and flags the places where platform differences matter most.
Subfolders often include their own READMEs as well, especially around the hello world example and the deliberately bad example used for comparison. Working through those in order gives you both a working reference and a cautionary one.
Install UV and Sync Dependencies
UV is a Python virtual environment manager that handles installation and dependency resolution in a single tool. The first step is to install UV itself using the command included in the README, then open the project folder and run UV sync. That command creates a virtual environment with everything needed for FastMCP, environment variable handling, and the rest of the project dependencies.
Once UV sync finishes, the project is ready to run. There is no additional package install dance, no manual requirements file, and no guessing at versions.
Choose an Editor and Decide About API Keys
Any modern editor works for this kind of project. Cursor, Visual Studio Code, and Windsurf all handle Python and MCP tooling well. Pick whichever feels most comfortable and follow the same commands regardless of the editor.
API keys are optional for the basic examples. Hello world and the baseline walkthroughs run without authentication of any kind. The only time you will want a key is for the optional hands-on exercises that use real data sources, like NASA's public API. Picking up a NASA API key is both free and a fun conversation starter, but it is not required to finish the core material.
Test With Claude Before Moving On
Once the environment is set up, the next milestone is running the server against a client. Claude is the recommended target for these walkthroughs, with ChatGPT as a near-identical alternative. Because MCP acts as a universal connector between models and tools, the same server can eventually be tested inside editors like Cursor as well.
At that point, the setup phase is done. You have a working environment, a synced dependency tree, an editor of your choice, and a client to talk to. From here on out, the focus shifts to designing tools, testing behavior, and eventually deploying.
Spending a few extra minutes on the README up front saves hours of troubleshooting later. Install UV, run UV sync, confirm the hello world example works, and only then add complexity. A calm, reproducible setup is what lets the rest of the MCP learning curve feel approachable rather than overwhelming.