55from contextlib import AsyncExitStack
66from typing import Any
77
8- import mcp .types as types
98from mcp .client ._memory import InMemoryTransport
109from mcp .client .session import ClientSession , ElicitationFnT , ListRootsFnT , LoggingFnT , MessageHandlerFnT , SamplingFnT
1110from mcp .server import Server
1211from mcp .server .fastmcp import FastMCP
1312from mcp .shared .session import ProgressFnT
14- from mcp .types ._types import RequestParamsMeta
13+ from mcp .types import (
14+ CallToolResult ,
15+ CompleteResult ,
16+ EmptyResult ,
17+ GetPromptResult ,
18+ Implementation ,
19+ ListPromptsResult ,
20+ ListResourcesResult ,
21+ ListResourceTemplatesResult ,
22+ ListToolsResult ,
23+ LoggingLevel ,
24+ PaginatedRequestParams ,
25+ PromptReference ,
26+ ReadResourceResult ,
27+ RequestParamsMeta ,
28+ ResourceTemplateReference ,
29+ ServerCapabilities ,
30+ )
1531
1632
1733class Client :
@@ -57,7 +73,7 @@ def __init__(
5773 list_roots_callback : ListRootsFnT | None = None ,
5874 logging_callback : LoggingFnT | None = None ,
5975 message_handler : MessageHandlerFnT | None = None ,
60- client_info : types . Implementation | None = None ,
76+ client_info : Implementation | None = None ,
6177 elicitation_callback : ElicitationFnT | None = None ,
6278 ) -> None :
6379 """Initialize the client with a server.
@@ -138,11 +154,11 @@ def session(self) -> ClientSession:
138154 return self ._session
139155
140156 @property
141- def server_capabilities (self ) -> types . ServerCapabilities | None :
157+ def server_capabilities (self ) -> ServerCapabilities | None :
142158 """The server capabilities received during initialization, or None if not yet initialized."""
143159 return self .session .get_server_capabilities ()
144160
145- async def send_ping (self , * , meta : RequestParamsMeta | None = None ) -> types . EmptyResult :
161+ async def send_ping (self , * , meta : RequestParamsMeta | None = None ) -> EmptyResult :
146162 """Send a ping request to the server."""
147163 return await self .session .send_ping (meta = meta )
148164
@@ -161,12 +177,7 @@ async def send_progress_notification(
161177 message = message ,
162178 )
163179
164- async def set_logging_level (
165- self ,
166- level : types .LoggingLevel ,
167- * ,
168- meta : RequestParamsMeta | None = None ,
169- ) -> types .EmptyResult :
180+ async def set_logging_level (self , level : LoggingLevel , * , meta : RequestParamsMeta | None = None ) -> EmptyResult :
170181 """Set the logging level on the server."""
171182 return await self .session .set_logging_level (level = level , meta = meta )
172183
@@ -175,22 +186,20 @@ async def list_resources(
175186 * ,
176187 cursor : str | None = None ,
177188 meta : RequestParamsMeta | None = None ,
178- ) -> types . ListResourcesResult :
189+ ) -> ListResourcesResult :
179190 """List available resources from the server."""
180- return await self .session .list_resources (params = types . PaginatedRequestParams (cursor = cursor , _meta = meta ))
191+ return await self .session .list_resources (params = PaginatedRequestParams (cursor = cursor , _meta = meta ))
181192
182193 async def list_resource_templates (
183194 self ,
184195 * ,
185196 cursor : str | None = None ,
186197 meta : RequestParamsMeta | None = None ,
187- ) -> types . ListResourceTemplatesResult :
198+ ) -> ListResourceTemplatesResult :
188199 """List available resource templates from the server."""
189- return await self .session .list_resource_templates (
190- params = types .PaginatedRequestParams (cursor = cursor , _meta = meta )
191- )
200+ return await self .session .list_resource_templates (params = PaginatedRequestParams (cursor = cursor , _meta = meta ))
192201
193- async def read_resource (self , uri : str , * , meta : RequestParamsMeta | None = None ) -> types . ReadResourceResult :
202+ async def read_resource (self , uri : str , * , meta : RequestParamsMeta | None = None ) -> ReadResourceResult :
194203 """Read a resource from the server.
195204
196205 Args:
@@ -202,11 +211,11 @@ async def read_resource(self, uri: str, *, meta: RequestParamsMeta | None = None
202211 """
203212 return await self .session .read_resource (uri , meta = meta )
204213
205- async def subscribe_resource (self , uri : str , * , meta : RequestParamsMeta | None = None ) -> types . EmptyResult :
214+ async def subscribe_resource (self , uri : str , * , meta : RequestParamsMeta | None = None ) -> EmptyResult :
206215 """Subscribe to resource updates."""
207216 return await self .session .subscribe_resource (uri , meta = meta )
208217
209- async def unsubscribe_resource (self , uri : str , * , meta : RequestParamsMeta | None = None ) -> types . EmptyResult :
218+ async def unsubscribe_resource (self , uri : str , * , meta : RequestParamsMeta | None = None ) -> EmptyResult :
210219 """Unsubscribe from resource updates."""
211220 return await self .session .unsubscribe_resource (uri , meta = meta )
212221
@@ -218,7 +227,7 @@ async def call_tool(
218227 progress_callback : ProgressFnT | None = None ,
219228 * ,
220229 meta : RequestParamsMeta | None = None ,
221- ) -> types . CallToolResult :
230+ ) -> CallToolResult :
222231 """Call a tool on the server.
223232
224233 Args:
@@ -244,13 +253,13 @@ async def list_prompts(
244253 * ,
245254 cursor : str | None = None ,
246255 meta : RequestParamsMeta | None = None ,
247- ) -> types . ListPromptsResult :
256+ ) -> ListPromptsResult :
248257 """List available prompts from the server."""
249- return await self .session .list_prompts (params = types . PaginatedRequestParams (cursor = cursor , _meta = meta ))
258+ return await self .session .list_prompts (params = PaginatedRequestParams (cursor = cursor , _meta = meta ))
250259
251260 async def get_prompt (
252261 self , name : str , arguments : dict [str , str ] | None = None , * , meta : RequestParamsMeta | None = None
253- ) -> types . GetPromptResult :
262+ ) -> GetPromptResult :
254263 """Get a prompt from the server.
255264
256265 Args:
@@ -265,10 +274,10 @@ async def get_prompt(
265274
266275 async def complete (
267276 self ,
268- ref : types . ResourceTemplateReference | types . PromptReference ,
277+ ref : ResourceTemplateReference | PromptReference ,
269278 argument : dict [str , str ],
270279 context_arguments : dict [str , str ] | None = None ,
271- ) -> types . CompleteResult :
280+ ) -> CompleteResult :
272281 """Get completions for a prompt or resource template argument.
273282
274283 Args:
@@ -281,9 +290,9 @@ async def complete(
281290 """
282291 return await self .session .complete (ref = ref , argument = argument , context_arguments = context_arguments )
283292
284- async def list_tools (self , * , cursor : str | None = None ) -> types . ListToolsResult :
293+ async def list_tools (self , * , cursor : str | None = None , meta : RequestParamsMeta | None = None ) -> ListToolsResult :
285294 """List available tools from the server."""
286- return await self .session .list_tools (params = types . PaginatedRequestParams (cursor = cursor ))
295+ return await self .session .list_tools (params = PaginatedRequestParams (cursor = cursor , _meta = meta ))
287296
288297 async def send_roots_list_changed (self ) -> None :
289298 """Send a notification that the roots list has changed."""
0 commit comments