From 47bf1f2b888fe77d4fdd400d1babbcce5f1d00c3 Mon Sep 17 00:00:00 2001 From: Ricky Sahu Date: Thu, 15 May 2025 15:51:02 -0400 Subject: [PATCH] support messages in progress notifications --- pyproject.toml | 2 +- src/fastmcp/client/client.py | 3 ++- src/fastmcp/server/context.py | 6 +++--- uv.lock | 8 ++++---- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3181fbf1a..18e55305c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ dependencies = [ "python-dotenv>=1.1.0", "exceptiongroup>=1.2.2", "httpx>=0.28.1", - "mcp>=1.8.1,<2.0.0", + "mcp>=1.9.0,<2.0.0", "openapi-pydantic>=0.5.1", "rich>=13.9.4", "typer>=0.15.2", diff --git a/src/fastmcp/client/client.py b/src/fastmcp/client/client.py index 9f5a111f9..77e5a4f63 100644 --- a/src/fastmcp/client/client.py +++ b/src/fastmcp/client/client.py @@ -168,9 +168,10 @@ class Client: progress_token: str | int, progress: float, total: float | None = None, + message: str | None = None, ) -> None: """Send a progress notification.""" - await self.session.send_progress_notification(progress_token, progress, total) + await self.session.send_progress_notification(progress_token, progress, total, message) async def set_logging_level(self, level: mcp.types.LoggingLevel) -> None: """Send a logging/setLevel request.""" diff --git a/src/fastmcp/server/context.py b/src/fastmcp/server/context.py index 79a38d748..f67748e24 100644 --- a/src/fastmcp/server/context.py +++ b/src/fastmcp/server/context.py @@ -56,7 +56,7 @@ class Context: ctx.error("Error message") # Report progress - ctx.report_progress(50, 100) + ctx.report_progress(50, 100, "Processing") # Access resources data = ctx.read_resource("resource://data") @@ -96,7 +96,7 @@ class Context: return self.fastmcp._mcp_server.request_context async def report_progress( - self, progress: float, total: float | None = None + self, progress: float, total: float | None = None, message: str | None = None ) -> None: """Report progress for the current operation. @@ -115,7 +115,7 @@ class Context: return await self.request_context.session.send_progress_notification( - progress_token=progress_token, progress=progress, total=total + progress_token=progress_token, progress=progress, total=total, message=message ) async def read_resource(self, uri: str | AnyUrl) -> list[ReadResourceContents]: diff --git a/uv.lock b/uv.lock index b8398d3d5..8613b7367 100644 --- a/uv.lock +++ b/uv.lock @@ -340,7 +340,7 @@ dev = [ requires-dist = [ { name = "exceptiongroup", specifier = ">=1.2.2" }, { name = "httpx", specifier = ">=0.28.1" }, - { name = "mcp", specifier = ">=1.8.1,<2.0.0" }, + { name = "mcp", specifier = ">=1.9.0,<2.0.0" }, { name = "openapi-pydantic", specifier = ">=0.5.1" }, { name = "python-dotenv", specifier = ">=1.1.0" }, { name = "rich", specifier = ">=13.9.4" }, @@ -573,7 +573,7 @@ wheels = [ [[package]] name = "mcp" -version = "1.8.1" +version = "1.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -586,9 +586,9 @@ dependencies = [ { name = "starlette" }, { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/13/16b712e8a3be6a736b411df2fc6b4e75eb1d3e99b1cd57a3a1decf17f612/mcp-1.8.1.tar.gz", hash = "sha256:ec0646271d93749f784d2316fb5fe6102fb0d1be788ec70a9e2517e8f2722c0e", size = 265605, upload-time = "2025-05-12T17:33:57.887Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/8d/0f4468582e9e97b0a24604b585c651dfd2144300ecffd1c06a680f5c8861/mcp-1.9.0.tar.gz", hash = "sha256:905d8d208baf7e3e71d70c82803b89112e321581bcd2530f9de0fe4103d28749", size = 281432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/5d/91cf0d40e40ae9ecf8d4004e0f9611eea86085aa0b5505493e0ff53972da/mcp-1.8.1-py3-none-any.whl", hash = "sha256:948e03783859fa35abe05b9b6c0a1d5519be452fc079dc8d7f682549591c1770", size = 119761, upload-time = "2025-05-12T17:33:56.136Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d5/22e36c95c83c80eb47c83f231095419cf57cf5cca5416f1c960032074c78/mcp-1.9.0-py3-none-any.whl", hash = "sha256:9dfb89c8c56f742da10a5910a1f64b0d2ac2c3ed2bd572ddb1cfab7f35957178", size = 125082 }, ] [[package]]