Initial Checks
Description
When trying to connect to an MCP server using streamablehttp_client and ClientSession, the client prints Unexpected content type error if the server responds with anything other than the expected MCP JSON stream (e.g. error page, misconfigured endpoint, etc.).
This makes it difficult to handle cases where the server is not reachable or not serving MCP correctly, since no exception is raised.
Example Code
import asyncio
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
async def main():
async with streamablehttp_client(
url="http://localhost:3001/mcp",
) as (read, write, _):
async with ClientSession(read, write) as session:
try:
await session.initialize()
except Exception as e:
print(f"Failed to initialize MCP session: {e}")
return
print("MCP session initialized")
if __name__ == "__main__":
asyncio.run(main())
Output
Unexpected content type: text/html; charset=utf-8
Python & MCP Python SDK