modelcontextprotocol / modelcontextprotocol/python-sdk

Improve log clarity for "Terminating session: None" in stateless mode

Aberta
#2,329 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

enhancement P3
Linguagem predominante
Python
Estrelas
24.3k
Forks
4k
Merge médio
1d 1h
PRs com merge (30d)
31

Descrição

Description

In stateless HTTP mode, every request logs INFO:mcp.server.streamable_http:Terminating session: None. This is correct behavior — stateless mode creates a new transport with mcp_session_id=None per request and terminates it afterward — but the message is confusing to end users who see it and assume their connection is failing or being dropped.

I maintain an MCP server (ha-mcp) that runs in stateless mode, and this log message regularly causes confusion among users who think they aren't connected.

Suggested change

Differentiate the log message for stateless (session-less) terminations:

# Current (streamable_http.py):
logger.info(f"Terminating session: {self.mcp_session_id}")

# Suggested:
if self.mcp_session_id:
    logger.info(f"Terminating session: {self.mcp_session_id}")
else:
    logger.debug("Stateless request completed, cleaning up transport")

This would:

  • Downgrade stateless cleanup to DEBUG (routine, not noteworthy)
  • Use wording that doesn't alarm users ("completed" vs "Terminating")
  • Keep the existing INFO-level log for actual session terminations
References

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece pelo método terminate() em src/mcp/server/streamable_http.py e, em seguida, compare-o com _handle_stateless_request() em src/mcp/server/streamable_http_manager.py. Confirme que a limpeza stateless é diferenciada da terminação da sessão e que as terminações reais de sessões mantêm seu comportamento de log existente.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
python
Domínio
backend, observability
Tipo de issue
Bug
Dificuldade
2/5
Tempo estimado
1-3 horas
Status de atividade
Estagnada
Clareza
Claramente especificada
Facilidade para iniciantes
45/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.