Skip to content

Python Bug: Error while trying to interact with the MCP server #11800

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Javipercor opened this issue Apr 29, 2025 · 5 comments
Open

Python Bug: Error while trying to interact with the MCP server #11800

Javipercor opened this issue Apr 29, 2025 · 5 comments
Assignees
Labels
bug Something isn't working python Pull requests for the Python Semantic Kernel

Comments

@Javipercor
Copy link

Javipercor commented Apr 29, 2025

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:

  1. Go to python/samples/demos/mcp_server/agent_as_server.py
  2. Execute script with see flag and port 8000
  3. Send GET request to generate session in MCP
  4. 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"}
  5. 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

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

@eavanvalkenburg
Copy link
Member

@Javipercor if I read the last part correctly, this is a bug in the MCP package or not?

@Javipercor
Copy link
Author

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?

@eavanvalkenburg
Copy link
Member

Could it be this one? modelcontextprotocol/python-sdk#583

@Javipercor
Copy link
Author

Don´t think so, more about this open discussion https://github.com/orgs/modelcontextprotocol/discussions/266

@moonbox3
Copy link
Contributor

@Javipercor, with the latest SK 1.31.0 do you still experience an issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working python Pull requests for the Python Semantic Kernel
Projects
Status: Bug
Development

No branches or pull requests

4 participants