Files
modelcontextprotocol--pytho…/docs/get-started/installation.md
Max Isbey e989e6eeb2 Stop advertising MCP_* env vars for MCPServer settings; drop pydantic-settings
The Settings docstring and the installation docs claimed MCPServer could be
configured through MCP_* environment variables and a .env file, but MCPServer
always passes explicit constructor arguments to Settings, and those outrank the
environment in pydantic-settings, so e.g. MCP_DEBUG=true has never taken effect.

Make Settings a plain pydantic BaseModel and remove pydantic-settings from the
runtime dependencies (it moves to the dev group, where the examples still use
it). The migration guide explains how to feed environment variables into the
constructor for anyone who wants that behaviour.
2026-07-25 19:28:49 +00:00

3.0 KiB

Installation

The Python SDK is on PyPI as mcp. It requires Python 3.10+.

These docs describe v2, which is in beta, so the version pin is not optional yet:

=== "uv"

```bash
uv add "mcp[cli]==2.0.0b1"
```

=== "pip"

```bash
pip install "mcp[cli]==2.0.0b1"
```

!!! warning "Why the pin" Installers never select a pre-release unless you name one, so an unpinned uv add "mcp[cli]" gives you the latest v1.x release, which these docs do not describe. Check the release history for the newest beta before you copy the line above.

The same applies to one-off commands: `uv run --with "mcp==2.0.0b1" ...`, not `uv run --with mcp ...`.

If your *package* depends on `mcp`, add a `<2` upper bound (for example `mcp>=1.27,<2`) before
the stable v2 lands so the major version bump doesn't surprise you.

What gets installed

You don't need to know any of this to use the SDK, but if you're wondering what each dependency is for:

  • mcp-types: every protocol type (requests, results, content blocks) as its own package, versioned in lockstep with the SDK. Every from mcp_types import ... in these docs is this package.
  • anyio: the async runtime. The whole SDK is written against anyio, so it runs on either asyncio or trio.
  • pydantic: what every mcp_types model is built on, plus all schema generation and validation.
  • httpx2: the HTTP client behind the Streamable HTTP and SSE client transports, with server-sent events support built in.
  • starlette, uvicorn, sse-starlette, and python-multipart: the HTTP server transports.
  • jsonschema: validates a tool's structured output against its declared output schema.
  • pyjwt[crypto]: OAuth token handling for authorization.
  • opentelemetry-api: just the lightweight API, so the SDK's tracing middleware costs nothing unless you install an OpenTelemetry SDK and exporter yourself.
  • typing-extensions and typing-inspection: modern typing features on Python 3.10.
  • pywin32: Windows only, used for stdio subprocess management.

Optional extras

  • mcp[cli] adds typer and python-dotenv for the mcp command-line tool (mcp dev, mcp run, mcp install). You'll want this during development; you may not need it in a deployed server.
  • mcp[rich] adds rich for nicer server logs.