From 6f80f0e86376daf8f054d78a4ee0f742055c684f Mon Sep 17 00:00:00 2001 From: Daniele Morotti <58258368+DanieleMorotti@users.noreply.github.com> Date: Fri, 16 May 2025 17:14:56 +0200 Subject: [PATCH 1/5] Added mcp 'instructions' attribute to the server --- src/agents/mcp/server.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/agents/mcp/server.py b/src/agents/mcp/server.py index c5255ead..624bfcd0 100644 --- a/src/agents/mcp/server.py +++ b/src/agents/mcp/server.py @@ -73,6 +73,7 @@ def __init__(self, cache_tools_list: bool, client_session_timeout_seconds: float self.exit_stack: AsyncExitStack = AsyncExitStack() self._cleanup_lock: asyncio.Lock = asyncio.Lock() self.cache_tools_list = cache_tools_list + self.instructions: str | None = None self.client_session_timeout_seconds = client_session_timeout_seconds @@ -122,7 +123,8 @@ async def connect(self): else None, ) ) - await session.initialize() + server_result = await session.initialize() + self.instructions = server_result.instructions or None self.session = session except Exception as e: logger.error(f"Error initializing MCP server: {e}") From cb5c39edc855f3d9edecdd6878567cbeb00809fd Mon Sep 17 00:00:00 2001 From: Daniele Morotti <58258368+DanieleMorotti@users.noreply.github.com> Date: Fri, 16 May 2025 17:27:23 +0200 Subject: [PATCH 2/5] fixed error if server result is None on initialization --- src/agents/mcp/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/mcp/server.py b/src/agents/mcp/server.py index 624bfcd0..86643d1b 100644 --- a/src/agents/mcp/server.py +++ b/src/agents/mcp/server.py @@ -124,7 +124,7 @@ async def connect(self): ) ) server_result = await session.initialize() - self.instructions = server_result.instructions or None + self.instructions = server_result.instructions if hasattr(server_result, "instructions") else None self.session = session except Exception as e: logger.error(f"Error initializing MCP server: {e}") From eee02f39ef3a75dcdffb37471514f574c6301e36 Mon Sep 17 00:00:00 2001 From: Daniele Morotti <58258368+DanieleMorotti@users.noreply.github.com> Date: Fri, 16 May 2025 17:31:33 +0200 Subject: [PATCH 3/5] Solved lint error for line too long --- src/agents/mcp/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/mcp/server.py b/src/agents/mcp/server.py index 86643d1b..d551276a 100644 --- a/src/agents/mcp/server.py +++ b/src/agents/mcp/server.py @@ -124,7 +124,7 @@ async def connect(self): ) ) server_result = await session.initialize() - self.instructions = server_result.instructions if hasattr(server_result, "instructions") else None + self.instructions = getattr(server_result, "instructions", None) self.session = session except Exception as e: logger.error(f"Error initializing MCP server: {e}") From 322d1bdd6fd38c8db1d08aea4e000df8bacbfc9c Mon Sep 17 00:00:00 2001 From: Daniele Morotti <58258368+DanieleMorotti@users.noreply.github.com> Date: Sun, 18 May 2025 17:22:55 +0200 Subject: [PATCH 4/5] Saved "InitializeResult" object instead of "instructions" only --- src/agents/mcp/server.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/agents/mcp/server.py b/src/agents/mcp/server.py index d551276a..e5983f72 100644 --- a/src/agents/mcp/server.py +++ b/src/agents/mcp/server.py @@ -12,7 +12,7 @@ from mcp.client.sse import sse_client from mcp.client.streamable_http import GetSessionIdCallback, streamablehttp_client from mcp.shared.message import SessionMessage -from mcp.types import CallToolResult +from mcp.types import CallToolResult, InitializeResult from typing_extensions import NotRequired, TypedDict from ..exceptions import UserError @@ -73,7 +73,7 @@ def __init__(self, cache_tools_list: bool, client_session_timeout_seconds: float self.exit_stack: AsyncExitStack = AsyncExitStack() self._cleanup_lock: asyncio.Lock = asyncio.Lock() self.cache_tools_list = cache_tools_list - self.instructions: str | None = None + self.server_initialize_result: InitializeResult = None self.client_session_timeout_seconds = client_session_timeout_seconds @@ -124,7 +124,7 @@ async def connect(self): ) ) server_result = await session.initialize() - self.instructions = getattr(server_result, "instructions", None) + self.server_initialize_result = server_result self.session = session except Exception as e: logger.error(f"Error initializing MCP server: {e}") From 6cc87bb54767d1f92679405607402513d13cc6a2 Mon Sep 17 00:00:00 2001 From: Daniele Morotti <58258368+DanieleMorotti@users.noreply.github.com> Date: Sun, 18 May 2025 17:28:52 +0200 Subject: [PATCH 5/5] added None as allowed default type for type checking --- src/agents/mcp/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/mcp/server.py b/src/agents/mcp/server.py index e5983f72..414b517a 100644 --- a/src/agents/mcp/server.py +++ b/src/agents/mcp/server.py @@ -73,7 +73,7 @@ def __init__(self, cache_tools_list: bool, client_session_timeout_seconds: float self.exit_stack: AsyncExitStack = AsyncExitStack() self._cleanup_lock: asyncio.Lock = asyncio.Lock() self.cache_tools_list = cache_tools_list - self.server_initialize_result: InitializeResult = None + self.server_initialize_result: InitializeResult | None = None self.client_session_timeout_seconds = client_session_timeout_seconds