Skip to content

Commit 60909a3

Browse files
authored
Merge pull request #137 from ierickson/ie/upgrade-mcp-package
Upgrades the mcp package dependency to 1.8.1
2 parents f180bda + 1d08e52 commit 60909a3

File tree

5 files changed

+38
-16
lines changed

5 files changed

+38
-16
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.3.4]
9+
10+
Updates the `mcp` dependency to `1.8.1`.
11+
812
## [0.3.3]
913

1014
Fixes the broken release from 0.3.2.

fastapi_mcp/transport/sse.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from anyio.streams.memory import MemoryObjectSendStream
66
from fastapi import Request, Response, BackgroundTasks, HTTPException
77
from fastapi.responses import JSONResponse
8+
from mcp.shared.message import SessionMessage
89
from pydantic import ValidationError
910
from mcp.server.sse import SseServerTransport
1011
from mcp.types import JSONRPCMessage, JSONRPCError, ErrorData
@@ -87,7 +88,7 @@ async def handle_fastapi_post_message(self, request: Request) -> Response:
8788

8889
# Create background task to send message
8990
background_tasks = BackgroundTasks()
90-
background_tasks.add_task(self._send_message_safely, writer, message)
91+
background_tasks.add_task(self._send_message_safely, writer, SessionMessage(message))
9192
logger.debug("Accepting message, will send in background")
9293

9394
# Return response with background task
@@ -96,7 +97,7 @@ async def handle_fastapi_post_message(self, request: Request) -> Response:
9697
return response
9798

9899
async def _send_message_safely(
99-
self, writer: MemoryObjectSendStream[JSONRPCMessage], message: Union[JSONRPCMessage, ValidationError]
100+
self, writer: MemoryObjectSendStream[SessionMessage], message: Union[SessionMessage, ValidationError]
100101
):
101102
"""Send a message to the writer, avoiding ASGI race conditions"""
102103

@@ -115,7 +116,7 @@ async def _send_message_safely(
115116
id="unknown", # We don't know the ID from the invalid request
116117
error=error_data,
117118
)
118-
error_message = JSONRPCMessage(root=json_rpc_error)
119+
error_message = SessionMessage(JSONRPCMessage(root=json_rpc_error))
119120
await writer.send(error_message)
120121
else:
121122
await writer.send(message)

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "fastapi-mcp"
7-
version = "0.3.3"
7+
version = "0.3.4"
88
description = "Automatic MCP server generator for FastAPI applications - converts FastAPI endpoints to MCP tools for LLM integration"
99
readme = "README.md"
1010
requires-python = ">=3.10"
@@ -29,7 +29,7 @@ dependencies = [
2929
"fastapi>=0.100.0",
3030
"typer>=0.9.0",
3131
"rich>=13.0.0",
32-
"mcp>=1.6.0",
32+
"mcp>=1.8.1",
3333
"pydantic>=2.0.0",
3434
"pydantic-settings>=2.5.2",
3535
"uvicorn>=0.20.0",

tests/test_sse_mock_transport.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from uuid import UUID
44
from unittest.mock import AsyncMock, MagicMock, patch
55
from fastapi import HTTPException, Request
6+
from mcp.shared.message import SessionMessage
67
from pydantic import ValidationError
78
from anyio.streams.memory import MemoryObjectSendStream
89

@@ -145,9 +146,10 @@ async def test_send_message_safely_with_validation_error(
145146
# Verify that the writer.send was called with a JSONRPCError
146147
assert mock_writer.send.called
147148
sent_message = mock_writer.send.call_args[0][0]
148-
assert isinstance(sent_message, JSONRPCMessage)
149-
assert isinstance(sent_message.root, JSONRPCError)
150-
assert sent_message.root.error.code == -32700 # Parse error code
149+
assert isinstance(sent_message, SessionMessage)
150+
assert isinstance(sent_message.message, JSONRPCMessage)
151+
assert isinstance(sent_message.message.root, JSONRPCError)
152+
assert sent_message.message.root.error.code == -32700 # Parse error code
151153

152154

153155
@pytest.mark.anyio
@@ -156,7 +158,9 @@ async def test_send_message_safely_with_jsonrpc_message(
156158
) -> None:
157159
"""Test sending a JSONRPCMessage safely."""
158160
# Create a JSONRPCMessage
159-
message = JSONRPCMessage.model_validate({"jsonrpc": "2.0", "id": "123", "method": "test_method", "params": {}})
161+
message = SessionMessage(
162+
JSONRPCMessage.model_validate({"jsonrpc": "2.0", "id": "123", "method": "test_method", "params": {}})
163+
)
160164

161165
# Call the function
162166
await mock_transport._send_message_safely(mock_writer, message)
@@ -176,7 +180,9 @@ async def test_send_message_safely_exception_handling(
176180
mock_writer.send.side_effect = Exception("Test exception")
177181

178182
# Create a message
179-
message = JSONRPCMessage.model_validate({"jsonrpc": "2.0", "id": "123", "method": "test_method", "params": {}})
183+
message = SessionMessage(
184+
JSONRPCMessage.model_validate({"jsonrpc": "2.0", "id": "123", "method": "test_method", "params": {}})
185+
)
180186

181187
# Call the function - it should not raise an exception
182188
await mock_transport._send_message_safely(mock_writer, message)

uv.lock

Lines changed: 17 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)