You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
While trying to interact with the MCP Server (python/samples/demos/mcp_server/agent_as_server.py) The server breaks with POST request to list the tools and also to interact with the one available.
ERROR: Exception in ASGI application
Exception Group Traceback (most recent call last):
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| self.scope, self.receive, self.send
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| )
| ^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call
| return await self.app(scope, receive, send)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/applications.py", line 112, in call
| await self.middleware_stack(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 187, in call
| raise exc
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 165, in call
| await self.app(scope, receive, _send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 62, in call
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 714, in call
| await self.middleware_stack(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 734, in app
| await route.handle(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 76, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 73, in app
| response = await f(request)
| ^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/agent_as_server.py", line 120, in handle_sse
| async with sse.connect_sse(request.scope, request.receive, request._send) as (
| ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 235, in aexit
| await self.gen.athrow(value)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/sse.py", line 123, in connect_sse
| async with anyio.create_task_group() as tg:
| ~~~~~~~~~~~~~~~~~~~~~~~^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| "unhandled errors in a TaskGroup", self._exceptions
| ) from None
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/sse.py", line 131, in connect_sse
| yield (read_stream, write_stream)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/agent_as_server.py", line 124, in handle_sse
| await server.run(read_stream, write_stream, server.create_initialization_options())
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/lowlevel/server.py", line 483, in run
| async with AsyncExitStack() as stack:
| ~~~~~~~~~~~~~~^^
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 768, in aexit
| raise exc
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 751, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/shared/session.py", line 210, in aexit
| return await self._task_group.aexit(exc_type, exc_val, exc_tb)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| "unhandled errors in a TaskGroup", self._exceptions
| ) from None
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/tasks.py", line 304, in __step_run_and_handle_result
| result = coro.send(None)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/shared/session.py", line 324, in _receive_loop
| await self._received_request(responder)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/session.py", line 163, in _received_request
| raise RuntimeError(
| "Received request before initialization was complete"
| )
| RuntimeError: Received request before initialization was complete
+------------------------------------
To Reproduce
Steps to reproduce the behavior:
Go to python/samples/demos/mcp_server/agent_as_server.py
Execute script with see flag and port 8000
Send GET request to generate session in MCP
Send POST request to initialize
{"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"MCPClientPoc","version":"1.0.0.0"}},"id":1,"jsonrpc":"2.0"}
Send POST request to list tools
{"method":"tools/list","params":{},"id":1,"jsonrpc":"2.0"}
Expected behavior
Error as the stated in the description will arise
Screenshots
If applicable, add screenshots to help explain your problem.
Platform
Language: Python
Source: Semantic-kernel 1.28.1
AI model: Azure OpenAI GPT-4o(2024-07-18)]
IDE: VS Code
OS: MAC
Temporary Solution
Surfing the web I found that a working patch could be to add the following code after the package imports:
#PATCH
from mcp.server.session import ServerSession
yes, it is.
Maybe if it is a third party bug, that make a execution breaking impact on semantic kernel, the label of the issue has to be different, or the way to report it?
Describe the bug
While trying to interact with the MCP Server (python/samples/demos/mcp_server/agent_as_server.py) The server breaks with POST request to list the tools and also to interact with the one available.
ERROR: Exception in ASGI application
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| self.scope, self.receive, self.send
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| )
| ^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call
| return await self.app(scope, receive, send)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/applications.py", line 112, in call
| await self.middleware_stack(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 187, in call
| raise exc
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/middleware/errors.py", line 165, in call
| await self.app(scope, receive, _send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 62, in call
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 714, in call
| await self.middleware_stack(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 734, in app
| await route.handle(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 76, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/starlette/routing.py", line 73, in app
| response = await f(request)
| ^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/agent_as_server.py", line 120, in handle_sse
| async with sse.connect_sse(request.scope, request.receive, request._send) as (
| ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 235, in aexit
| await self.gen.athrow(value)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/sse.py", line 123, in connect_sse
| async with anyio.create_task_group() as tg:
| ~~~~~~~~~~~~~~~~~~~~~~~^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| "unhandled errors in a TaskGroup", self._exceptions
| ) from None
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/sse.py", line 131, in connect_sse
| yield (read_stream, write_stream)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/agent_as_server.py", line 124, in handle_sse
| await server.run(read_stream, write_stream, server.create_initialization_options())
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/lowlevel/server.py", line 483, in run
| async with AsyncExitStack() as stack:
| ~~~~~~~~~~~~~~^^
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 768, in aexit
| raise exc
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/contextlib.py", line 751, in aexit
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/shared/session.py", line 210, in aexit
| return await self._task_group.aexit(exc_type, exc_val, exc_tb)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 772, in aexit
| raise BaseExceptionGroup(
| "unhandled errors in a TaskGroup", self._exceptions
| ) from None
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/tasks.py", line 304, in __step_run_and_handle_result
| result = coro.send(None)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/shared/session.py", line 324, in _receive_loop
| await self._received_request(responder)
| File "/Users/javipercor/Development/semantic-kernel-mod/python/samples/demos/mcp_server/.venv/lib/python3.13/site-packages/mcp/server/session.py", line 163, in _received_request
| raise RuntimeError(
| "Received request before initialization was complete"
| )
| RuntimeError: Received request before initialization was complete
+------------------------------------
To Reproduce
Steps to reproduce the behavior:
{"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"MCPClientPoc","version":"1.0.0.0"}},"id":1,"jsonrpc":"2.0"}
{"method":"tools/list","params":{},"id":1,"jsonrpc":"2.0"}
Expected behavior
Error as the stated in the description will arise
Screenshots
If applicable, add screenshots to help explain your problem.
Platform
Temporary Solution
Surfing the web I found that a working patch could be to add the following code after the package imports:
#PATCH
from mcp.server.session import ServerSession
old__received_request = ServerSession._received_request
async def _received_request(self, *args, **kwargs):
try:
return await old__received_request(self, *args, **kwargs)
except RuntimeError:
pass
ServerSession._received_request = _received_request
The text was updated successfully, but these errors were encountered: