@@ -518,6 +518,10 @@ async def async_tool(x: int, ctx: Context) -> str:
518
518
519
519
@pytest .mark .anyio
520
520
async def test_context_logging (self ):
521
+ from unittest .mock import patch
522
+
523
+ import mcp .server .session
524
+
521
525
"""Test that context logging methods work."""
522
526
mcp = FastMCP ()
523
527
@@ -529,12 +533,26 @@ async def logging_tool(msg: str, ctx: Context) -> str:
529
533
return f"Logged messages for { msg } "
530
534
531
535
mcp .add_tool (logging_tool )
532
- async with client_session (mcp ._mcp_server ) as client :
533
- result = await client .call_tool ("logging_tool" , {"msg" : "test" })
534
- assert len (result .content ) == 1
535
- content = result .content [0 ]
536
- assert isinstance (content , TextContent )
537
- assert "Logged messages for test" in content .text
536
+
537
+ with patch ("mcp.server.session.ServerSession.send_log_message" ) as mock_log :
538
+ async with client_session (mcp ._mcp_server ) as client :
539
+ result = await client .call_tool ("logging_tool" , {"msg" : "test" })
540
+ assert len (result .content ) == 1
541
+ content = result .content [0 ]
542
+ assert isinstance (content , TextContent )
543
+ assert "Logged messages for test" in content .text
544
+
545
+ assert mock_log .call_count == 4
546
+ mock_log .assert_any_call (
547
+ level = "debug" , data = "Debug message" , logger = None
548
+ )
549
+ mock_log .assert_any_call (level = "info" , data = "Info message" , logger = None )
550
+ mock_log .assert_any_call (
551
+ level = "warning" , data = "Warning message" , logger = None
552
+ )
553
+ mock_log .assert_any_call (
554
+ level = "error" , data = "Error message" , logger = None
555
+ )
538
556
539
557
@pytest .mark .anyio
540
558
async def test_optional_context (self ):
@@ -563,8 +581,8 @@ def test_resource() -> str:
563
581
564
582
@mcp .tool ()
565
583
async def tool_with_resource (ctx : Context ) -> str :
566
- data , mime_type = await ctx .read_resource ("test://data" )
567
- return f"Read resource: { data } with mime type { mime_type } "
584
+ data = await ctx .read_resource ("test://data" )
585
+ return f"Read resource: { data } "
568
586
569
587
async with client_session (mcp ._mcp_server ) as client :
570
588
result = await client .call_tool ("tool_with_resource" , {})
0 commit comments