litellm/tests/mcp_tests
Gaurav Singh 29bb73ffca
fix(mcp): strip stale mcp-session-id header to prevent 400 in multi-worker deployments (#20992) (#21417)
In a multi-worker Uvicorn setup, a client that reconnects to a different
worker sends an mcp-session-id that the new worker has never seen.  The
MCP SDK returns 400 because the session is unknown.

Fix: add _handle_stale_mcp_session() which inspects the inbound
mcp-session-id header before the request reaches the SDK.  If the
session is not in this worker's _server_instances:
  - Non-DELETE: strip the header so the SDK creates a fresh session
  - DELETE: return 200 immediately (idempotent, session already gone)

No new dependencies, no Redis, no latency added to the hot path.

Fixes https://github.com/BerriAI/litellm/issues/20992
2026-02-27 10:59:08 -08:00
..
test_configs test: MCP E2E streamable_http 2026-01-19 11:12:36 +09:00
conftest.py [Perf] Improvements for Async Success Handler (Logging Callbacks) - Approx +130 RPS (#13905) 2025-08-23 13:13:23 -07:00
mcp_server.py test: const 2026-01-19 12:03:26 +09:00
test_aresponses_api_with_mcp.py Fix MCP streaming test skip logic and metadata None check (#20428) 2026-02-12 19:39:05 +05:30
test_mcp_auth_header_extraction.py Auth Header Fix for MCP Tool Call (#15736) 2025-10-21 13:58:03 -07:00
test_mcp_auth_priority.py [Feat] MCP Oauth2 Fixes - Add support for MCP M2M Oauth2 support (#20788) 2026-02-09 17:35:11 -08:00
test_mcp_chat_completions.py fixing mcp tests 2026-02-12 17:53:40 -08:00
test_mcp_client_unit.py fix(mcp): resolve OAuth2 'Capabilities: none' bug for upstream MCP servers (#20602) 2026-02-06 15:00:35 -08:00
test_mcp_guardrails.py [MCP Gateway] Litellm mcp pre and during guardrails (#13188) 2025-08-01 20:02:25 -07:00
test_mcp_hooks.py [MCP gateway] add pre and during call hooks init (#13067) 2025-07-29 11:06:58 -07:00
test_mcp_litellm_client.py [MCP Gateway] Litellm mcp client list fail (#13114) 2025-07-30 15:23:19 -07:00
test_mcp_logging.py fix: import LiteLLM_ObjectPermissionTable from _types instead of proxy_server 2026-02-13 14:46:03 -03:00
test_mcp_server.py fix(mcp): strip stale mcp-session-id header to prevent 400 in multi-worker deployments (#20992) (#21417) 2026-02-27 10:59:08 -08:00
test_oauth2_mcp_config.yaml [UI] M2M OAuth2 UI Flow (#20794) 2026-02-09 19:28:02 -08:00
test_openapi_spec_path_url.py mcp: support http(s) URLs for spec_path in OpenAPI MCP loader (#20753) 2026-02-10 16:00:36 +05:30
test_proxy_mcp_e2e.py test(mcp): add e2e test for stateless StreamableHTTP behavior (#22033) 2026-02-26 09:30:03 -08:00
test_semantic_tool_filter_e2e.py Skip test_e2e_semantic_filter when OPENAI_API_KEY is not set (#20387) 2026-02-03 22:09:47 -08:00