From 937c640f04d9bc74bc3b75419c7a93e22ee0719b Mon Sep 17 00:00:00 2001 From: restlessronin <88921269+restlessronin@users.noreply.github.com> Date: Thu, 5 Dec 2024 10:30:01 +0530 Subject: [PATCH 1/4] feat: add version string parameter to 'create_initialization_options' --- README.md | 9 +-------- src/mcp/server/__init__.py | 3 ++- src/mcp/server/sse.py | 3 ++- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4ef08cfeb..20fd03eb8 100644 --- a/README.md +++ b/README.md @@ -135,14 +135,7 @@ async def run(): await server.run( read_stream, write_stream, - InitializationOptions( - server_name="example", - server_version="0.1.0", - capabilities=server.get_capabilities( - notification_options=NotificationOptions(), - experimental_capabilities={}, - ) - ) + server.create_initialization_options("0.1.0") ) if __name__ == "__main__": diff --git a/src/mcp/server/__init__.py b/src/mcp/server/__init__.py index a0dd033d6..212f0115a 100644 --- a/src/mcp/server/__init__.py +++ b/src/mcp/server/__init__.py @@ -114,6 +114,7 @@ def __init__(self, name: str): def create_initialization_options( self, + version: str | None = None, notification_options: NotificationOptions | None = None, experimental_capabilities: dict[str, dict[str, Any]] | None = None, ) -> InitializationOptions: @@ -133,7 +134,7 @@ def pkg_version(package: str) -> str: return InitializationOptions( server_name=self.name, - server_version=pkg_version("mcp"), + server_version=version if version else pkg_version("mcp"), capabilities=self.get_capabilities( notification_options or NotificationOptions(), experimental_capabilities or {}, diff --git a/src/mcp/server/sse.py b/src/mcp/server/sse.py index 3062b3244..765c0ebab 100644 --- a/src/mcp/server/sse.py +++ b/src/mcp/server/sse.py @@ -19,8 +19,9 @@ async def handle_sse(request): async with sse.connect_sse( request.scope, request.receive, request._send ) as streams: + # Pass user visible version string, egs. 0.1.0 await app.run( - streams[0], streams[1], app.create_initialization_options() + streams[0], streams[1], app.create_initialization_options("0.1.0") ) async def handle_messages(request): From 6f108f7f7c0bc151a1c8a0c1d2830834f8231ac2 Mon Sep 17 00:00:00 2001 From: restlessronin <88921269+restlessronin@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:27:58 +0530 Subject: [PATCH 2/4] doc: added comment to README example --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 20fd03eb8..87eb245be 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ async def run(): await server.run( read_stream, write_stream, - server.create_initialization_options("0.1.0") + server.create_initialization_options("0.1.0") # user visible version number ) if __name__ == "__main__": From 34a257147bb7375846ea2ecb02afd355605e7ec4 Mon Sep 17 00:00:00 2001 From: restlessronin <88921269+restlessronin@users.noreply.github.com> Date: Tue, 10 Dec 2024 20:51:36 +0530 Subject: [PATCH 3/4] chore: revert doc changes --- README.md | 9 ++++++++- src/mcp/server/sse.py | 3 +-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 87eb245be..4ef08cfeb 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,14 @@ async def run(): await server.run( read_stream, write_stream, - server.create_initialization_options("0.1.0") # user visible version number + InitializationOptions( + server_name="example", + server_version="0.1.0", + capabilities=server.get_capabilities( + notification_options=NotificationOptions(), + experimental_capabilities={}, + ) + ) ) if __name__ == "__main__": diff --git a/src/mcp/server/sse.py b/src/mcp/server/sse.py index 765c0ebab..3062b3244 100644 --- a/src/mcp/server/sse.py +++ b/src/mcp/server/sse.py @@ -19,9 +19,8 @@ async def handle_sse(request): async with sse.connect_sse( request.scope, request.receive, request._send ) as streams: - # Pass user visible version string, egs. 0.1.0 await app.run( - streams[0], streams[1], app.create_initialization_options("0.1.0") + streams[0], streams[1], app.create_initialization_options() ) async def handle_messages(request): From 3de4dc1f13fc4800a8bd4f3e6a52f0d4219f30d0 Mon Sep 17 00:00:00 2001 From: restlessronin <88921269+restlessronin@users.noreply.github.com> Date: Tue, 10 Dec 2024 20:54:52 +0530 Subject: [PATCH 4/4] feat: add version string parameter to Server constructor --- src/mcp/server/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mcp/server/__init__.py b/src/mcp/server/__init__.py index 212f0115a..4c5dc04f4 100644 --- a/src/mcp/server/__init__.py +++ b/src/mcp/server/__init__.py @@ -101,8 +101,9 @@ def __init__( class Server: - def __init__(self, name: str): + def __init__(self, name: str, version: str | None = None): self.name = name + self.version = version self.request_handlers: dict[ type, Callable[..., Awaitable[types.ServerResult]] ] = { @@ -114,7 +115,6 @@ def __init__(self, name: str): def create_initialization_options( self, - version: str | None = None, notification_options: NotificationOptions | None = None, experimental_capabilities: dict[str, dict[str, Any]] | None = None, ) -> InitializationOptions: @@ -134,7 +134,7 @@ def pkg_version(package: str) -> str: return InitializationOptions( server_name=self.name, - server_version=version if version else pkg_version("mcp"), + server_version=self.version if self.version else pkg_version("mcp"), capabilities=self.get_capabilities( notification_options or NotificationOptions(), experimental_capabilities or {},