v3.0.1 commercial AIO: every manage.py/celery process dies at import (bundled mcp 2.0.0 renamed streamablehttp_client)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 59.6k
- Forks
- 5.8k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 49
Description
Is there an existing issue for this? Searched: none found for this ImportError.
Summary. The commercial AIO image plane-aio-commercial:v3.0.1 (also
current :stable) is broken as published for self-hosted deployments:
plane/silo/services/mcp_connection.py does
from mcp.client.streamable_http import streamablehttp_client
but the image bundles the Python mcp SDK 2.0.0 (verified via importlib.metadata in the image), where that symbol
was renamed to streamable_http_client. Every manage.py command (including
migrate) and every celery worker dies at import time, so the migrator
crash-loops and the instance never comes up. Upgrading from v2.5.3 required a
full rollback.
Steps to reproduce (no instance needed, plain docker):
docker run --rm --entrypoint python \
artifacts.plane.so/makeplane/plane-aio-commercial:v3.0.1 \
-c "from mcp.client.streamable_http import streamablehttp_client"
# ImportError: cannot import name 'streamablehttp_client' from 'mcp.client.streamable_http'
The module's actual exports in the image:
['ClientMessageMetadata', 'create_mcp_http_client', 'streamable_http_client']
Environment. Self-hosted commercial AIO (unlicensed/community mode),
Docker Engine 29.7.2, upgrade attempt from v2.5.3. Failure is deterministic
and environment-independent (reproduces in a bare docker run of the
published image).
Expected. The image ships a mcp SDK version compatible with its own
code. Either pin mcp<2 in the image or update the silo imports to the 2.x
name (this rename is breaking many projects; see the mcp 2.0.0 release notes
and similar reports across the ecosystem).
Workaround we tested (for other self-hosters landing here): a
sitecustomize.py on PYTHONPATH aliasing the new name back restores the
import:
try:
from mcp.client import streamable_http as _sh
if not hasattr(_sh, "streamablehttp_client") and hasattr(_sh, "streamable_http_client"):
_sh.streamablehttp_client = _sh.streamable_http_client
except Exception:
pass
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the provided docker reproduction against plane-aio-commercial:v3.0.1, then inspect plane/silo/services/mcp_connection.py and how the image supplies the mcp SDK. Verify the chosen compatibility fix against the published image so the import succeeds and manage.py commands and celery workers no longer die at import time.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, python
- Domain
- backend, infrastructure
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 64/100