11from typing import List
2+ from urllib .parse import quote
23
34from uipath .core .tracing import traced
45
89from ..common ._execution_context import UiPathExecutionContext
910from ..common ._folder_context import FolderContext , header_folder
1011from ..common ._models import Endpoint , RequestSpec
12+ from ..common ._resource_identifier import resolve_retrieve_identifier
1113from ._folder_service import FolderService
1214from .mcp import McpServer
1315
@@ -66,7 +68,7 @@ def list(
6668
6769 return [McpServer .model_validate (server ) for server in response .json ()]
6870
69- @traced (name = "mcp_list " , run_type = "uipath" )
71+ @traced (name = "mcp_list_async " , run_type = "uipath" )
7072 async def list_async (
7173 self ,
7274 * ,
@@ -109,18 +111,21 @@ async def main():
109111
110112 return [McpServer .model_validate (server ) for server in response .json ()]
111113
114+ @resource_override (resource_type = "mcpServer" , resource_identifier = "name" )
112115 @resource_override (resource_type = "mcpServer" , resource_identifier = "slug" )
113116 @traced (name = "mcp_retrieve" , run_type = "uipath" )
114117 def retrieve (
115118 self ,
116- slug : str ,
119+ slug : str | None = None ,
117120 * ,
121+ name : str | None = None ,
118122 folder_path : str | None = None ,
119123 ) -> McpServer :
120- """Retrieve a specific MCP server by its slug.
124+ """Retrieve a specific MCP server by its display name or legacy slug.
121125
122126 Args:
123- slug (str): The unique slug identifier for the server.
127+ slug (Optional[str]): The legacy slug identifier of the server.
128+ name (Optional[str]): The display name of the server.
124129 folder_path (Optional[str]): The path of the folder where the server is located.
125130
126131 Returns:
@@ -132,12 +137,13 @@ def retrieve(
132137
133138 client = UiPath()
134139
135- server = client.mcp.retrieve(slug="my-server-slug ", folder_path="MyFolder")
140+ server = client.mcp.retrieve(name="My Server ", folder_path="MyFolder")
136141 print(f"Server: {server.name}, URL: {server.mcp_url}")
137142 ```
138143 """
144+ identifier = resolve_retrieve_identifier (name = name , slug = slug )
139145 spec = self ._retrieve_spec (
140- slug = slug ,
146+ name = identifier ,
141147 folder_path = folder_path ,
142148 )
143149
@@ -150,18 +156,21 @@ def retrieve(
150156
151157 return McpServer .model_validate (response .json ())
152158
159+ @resource_override (resource_type = "mcpServer" , resource_identifier = "name" )
153160 @resource_override (resource_type = "mcpServer" , resource_identifier = "slug" )
154- @traced (name = "mcp_retrieve " , run_type = "uipath" )
161+ @traced (name = "mcp_retrieve_async " , run_type = "uipath" )
155162 async def retrieve_async (
156163 self ,
157- slug : str ,
164+ slug : str | None = None ,
158165 * ,
166+ name : str | None = None ,
159167 folder_path : str | None = None ,
160168 ) -> McpServer :
161- """Asynchronously retrieve a specific MCP server by its slug.
169+ """Asynchronously retrieve an MCP server by its display name or legacy slug.
162170
163171 Args:
164- slug (str): The unique slug identifier for the server.
172+ slug (Optional[str]): The legacy slug identifier of the server.
173+ name (Optional[str]): The display name of the server.
165174 folder_path (Optional[str]): The path of the folder where the server is located.
166175
167176 Returns:
@@ -176,14 +185,15 @@ async def retrieve_async(
176185 sdk = UiPath()
177186
178187 async def main():
179- server = await sdk.mcp.retrieve_async(slug="my-server-slug ", folder_path="MyFolder")
188+ server = await sdk.mcp.retrieve_async(name="My Server ", folder_path="MyFolder")
180189 print(f"Server: {server.name}, URL: {server.mcp_url}")
181190
182191 asyncio.run(main())
183192 ```
184193 """
194+ identifier = resolve_retrieve_identifier (name = name , slug = slug )
185195 spec = self ._retrieve_spec (
186- slug = slug ,
196+ name = identifier ,
187197 folder_path = folder_path ,
188198 )
189199
@@ -223,14 +233,14 @@ def _list_spec(
223233
224234 def _retrieve_spec (
225235 self ,
226- slug : str ,
236+ name : str ,
227237 * ,
228238 folder_path : str | None ,
229239 ) -> RequestSpec :
230240 folder_key = self ._resolve_folder_key (folder_path )
231241 return RequestSpec (
232242 method = "GET" ,
233- endpoint = Endpoint (f"/agenthub_/api/servers/{ slug } " ),
243+ endpoint = Endpoint (f"/agenthub_/api/servers/{ quote ( name , safe = '' ) } " ),
234244 headers = {
235245 ** header_folder (folder_key , None ),
236246 },
0 commit comments