Skip to content

Commit 5638653

Browse files
committed
merge fixes
1 parent 70547c0 commit 5638653

File tree

4 files changed

+18
-17
lines changed

4 files changed

+18
-17
lines changed

src/mcp/server/fastmcp/server.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from __future__ import annotations as _annotations
44

5-
from email import message
65
import inspect
76
import re
87
from collections.abc import AsyncIterator, Awaitable, Callable, Iterable, Sequence
@@ -689,7 +688,10 @@ async def sse_endpoint(request: Request) -> None:
689688

690689
# Create Starlette app with routes and middleware
691690
return Starlette(
692-
debug=self.settings.debug, routes=routes, middleware=middleware, lifespan=lifespan
691+
debug=self.settings.debug,
692+
routes=routes,
693+
middleware=middleware,
694+
lifespan=lifespan,
693695
)
694696

695697
async def list_prompts(self) -> list[MCPPrompt]:

src/mcp/server/message_queue/base.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
from pydantic import ValidationError
88

9-
import mcp.types as types
9+
from mcp.shared.message import SessionMessage
1010

1111
logger = logging.getLogger(__name__)
1212

13-
MessageCallback = Callable[[types.JSONRPCMessage | Exception], Awaitable[None]]
13+
MessageCallback = Callable[[SessionMessage | Exception], Awaitable[None]]
1414

1515

1616
@runtime_checkable
@@ -22,7 +22,7 @@ class MessageDispatch(Protocol):
2222
"""
2323

2424
async def publish_message(
25-
self, session_id: UUID, message: types.JSONRPCMessage | str
25+
self, session_id: UUID, message: SessionMessage | str
2626
) -> bool:
2727
"""Publish a message for the specified session.
2828
@@ -72,7 +72,7 @@ def __init__(self) -> None:
7272
self._callbacks: dict[UUID, MessageCallback] = {}
7373

7474
async def publish_message(
75-
self, session_id: UUID, message: types.JSONRPCMessage | str
75+
self, session_id: UUID, message: SessionMessage | str
7676
) -> bool:
7777
"""Publish a message for the specified session."""
7878
if session_id not in self._callbacks:
@@ -82,7 +82,7 @@ async def publish_message(
8282
# Parse string messages or recreate original ValidationError
8383
if isinstance(message, str):
8484
try:
85-
callback_argument = types.JSONRPCMessage.model_validate_json(message)
85+
callback_argument = SessionMessage.model_validate_json(message)
8686
except ValidationError as exc:
8787
callback_argument = exc
8888
else:

src/mcp/server/sse.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,10 @@ async def handle_post_message(
201201
await self._message_dispatch.publish_message(session_id, body.decode())
202202
return
203203

204-
session_message = SessionMessage(message)
205204
logger.debug(f"Publishing message for session {session_id}: {message}")
206205
response = Response("Accepted", status_code=202)
207206
await response(scope, receive, send)
208-
await self._message_dispatch.publish_message(session_id, message)
209-
logger.debug(f"Sending session message to writer: {session_message}")
207+
await self._message_dispatch.publish_message(
208+
session_id, SessionMessage(message=message)
209+
)
210+
logger.debug(f"Sending session message to writer: {message}")

src/mcp/shared/message.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"""
77

88
from collections.abc import Awaitable, Callable
9-
from dataclasses import dataclass
9+
10+
from pydantic import BaseModel
1011

1112
from mcp.types import JSONRPCMessage, RequestId
1213

@@ -15,8 +16,7 @@
1516
ResumptionTokenUpdateCallback = Callable[[ResumptionToken], Awaitable[None]]
1617

1718

18-
@dataclass
19-
class ClientMessageMetadata:
19+
class ClientMessageMetadata(BaseModel):
2020
"""Metadata specific to client messages."""
2121

2222
resumption_token: ResumptionToken | None = None
@@ -25,8 +25,7 @@ class ClientMessageMetadata:
2525
)
2626

2727

28-
@dataclass
29-
class ServerMessageMetadata:
28+
class ServerMessageMetadata(BaseModel):
3029
"""Metadata specific to server messages."""
3130

3231
related_request_id: RequestId | None = None
@@ -35,8 +34,7 @@ class ServerMessageMetadata:
3534
MessageMetadata = ClientMessageMetadata | ServerMessageMetadata | None
3635

3736

38-
@dataclass
39-
class SessionMessage:
37+
class SessionMessage(BaseModel):
4038
"""A message with specific metadata for transport-specific features."""
4139

4240
message: JSONRPCMessage

0 commit comments

Comments
 (0)