Skip to content

Commit 63db43b

Browse files
authored
fix(agentgateway): handle empty MCP tool list (#299)
1 parent 2f40acd commit 63db43b

4 files changed

Lines changed: 227 additions & 45 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "sap-cloud-sdk"
3-
version = "0.48.2"
3+
version = "0.48.3"
44
description = "SAP Cloud SDK for Python"
55
readme = "README.md"
66
license = "Apache-2.0"

src/sap_cloud_sdk/agentgateway/_customer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,7 @@ async def _list_server_tools(
668668
)
669669

670670
result = await session.list_tools()
671+
tools = result.tools or []
671672

672673
return [
673674
MCPTool(
@@ -677,7 +678,7 @@ async def _list_server_tools(
677678
input_schema=mcp_input_schema(t),
678679
url=url,
679680
)
680-
for t in result.tools
681+
for t in tools
681682
]
682683

683684

src/sap_cloud_sdk/agentgateway/_lob.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,19 @@
3030
FragmentLabel,
3131
get_ias_fragment_name,
3232
get_ias_user_fragment_name,
33-
list_mcp_fragments,
3433
list_a2a_fragments,
34+
list_mcp_fragments,
3535
)
3636
from sap_cloud_sdk.agentgateway._compat import (
3737
mcp_input_schema,
3838
mcp_is_error,
3939
mcp_server_name,
4040
)
4141
from sap_cloud_sdk.agentgateway._models import (
42-
JsonRpcError,
4342
Agent,
4443
AgentCard,
4544
AgentCardFilter,
45+
JsonRpcError,
4646
MCPTool,
4747
MCPToolFilter,
4848
)
@@ -386,6 +386,11 @@ async def list_server_tools(
386386
init_result = await session.initialize()
387387
server_name = mcp_server_name(init_result) or fragment_name
388388
result = await session.list_tools()
389+
tools = result.tools or []
390+
if not tools:
391+
logger.info(
392+
"No tools returned by AGW for fragment '%s'", fragment_name
393+
)
389394
return [
390395
MCPTool(
391396
name=t.name,
@@ -395,7 +400,7 @@ async def list_server_tools(
395400
url=dest_url,
396401
fragment_name=fragment_name,
397402
)
398-
for t in result.tools
403+
for t in tools
399404
]
400405

401406

0 commit comments

Comments
 (0)