Skip to content

'JSONRPCMessage' object has no attribute 'message' in mcp 1.8.0 #691

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
TheTechromancer opened this issue May 12, 2025 · 2 comments
Open

Comments

@TheTechromancer
Copy link

Running into this error again in 1.8.0:

server-1  | ERROR:    Exception in ASGI application
server-1  |   + Exception Group Traceback (most recent call last):
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
server-1  |   |     result = await app(  # type: ignore[func-returns-value]
server-1  |   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
server-1  |   |     return await self.app(scope, receive, send)
server-1  |   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
server-1  |   |     await super().__call__(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
server-1  |   |     await self.middleware_stack(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
server-1  |   |     raise exc
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
server-1  |   |     await self.app(scope, receive, _send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
server-1  |   |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
server-1  |   |     raise exc
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
server-1  |   |     await app(scope, receive, sender)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 756, in __call__
server-1  |   |     await self.middleware_stack(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 776, in app
server-1  |   |     await route.handle(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 485, in handle
server-1  |   |     await self.app(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
server-1  |   |     await super().__call__(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
server-1  |   |     await self.middleware_stack(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
server-1  |   |     raise exc
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
server-1  |   |     await self.app(scope, receive, _send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
server-1  |   |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
server-1  |   |     raise exc
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
server-1  |   |     await app(scope, receive, sender)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 756, in __call__
server-1  |   |     await self.middleware_stack(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 776, in app
server-1  |   |     await route.handle(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 297, in handle
server-1  |   |     await self.app(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 77, in app
server-1  |   |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
server-1  |   |     raise exc
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
server-1  |   |     await app(scope, receive, sender)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 72, in app
server-1  |   |     response = await func(request)
server-1  |   |                ^^^^^^^^^^^^^^^^^^^
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 278, in app
server-1  |   |     raw_response = await run_endpoint_function(
server-1  |   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
server-1  |   |     return await dependant.call(**values)
server-1  |   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/fastapi_mcp/server.py", line 199, in handle_mcp_connection
server-1  |   |     async with transport.connect_sse(request.scope, request.receive, request._send) as (reader, writer):
server-1  |   |   File "/usr/local/lib/python3.11/contextlib.py", line 231, in __aexit__
server-1  |   |     await self.gen.athrow(typ, value, traceback)
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/mcp/server/sse.py", line 128, in connect_sse
server-1  |   |     async with anyio.create_task_group() as tg:
server-1  |   |   File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__
server-1  |   |     raise BaseExceptionGroup(
server-1  |   | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
server-1  |   +-+---------------- 1 ----------------
server-1  |     | Exception Group Traceback (most recent call last):
server-1  |     |   File "/usr/local/lib/python3.11/site-packages/mcp/server/sse.py", line 147, in connect_sse
server-1  |     |     yield (read_stream, write_stream)
server-1  |     |   File "/usr/local/lib/python3.11/site-packages/fastapi_mcp/server.py", line 200, in handle_mcp_connection
server-1  |     |     await self.server.run(
server-1  |     |   File "/usr/local/lib/python3.11/site-packages/mcp/server/lowlevel/server.py", line 489, in run
server-1  |     |     async with AsyncExitStack() as stack:
server-1  |     |   File "/usr/local/lib/python3.11/contextlib.py", line 745, in __aexit__
server-1  |     |     raise exc_details[1]
server-1  |     |   File "/usr/local/lib/python3.11/contextlib.py", line 728, in __aexit__
server-1  |     |     cb_suppress = await cb(*exc_details)
server-1  |     |                   ^^^^^^^^^^^^^^^^^^^^^^
server-1  |     |   File "/usr/local/lib/python3.11/site-packages/mcp/shared/session.py", line 209, in __aexit__
server-1  |     |     return await self._task_group.__aexit__(exc_type, exc_val, exc_tb)
server-1  |     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
server-1  |     |   File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__
server-1  |     |     raise BaseExceptionGroup(
server-1  |     | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
server-1  |     +-+---------------- 1 ----------------
server-1  |       | Traceback (most recent call last):
server-1  |       |   File "/usr/local/lib/python3.11/site-packages/mcp/server/session.py", line 146, in _receive_loop
server-1  |       |     await super()._receive_loop()
server-1  |       |   File "/usr/local/lib/python3.11/site-packages/mcp/shared/session.py", line 331, in _receive_loop
server-1  |       |     elif isinstance(message.message.root, JSONRPCRequest):
server-1  |       |                     ^^^^^^^^^^^^^^^
server-1  |       |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 989, in __getattr__
server-1  |       |     raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}')
server-1  |       | AttributeError: 'JSONRPCMessage' object has no attribute 'message'
server-1  |       +------------------------------------

@TheTechromancer
Copy link
Author

This may be a compatibility issue with fastapi-mcp.

@yanliaoamorelli
Copy link

I encountered the same issue, and the solution was the one mentioned in this comment. Setting the mcp package to version 1.7.0 resolved the problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants