diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index a3a144677..574838e73 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -145,7 +145,7 @@ jobs: import fastmcp import fastmcp.settings - assert any(ep.name == "fastmcp" for ep in entry_points(group="console_scripts")) + assert not any(ep.name == "fastmcp" for ep in entry_points(group="console_scripts")) try: from fastmcp.cli import app @@ -174,7 +174,7 @@ jobs: from fastmcp.client.transports import StdioTransport, StreamableHttpTransport from fastmcp.mcp_config import MCPConfig - assert any(ep.name == "fastmcp" for ep in entry_points(group="console_scripts")) + assert not any(ep.name == "fastmcp" for ep in entry_points(group="console_scripts")) try: from fastmcp.cli import app @@ -207,10 +207,7 @@ jobs: from fastmcp import FastMCP from fastmcp.cli import app - assert any( - ep.name == "fastmcp" and ep.value == "fastmcp.cli:app" - for ep in entry_points(group="console_scripts") - ) + assert not any(ep.name == "fastmcp" for ep in entry_points(group="console_scripts")) mcp = FastMCP("smoke") assert app is not None @@ -235,7 +232,9 @@ jobs: assert not any("fastmcp-slim[full" in req for req in fastmcp_reqs) assert any( - ep.name == "fastmcp" and ep.value == "fastmcp.cli:app" + ep.name == "fastmcp" + and ep.value == "fastmcp.cli:app" + and ep.dist.name == "fastmcp" for ep in entry_points(group="console_scripts") ) diff --git a/docs/getting-started/installation.mdx b/docs/getting-started/installation.mdx index 20443337b..7ac0d7283 100644 --- a/docs/getting-started/installation.mdx +++ b/docs/getting-started/installation.mdx @@ -62,6 +62,23 @@ Alternatively, wait for the stable v5 release. See [this issue](https://github.c ## Upgrading +### From FastMCP 3.3.0 or 3.3.1 + +FastMCP 3.3.2 repairs a package split issue that could affect environments upgraded from FastMCP 3.2.x with pip. Upgrade to the latest release to restore both the `fastmcp` import package and the `fastmcp` CLI: + +```bash +python -m pip install --upgrade fastmcp +uv pip install --upgrade fastmcp +uv sync --upgrade-package fastmcp +``` + +For an environment that still has missing package files after upgrading, reinstall the paired packages: + +```bash +python -m pip install --upgrade --force-reinstall fastmcp fastmcp-slim +uv pip install --upgrade --reinstall-package fastmcp --reinstall-package fastmcp-slim fastmcp +``` + ### From FastMCP 2.0 See the [Upgrade Guide](/getting-started/upgrading/from-fastmcp-2) for a complete list of breaking changes and migration steps. diff --git a/fastmcp_slim/pyproject.toml b/fastmcp_slim/pyproject.toml index c628b71ec..d9d20a4cb 100644 --- a/fastmcp_slim/pyproject.toml +++ b/fastmcp_slim/pyproject.toml @@ -41,9 +41,6 @@ Homepage = "https://gofastmcp.com" Repository = "https://github.com/PrefectHQ/fastmcp" Documentation = "https://gofastmcp.com" -[project.scripts] -fastmcp = "fastmcp.cli:app" - [build-system] requires = ["hatchling", "uv-dynamic-versioning>=0.7.0"] build-backend = "hatchling.build" diff --git a/tests/client/test_slim_package_boundaries.py b/tests/client/test_slim_package_boundaries.py index 3c2187765..cdf77d961 100644 --- a/tests/client/test_slim_package_boundaries.py +++ b/tests/client/test_slim_package_boundaries.py @@ -79,6 +79,8 @@ def test_fastmcp_metapackage_delegates_to_slim() -> None: def test_fastmcp_slim_installs_private_import_root() -> None: pyproject = (PROJECT_ROOT / "fastmcp_slim" / "pyproject.toml").read_text() + assert "[project.scripts]" not in pyproject + assert 'fastmcp = "fastmcp.cli:app"' not in pyproject assert "[tool.hatch.build.targets.wheel]" in pyproject assert "bypass-selection = true" in pyproject assert "only-include = []" in pyproject