Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

The quickest Windows setup is a local Python server: install Python 3.10 or newer, install the Model Context Protocol SDK, create a small server file, and run uv run mcp dev server.py. That command starts the development server and MCP Inspector so you can call tools before connecting a host. Docker Desktop’s MCP Toolkit is the better choice when you need repeatable isolation, while Claude Desktop and Microsoft’s Windows on-device agent registry provide host and enterprise integration.

This guide shows all four routes, the Windows-specific paths and environment settings that commonly break, and a complete test server you can run locally.

Choose the Windows setup that matches your goal

Route Best for Isolation and repeatability Primary host or test tool
Local Python SDK Learning, prototyping, or one machine A local process; you manage its Python environment MCP Inspector, then any MCP client
Docker MCP Toolkit Catalogued servers and repeatable containers Container isolation and reusable Toolkit profiles Connected AI clients through the Docker gateway
Claude Desktop host Using your own server inside Claude Desktop Depends on the server process and Claude’s launch configuration Claude Desktop
Windows on-device agent registry Managed or enterprise deployment Contained agent sessions with approved-resource restrictions when registered through the supported path Windows on-device agent

For a first experiment, start with the Python path. You can later install the same server into Claude Desktop or package it for Docker.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Path A: Build and test a local Python MCP server

1. Install the Windows prerequisites

  • Install Python 3.10 or newer. The official Python SDK requires 3.10+.
  • Install uv or use an existing Python and pip installation. The SDK and CLI can be installed with uv add "mcp[cli]" or pip install "mcp[cli]".
  • Install Node.js if you want MCP Inspector. Inspector is a Node.js application and its launcher uses npx.

Open a new PowerShell window after installation and verify the tools:

python --version
uv --version
node --version
npx --version

If you chose pip instead of uv, check pip --version as well. A new terminal matters because Windows applications launched by a host may receive a different, minimal PATH than your interactive shell.

2. Create a project and install the SDK

In PowerShell, create a directory and add the MCP package:

mkdir windows-mcp-demo
cd windows-mcp-demo
uv init
uv add "mcp[cli]"

The equivalent pip installation is:

python -m venv .venv
..venvScriptsActivate.ps1
python -m pip install "mcp[cli]"

If PowerShell blocks activation because of its execution policy, do not weaken system policy just for this test; invoke the environment’s interpreter directly, for example ..venvScriptspython.exe -m pip install "mcp[cli]".

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Create server.py

This small server exposes one deterministic tool. It is intentionally self-contained, so you can verify the protocol before adding API calls, files, or databases.

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Windows Demo")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two integers."""
    return a + b

if __name__ == "__main__":
    mcp.run()

Keep standard-output discipline in mind: an MCP stdio host expects protocol messages on stdout. Send diagnostic logging to stderr instead of printing debug text to stdout.

4. Launch MCP Inspector

From the project directory, run:

uv run mcp dev server.py

The CLI starts the development server and opens MCP Inspector. In Inspector, connect to the generated server, list the available tools, call add with two integers, and confirm the returned sum. This is a development check; the command does not certify that a server is production-ready.

If uv is not recognized, locate it with where.exe uv and use that absolute path in your host configuration. Do the same for npx when Inspector cannot start. For example, a host command may need the full path to npx.cmd rather than simply npx.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

5. Add real tools safely

Expand one capability at a time and test it in Inspector. Validate arguments, return structured results where practical, and give the process only the files, network destinations, and credentials it needs. Never hard-code tokens in server.py; pass them as environment variables when the host launches the process.

Run the Python server in Claude Desktop

Use the SDK installer

The SDK CLI can generate a Claude Desktop launch entry:

uv run mcp install server.py

It reads the server name, converts the script path to an absolute path, and writes the entry to %APPDATA%Claudeclaude_desktop_config.json. Fully quit and reopen Claude Desktop after installing or editing the configuration; closing only the chat window may leave the old process running.

Pass secrets explicitly

Claude Desktop does not automatically inherit the environment from the PowerShell window where you tested the server. Supply variables during installation with -v NAME=value, or load them from a dotenv file with -f .env. Keep the dotenv file out of source control and restrict its permissions.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
uv run mcp install server.py -v WEATHER_API_KEY=replace-me
uv run mcp install server.py -f .env

After relaunching Claude Desktop, ask it to list the tools exposed by the server and call the harmless add tool. If it worked in Inspector but not in Claude, compare the absolute interpreter/script path and the explicitly supplied environment variables first.

Path B: Docker Desktop MCP Toolkit

Enable the Toolkit

  1. Install Docker Desktop for Windows.
  2. Open Settings → Beta features and enable MCP Toolkit.
  3. Create a Toolkit profile, add servers from the catalog, connect an AI client, and verify the connection by invoking a tool.

The Toolkit is useful when several machines need the same catalogued configuration or when you prefer containers over installing every server dependency on Windows.

Use the Windows gateway configuration

Docker’s Windows example uses a full executable path such as C:/Program Files/Docker/Docker/resources/bin/docker.exe. It also passes the PROGRAMFILES and PROGRAMDATA environment variables. Set startup_timeout_sec = 60: Docker documents a default timeout of 10 seconds, while the gateway typically needs approximately 15–25 seconds to initialize.

docker.exe mcp gateway run

The exact client configuration varies by client, so copy the command and path shown by your Docker Desktop installation rather than assuming that docker is on the host’s PATH. In Docker’s example, verification is performed from a connected Vibe CLI by using /mcp to list servers and then issuing a GitHub pull-request prompt.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Path C: Register servers with the Windows on-device agent

Know the registration families

Microsoft documents three Windows registration families:

  • Package-identity apps, normally delivered through MSIX or external-location packaging.
  • Directly installed MCP bundles.
  • Manual registration of local or remote servers with the Windows on-device agent registry (ODR).

Servers accessed through the ODR run in a contained agent session with restrictions on approved resources. Microsoft describes this containment as a way to limit risks such as cross-prompt injection attacks.

Choose the enterprise-safe route

Use package identity or managed registration when distributing to an organization. A directly installed bundle without package identity cannot use the securely contained agent process unless the user explicitly enables the setting that reduces protections for agent connectors. That trade-off should be approved by an administrator, not enabled casually to make a tool appear.

Review every tool and resource before registration, narrow permissions to the minimum required, and keep credentials outside source files. Containment reduces exposure; it is not a universal security certification.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Windows troubleshooting

“uv” or “npx” is not found

GUI hosts often start with a minimal PATH. Run where.exe uv or where.exe npx, then place the returned absolute executable path in the host configuration. On Windows, the Node launcher may be named npx.cmd.

The server works manually but not in a host

The host may not inherit your interactive shell’s variables, current directory, or virtual-environment activation. Use absolute paths, install dependencies into the environment that the host launches, and pass required secrets with Claude’s -v or -f .env options.

Docker reports a gateway timeout

Replace a bare docker command with Docker Desktop’s full Windows path, pass PROGRAMFILES and PROGRAMDATA, and allow a 60-second startup timeout. The documented 10-second default can expire before the gateway finishes its normal 15–25-second initialization.

No tools appear in the Windows agent

Check the registration method first: package identity, bundle, or ODR. Confirm that the server meets the containment requirements. If it is a direct bundle, verify whether protections were reduced for agent connectors; without the required setting, the bundle may not run in the contained agent process.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Inspector or the host shows garbled protocol output

Remove every diagnostic print() from stdout. MCP stdio protocol traffic must remain on stdout; write logs to stderr instead. Restart the host after changing the script so it does not retain an old process.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Operational checklist before you share a server

  • Run every tool at least once in Inspector and test invalid as well as valid arguments.
  • Confirm the host uses an absolute script and interpreter path.
  • List all environment variables and remove secrets from source and configuration committed to Git.
  • Limit file, network, and command access to what each tool needs.
  • For Docker, verify the profile, catalog server, client connection, and 60-second gateway timeout.
  • For enterprise deployment, document the registration family and whether Windows containment is active.
  • Keep protocol output clean and send diagnostics to stderr.

Or skip the browser setup

If the MCP task you need is taking clean website screenshots for an agent or workflow, ScreenshotNeo provides a website screenshot API and MCP server. It accepts one GET request and returns PNG, JPEG, WebP, or PDF. Before capture it accepts consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in X-Page-Verdict and X-Billed headers. Its MCP tools are take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.

See the ScreenshotNeo API documentation for all options, including full-page and selector captures, dark mode, device presets, retina scale, PDF paper and page-range controls, custom CSS and JavaScript, clicks, waits, request blocking, headers, cookies, authorization, timezone, geolocation, transparent backgrounds, resizing, TTL caching, signed image links, asynchronous webhooks, bulk capture of up to 100 URLs per call, usage reporting, and the OpenAPI specification.

One-call examples

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

There is a free allowance of 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 screenshots; every feature is on every plan. Create a free ScreenshotNeo account to get an access key.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Frequently Asked Questions

Does MCP Inspector prove that a server is production-ready?

No. Inspector confirms that the development process starts and that calls return the expected values. Production readiness still requires permission review, secret handling, input validation, failure handling, and host-specific testing.

Why should a Windows host use absolute paths?

A desktop host can start with a different working directory and a smaller PATH than PowerShell. Absolute paths remove that ambiguity for the interpreter, script, and helper executables.

Can I move from the Python process to Docker later?

Yes. Keep the tool contract and environment variables documented, then package the server and select it through a Docker MCP Toolkit profile. Re-test each tool because container file and network permissions differ from a local process.

The Bottom Line

Use the local Python SDK and uv run mcp dev server.py to learn and test on Windows, Claude Desktop to make that server available in a desktop host, Docker MCP Toolkit for repeatable containers, and Windows ODR or package identity for managed enterprise registration. Explicit paths, explicit environment variables, clean stdio output, and a deliberate permission review prevent most setup failures.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.