fix(http): keep clients usable across server restarts - #164
Merged
Conversation
chigwell
approved these changes
Jul 24, 2026
KiaroSama
pushed a commit
to KiaroSama/telegram-mcp
that referenced
this pull request
Aug 25, 2026
…starts fix(http): keep clients usable across server restarts
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.
Problem
The shared Streamable HTTP server is intended for long-lived clients such as
Codex, Claude, and Cursor. With FastMCP's stateful HTTP sessions, those clients
retain an MCP session ID. After the Telegram MCP service restarts, the new
server process no longer knows that ID, so the client's next request can fail
with:
The Telegram connection may be healthy at that point; the failure is in the
HTTP transport session left behind by the previous process. Users then have to
re-register or restart otherwise healthy MCP clients.
Change
Construct the shared
FastMCPserver withstateless_http=True.Each Streamable HTTP request can then be handled after a process restart
without relying on an in-memory session created by the old process. Telegram
authentication and the long-lived Telethon client remain owned by the server
process as before.
This setting affects Streamable HTTP transport semantics only. The default
stdio flow remains unchanged.
Validation
stateless HTTP.
uv run pytest tests/test_runtime.py -q— 45 passed.uv run pytest— 164 passed.uv run black --check telegram_mcp/runtime.py tests/test_runtime.pyuv run flake8 telegram_mcp/runtime.py tests/test_runtime.py --count --select=E9,F63,F7,F82 --show-source --statisticsgit diff --checkget_me;get_meafter the restart.