Skip to content

Commit e3dbcc3

Browse files
committed
Expose MCP message handler configuration
1 parent f739155 commit e3dbcc3

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

src/agents/mcp/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111

1212
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
1313
from mcp import ClientSession, StdioServerParameters, Tool as MCPTool, stdio_client
14+
from mcp.client.session import MessageHandlerFnT
1415
from mcp.client.sse import sse_client
1516
from mcp.client.streamable_http import GetSessionIdCallback, streamablehttp_client
16-
from mcp.client.session import MessageHandlerFnT
1717
from mcp.shared.message import SessionMessage
1818
from mcp.types import CallToolResult, GetPromptResult, InitializeResult, ListPromptsResult
1919
from typing_extensions import NotRequired, TypedDict

tests/mcp/test_message_handler.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
import anyio
44
import pytest
5+
from mcp.client.session import MessageHandlerFnT
56
from mcp.shared.message import SessionMessage
6-
from mcp.types import InitializeResult
7+
from mcp.types import Implementation, InitializeResult, ServerCapabilities
78

89
from agents.mcp.server import (
910
MCPServerSse,
10-
MCPServerStreamableHttp,
1111
MCPServerStdio,
12+
MCPServerStreamableHttp,
1213
_MCPServerWithClientSession,
1314
)
14-
from mcp.client.session import MessageHandlerFnT
1515

1616

1717
class _StubClientSession:
@@ -37,8 +37,8 @@ async def __aexit__(self, exc_type, exc, tb):
3737
async def initialize(self) -> InitializeResult:
3838
return InitializeResult(
3939
protocolVersion="2024-11-05",
40-
capabilities={},
41-
serverInfo={"name": "stub", "version": "1.0"},
40+
capabilities=ServerCapabilities(),
41+
serverInfo=Implementation(name="stub", version="1.0"),
4242
)
4343

4444

@@ -53,9 +53,9 @@ def __init__(self, handler: MessageHandlerFnT | None):
5353
def create_streams(self):
5454
@contextlib.asynccontextmanager
5555
async def _streams():
56-
send_stream, recv_stream = anyio.create_memory_object_stream[SessionMessage | Exception](
57-
1
58-
)
56+
send_stream, recv_stream = anyio.create_memory_object_stream[
57+
SessionMessage | Exception
58+
](1)
5959
try:
6060
yield recv_stream, send_stream, None
6161
finally:
@@ -80,8 +80,11 @@ def _recording_client_session(*args, **kwargs):
8080

8181
monkeypatch.setattr("agents.mcp.server.ClientSession", _recording_client_session)
8282

83-
async def handler(message: SessionMessage) -> None:
84-
del message
83+
class _AsyncHandler:
84+
async def __call__(self, message):
85+
del message
86+
87+
handler: MessageHandlerFnT = _AsyncHandler()
8588

8689
server = _MessageHandlerTestServer(handler)
8790

@@ -102,8 +105,11 @@ async def handler(message: SessionMessage) -> None:
102105
],
103106
)
104107
def test_message_handler_propagates_to_server_base(server_cls, params):
105-
def handler(message: SessionMessage) -> None:
106-
del message
108+
class _AsyncHandler:
109+
async def __call__(self, message):
110+
del message
111+
112+
handler: MessageHandlerFnT = _AsyncHandler()
107113

108114
server = server_cls(params, message_handler=handler)
109115

0 commit comments

Comments
 (0)