Skip to content

Commit 5e6cba8

Browse files
committed
Point pre-release install pins at 2.0.0rc2
The README and get-started docs pinned 2.0.0rc1. Ahead of the 2.0.0rc2 tag they now pin 2.0.0rc2, so the tagged commit's README (the PyPI long description) names the version being released. No-Verification-Needed: doc-only pin flip
1 parent 89c5e70 commit 5e6cba8

4 files changed

Lines changed: 15 additions & 15 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</div>
1515

1616
> [!CAUTION]
17-
> **This README documents v2 of the MCP Python SDK, currently a release candidate (`2.0.0rc1`); the stable v2 release is planned for 2026-07-28.** Do not use v2 in production yet. Pre-releases are published to PyPI as `2.0.0aN` / `2.0.0bN` / `2.0.0rcN`, and **a pre-release may still contain breaking changes from the previous one**. Pin an exact version and expect to update your code when you bump the pin.
17+
> **This README documents v2 of the MCP Python SDK, currently a release candidate (`2.0.0rc2`); the stable v2 release is planned for 2026-07-28.** Do not use v2 in production yet. Pre-releases are published to PyPI as `2.0.0aN` / `2.0.0bN` / `2.0.0rcN`, and **a pre-release may still contain breaking changes from the previous one**. Pin an exact version and expect to update your code when you bump the pin.
1818
>
1919
> **v1.x is the only stable release line and remains recommended for production.** It lives on the [`v1.x` branch](https://github.com/modelcontextprotocol/python-sdk/tree/v1.x) and continues to receive critical bug fixes and security patches; see [the v1.x README](https://github.com/modelcontextprotocol/python-sdk/blob/v1.x/README.md) for its documentation. `pip` and `uv` don't select a pre-release unless you explicitly request one, so existing installs are unaffected. **If your package depends on `mcp`, add a `<2` upper bound to your version constraint (for example `mcp>=1.27,<2`) before the stable release lands.**
2020
>
@@ -41,10 +41,10 @@ Python 3.10+.
4141
## Installation
4242

4343
```bash
44-
uv add "mcp[cli]==2.0.0rc1" # or: pip install "mcp[cli]==2.0.0rc1"
44+
uv add "mcp[cli]==2.0.0rc2" # or: pip install "mcp[cli]==2.0.0rc2"
4545
```
4646

47-
The pin matters while v2 is in pre-release: an unpinned install resolves to the latest stable v1.x, which this README does not describe. Check [PyPI](https://pypi.org/project/mcp/#history) for the newest pre-release, and use `uv run --with "mcp==2.0.0rc1"` for one-off commands.
47+
The pin matters while v2 is in pre-release: an unpinned install resolves to the latest stable v1.x, which this README does not describe. Check [PyPI](https://pypi.org/project/mcp/#history) for the newest pre-release, and use `uv run --with "mcp==2.0.0rc2"` for one-off commands.
4848

4949
## A server in 15 lines
5050

docs/get-started/installation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ These docs describe **v2**, currently a release candidate, so the version pin is
77
=== "uv"
88

99
```bash
10-
uv add "mcp[cli]==2.0.0rc1"
10+
uv add "mcp[cli]==2.0.0rc2"
1111
```
1212

1313
=== "pip"
1414

1515
```bash
16-
pip install "mcp[cli]==2.0.0rc1"
16+
pip install "mcp[cli]==2.0.0rc2"
1717
```
1818

1919
!!! warning "Why the pin"
@@ -22,7 +22,7 @@ These docs describe **v2**, currently a release candidate, so the version pin is
2222
[release history](https://pypi.org/project/mcp/#history) for the newest pre-release before you copy
2323
the line above.
2424

25-
The same applies to one-off commands: `uv run --with "mcp==2.0.0rc1" ...`, not `uv run --with mcp ...`.
25+
The same applies to one-off commands: `uv run --with "mcp==2.0.0rc2" ...`, not `uv run --with mcp ...`.
2626

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

docs/get-started/real-host.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ That is the last line of Python on this page. From here down it is all host conf
2323
Every host below gets the same command:
2424

2525
```bash
26-
uv run --with "mcp[cli]==2.0.0rc1" mcp run /absolute/path/to/server.py
26+
uv run --with "mcp[cli]==2.0.0rc2" mcp run /absolute/path/to/server.py
2727
```
2828

2929
One command for all of them because `uv run --with` resolves the pinned SDK into a fresh environment on the spot: it works from any directory, needs no project and no virtual environment to activate, and always gets the exact `mcp` version these docs describe. That matters here more than anywhere else, because a host launches your server from *its* working directory with a near-empty environment, not from your shell.
@@ -74,7 +74,7 @@ There is nothing to be mystified by. This is the entry it writes:
7474
"run",
7575
"--frozen",
7676
"--with",
77-
"mcp[cli]==2.0.0rc1",
77+
"mcp[cli]==2.0.0rc2",
7878
"mcp",
7979
"run",
8080
"/absolute/path/to/server.py"
@@ -107,7 +107,7 @@ Fully quit Claude Desktop (not just its window) and reopen it.
107107
There is no file to edit. Register the server with the `claude` CLI; everything after `--` is the launch command.
108108

109109
```bash
110-
claude mcp add bookshop -- uv run --with "mcp[cli]==2.0.0rc1" mcp run /absolute/path/to/server.py
110+
claude mcp add bookshop -- uv run --with "mcp[cli]==2.0.0rc2" mcp run /absolute/path/to/server.py
111111
```
112112

113113
Run `/mcp` inside a Claude Code session to confirm `bookshop` is connected and its tools are listed.
@@ -121,7 +121,7 @@ Create `.cursor/mcp.json` in your project root.
121121
"mcpServers": {
122122
"bookshop": {
123123
"command": "uv",
124-
"args": ["run", "--with", "mcp[cli]==2.0.0rc1", "mcp", "run", "/absolute/path/to/server.py"]
124+
"args": ["run", "--with", "mcp[cli]==2.0.0rc2", "mcp", "run", "/absolute/path/to/server.py"]
125125
}
126126
}
127127
}
@@ -139,7 +139,7 @@ Create `.vscode/mcp.json` in your project root.
139139
"bookshop": {
140140
"type": "stdio",
141141
"command": "uv",
142-
"args": ["run", "--with", "mcp[cli]==2.0.0rc1", "mcp", "run", "/absolute/path/to/server.py"]
142+
"args": ["run", "--with", "mcp[cli]==2.0.0rc2", "mcp", "run", "/absolute/path/to/server.py"]
143143
}
144144
}
145145
}
@@ -156,7 +156,7 @@ Two differences from Cursor's file, and they are the only two: the wrapper key i
156156
Before you touch any host config, run the launch command yourself:
157157

158158
```bash
159-
uv run --with "mcp[cli]==2.0.0rc1" mcp run /absolute/path/to/server.py
159+
uv run --with "mcp[cli]==2.0.0rc2" mcp run /absolute/path/to/server.py
160160
```
161161

162162
Nothing prints, and it doesn't return. That silence is correct: a stdio server is waiting for a host to speak first on stdin (`Ctrl-C` to stop it). A traceback or an immediate exit is the real bug, and now you can read it instead of guessing at it through a host.
@@ -174,7 +174,7 @@ For anything past those three, **[Troubleshooting](../troubleshooting.md)** is t
174174
## Recap
175175

176176
* A **host** (Claude Desktop, an IDE) runs an MCP client that launches your server as a child process over stdio. Connecting means giving it one launch command.
177-
* That command is `uv run --with "mcp[cli]==2.0.0rc1" mcp run /absolute/path/to/server.py`: version-pinned, no venv to activate, works from any directory. The pin is mandatory while v2 is pre-release.
177+
* That command is `uv run --with "mcp[cli]==2.0.0rc2" mcp run /absolute/path/to/server.py`: version-pinned, no venv to activate, works from any directory. The pin is mandatory while v2 is pre-release.
178178
* **Claude Desktop** is the one host `mcp install` configures for you. It writes that same command (plus the absolute path to `uv`) into `claude_desktop_config.json`, so you never have to.
179179
* **Claude Code** is `claude mcp add bookshop -- <launch command>`. **Cursor** is `.cursor/mcp.json` under `mcpServers`. **VS Code** is `.vscode/mcp.json` under `servers`, each entry with a `type`.
180180
* Absolute paths everywhere, restart the host after editing its config, and never let anything but the SDK write to stdout.

docs/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ Python 3.10+.
2222
=== "uv"
2323

2424
```bash
25-
uv add "mcp[cli]==2.0.0rc1"
25+
uv add "mcp[cli]==2.0.0rc2"
2626
```
2727

2828
=== "pip"
2929

3030
```bash
31-
pip install "mcp[cli]==2.0.0rc1"
31+
pip install "mcp[cli]==2.0.0rc2"
3232
```
3333

3434
The `[cli]` extra gives you the `mcp` command; you'll want it for development.

0 commit comments

Comments
 (0)