fix: unbreak fresh installs (pin mcp<2) and setup wizard sign-in timeout - #2
Open
fotoflo wants to merge 3 commits into
Open
fix: unbreak fresh installs (pin mcp<2) and setup wizard sign-in timeout#2fotoflo wants to merge 3 commits into
fotoflo wants to merge 3 commits into
Conversation
mcp 2.0.0 removed the Server.list_tools()/call_tool() decorator API this
server registers its 29 tools with, so any fresh install now crashes on
startup with:
AttributeError: 'Server' object has no attribute 'list_tools'
Pin to <2 until the server is ported to the new SDK surface.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
substack.com/sign-in keeps analytics/telemetry connections open, so Playwright's networkidle state never arrives; page.goto() raised a 30s TimeoutError and the wizard closed the browser before the user could log in. domcontentloaded is enough — the wizard polls for the session cookie afterwards anyway. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nk email never arrives Substack's anti-bot layer frequently silently drops the magic-link email when it is requested from the automated setup browser — no error is shown and the wizard waits forever. The code already supports manual auth via SUBSTACK_SESSION_TOKEN, but no doc explained how to obtain the substack.sid cookie. Add the capture recipe to the README troubleshooting section, the authentication guide's session-token method, and the quickstart's alternative setup + troubleshooting table. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Author
|
Pushed one more commit (dd6b23d), docs only: documents the manual session-cookie fallback (SUBSTACK_SESSION_TOKEN via the substack.sid cookie), since Substack's anti-bot layer often silently drops the setup wizard's magic-link email when it's requested from the automated browser. Covers README troubleshooting, docs/authentication.md, and the quickstart. 🤖 Generated with Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two one-line fixes for problems that currently break a fresh install end-to-end:
1. Pin
mcp<2(pyproject.toml)mcp 2.0.0removed the low-levelServer.list_tools()/call_tool()decorator API thatsrc/server.pyregisters its tools with. Because the dependency is declared asmcp>=1.10.0with no upper bound, every fresh install now picks up 2.0.0 and crashes on startup:Pinning to
<2restores working installs (verified withmcp 1.29.0) until the server is ported to the new SDK surface.2. Don't wait for
networkidleon the sign-in page (setup_auth.py)substack.com/sign-inkeeps analytics/telemetry connections open, so Playwright'snetworkidlestate never arrives.page.goto(..., wait_until="networkidle")raised a 30sTimeoutError, which closed the browser before the user could log in — the wizard failed with "❌ Authentication failed" every time:domcontentloadedis sufficient here: the wizard only pre-fills the email field and then polls for the session cookie, so there's no need to wait for the network to settle.Testing
python -m pytest -q -m "not integration"— 335 passed, 2 skipped (Python 3.12, mcp 1.29.0)claude mcp list→ ✔ Connected)🤖 Generated with Claude Code