FastMCP server death on client HEAD calls
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Leia mcp/server/streamable_http.py, especialmente message_router, e siga o ponto de entrada FastMCP.run_streamable_http_async descrito no traceback. Reproduza uma requisição HEAD contra o endpoint HTTP streamable, revise as alterações tentadas no middleware e na versão em deephaven-mcp PR #89 e verifique se o servidor continua em execução sem um encerramento inesperado causado por ClosedResourceError.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Initial Checks
- I confirm that I'm using the latest version of MCP Python SDK
- I confirm that I searched for my issue in https://github.com/modelcontextprotocol/python-sdk/issues before opening this issue
Description
I am using streamable HTTP for MCP. I see HTTP HEAD calls in the log which killing the server. I expect the server to be resilient to poor user behavior.
My code:
https://github.com/deephaven/deephaven-mcp/tree/main/src/deephaven_mcp/mcp_docs_server
Example logs:
2025-08-13 09:29:26.178 PDT
[2025-08-13 16:29:26,179] INFO: [mcp_docs_server:app_lifespan] MCP docs server ready and yielding context
2025-08-13 09:29:26.179 PDT
INFO: 169.254.169.126:65146 - "HEAD /mcp HTTP/1.1" 405 Method Not Allowed
2025-08-13 09:29:26.179 PDT
[2025-08-13 16:29:26,180] INFO: Terminating session: None
2025-08-13 09:29:26.183 PDT
[2025-08-13 16:29:26,180] ERROR: Error in message router
2025-08-13 09:29:26.183 PDT
Traceback (most recent call last):
File "/app/.venv/lib/python3.12/site-packages/mcp/server/streamable_http.py", line 831, in message_router
async for session_message in write_stream_reader:
File "/app/.venv/lib/python3.12/site-packages/anyio/abc/_streams.py", line 41, in __anext__
return await self.receive()
2025-08-13 09:29:26.183 PDT
^^^^^^^^^^^^^^^^^^^^
2025-08-13 09:29:26.183 PDT
File "/app/.venv/lib/python3.12/site-packages/anyio/streams/memory.py", line 111, in receive
2025-08-13 09:29:26.183 PDT
return self.receive_nowait()
2025-08-13 09:29:26.183 PDT
^^^^^^^^^^^^^^^^^^^^^
2025-08-13 09:29:26.183 PDT
File "/app/.venv/lib/python3.12/site-packages/anyio/streams/memory.py", line 93, in receive_nowait
2025-08-13 09:29:26.183 PDT
raise ClosedResourceError
2025-08-13 09:29:26.183 PDT
anyio.ClosedResourceError
2025-08-13 09:29:26.183 PDT
[2025-08-13 16:29:26,184] INFO: [mcp_docs_server:app_lifespan] Context manager exiting normally
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,184] INFO: [mcp_docs_server:app_lifespan] Final memory usage: 109.02 MB
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,184] INFO: [mcp_docs_server:app_lifespan] Final CPU percent: 0.0%
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,184] INFO: [mcp_docs_server:app_lifespan] Final open file descriptors: 11
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,185] INFO: [mcp_docs_server:app_lifespan] shutdown active asyncio tasks: 3
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,185] WARNING: [mcp_docs_server:app_lifespan] Running tasks during shutdown: 3
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,185] WARNING: [mcp_docs_server:app_lifespan] Running task 1: mcp.server.streamable_http_manager.StreamableHTTPSessionManager._handle_stateless_request.<locals>.run_stateless_server
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,185] WARNING: [mcp_docs_server:app_lifespan] Running task 2: Task-2
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,185] WARNING: [mcp_docs_server:app_lifespan] Running task 3: mcp.server.fastmcp.server.FastMCP.run_streamable_http_async
2025-08-13 09:29:26.184 PDT
[2025-08-13 16:29:26,185] INFO: [mcp_docs_server:app_lifespan] shutdown active threads: 1
2025-08-13 09:29:26.185 PDT
[2025-08-13 16:29:26,185] INFO: [mcp_docs_server:app_lifespan] MCP docs server shutting down
My attempts to work around this problem are in this PR. You would need to look at the whole history of what I tried. I included different middleware changes, increasing versions, etc.
https://github.com/deephaven/deephaven-mcp/pull/89
Example Code
My code:
https://github.com/deephaven/deephaven-mcp/tree/main/src/deephaven_mcp/mcp_docs_server
Python & MCP Python SDK
The build can be found at https://github.com/deephaven/deephaven-mcp/blob/main/ops/docker/mcp-docs/Dockerfile. It is python 3.12 with the latest mcp (version >= 1.12.4).
- Linguagem predominante
- Python
- Estrelas
- 24.3k
- Forks
- 4k
- Merge médio
- 1d 11h
- PRs com merge (30d)
- 30
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de modelcontextprotocol/python-sdk
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
modelcontextprotocol/python-sdk#3566 ·
-
v1 v2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
modelcontextprotocol/python-sdk#3546 · 5 comentários ·
-
v1 v2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
modelcontextprotocol/python-sdk#3545 · 1 comentário ·
-
v1 v2
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 91/100
modelcontextprotocol/python-sdk#3508 · 2 comentários ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
modelcontextprotocol/python-sdk#3504 ·
Todas as issues de modelcontextprotocol/python-sdk
Issues semelhantes
-
bug confirmed issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
open-webui/open-webui#30750 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
good first issue
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100