makeplane / makeplane/plane

v3.0.1 commercial AIO: every manage.py/celery process dies at import (bundled mcp 2.0.0 renamed streamablehttp_client)

Open
#9,572 0 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.