77from anyio .streams .memory import MemoryObjectReceiveStream , MemoryObjectSendStream
88from pydantic import AnyUrl
99
10- from mcp .server import types
10+ from mcp .server . models import InitializationOptions
1111from mcp .server .session import ServerSession
1212from mcp .server .stdio import stdio_server as stdio_server
1313from mcp .shared .context import RequestContext
1414from mcp .shared .session import RequestResponder
1515from mcp .types import (
1616 METHOD_NOT_FOUND ,
1717 CallToolRequest ,
18+ GetPromptResult ,
19+ GetPromptRequest ,
20+ GetPromptResult ,
21+ ImageContent ,
1822 ClientNotification ,
1923 ClientRequest ,
2024 CompleteRequest ,
@@ -84,7 +88,7 @@ def create_initialization_options(
8488 self ,
8589 notification_options : NotificationOptions | None = None ,
8690 experimental_capabilities : dict [str , dict [str , Any ]] | None = None ,
87- ) -> types . InitializationOptions :
91+ ) -> InitializationOptions :
8892 """Create initialization options from this server instance."""
8993
9094 def pkg_version (package : str ) -> str :
@@ -99,7 +103,7 @@ def pkg_version(package: str) -> str:
99103
100104 return "unknown"
101105
102- return types . InitializationOptions (
106+ return InitializationOptions (
103107 server_name = self .name ,
104108 server_version = pkg_version ("mcp" ),
105109 capabilities = self .get_capabilities (
@@ -168,50 +172,16 @@ async def handler(_: Any):
168172 return decorator
169173
170174 def get_prompt (self ):
171- from mcp .types import (
172- GetPromptRequest ,
173- GetPromptResult ,
174- ImageContent ,
175- )
176- from mcp .types import (
177- Role as Role ,
178- )
179-
180175 def decorator (
181176 func : Callable [
182- [str , dict [str , str ] | None ], Awaitable [types . PromptResponse ]
177+ [str , dict [str , str ] | None ], Awaitable [GetPromptResult ]
183178 ],
184179 ):
185180 logger .debug ("Registering handler for GetPromptRequest" )
186181
187182 async def handler (req : GetPromptRequest ):
188183 prompt_get = await func (req .params .name , req .params .arguments )
189- messages : list [PromptMessage ] = []
190- for message in prompt_get .messages :
191- match message .content :
192- case str () as text_content :
193- content = TextContent (type = "text" , text = text_content )
194- case types .ImageContent () as img_content :
195- content = ImageContent (
196- type = "image" ,
197- data = img_content .data ,
198- mimeType = img_content .mime_type ,
199- )
200- case types .EmbeddedResource () as resource :
201- content = EmbeddedResource (
202- type = "resource" , resource = resource .resource
203- )
204- case _:
205- raise ValueError (
206- f"Unexpected content type: { type (message .content )} "
207- )
208-
209- prompt_message = PromptMessage (role = message .role , content = content )
210- messages .append (prompt_message )
211-
212- return ServerResult (
213- GetPromptResult (description = prompt_get .desc , messages = messages )
214- )
184+ return ServerResult (prompt_get )
215185
216186 self .request_handlers [GetPromptRequest ] = handler
217187 return func
@@ -338,7 +308,7 @@ def call_tool(self):
338308 def decorator (
339309 func : Callable [
340310 ...,
341- Awaitable [Sequence [str | types . ImageContent | types . EmbeddedResource ]],
311+ Awaitable [Sequence [TextContent | ImageContent | EmbeddedResource ]],
342312 ],
343313 ):
344314 logger .debug ("Registering handler for CallToolRequest" )
@@ -351,15 +321,15 @@ async def handler(req: CallToolRequest):
351321 match result :
352322 case str () as text :
353323 content .append (TextContent (type = "text" , text = text ))
354- case types . ImageContent () as img :
324+ case ImageContent () as img :
355325 content .append (
356326 ImageContent (
357327 type = "image" ,
358328 data = img .data ,
359- mimeType = img .mime_type ,
329+ mimeType = img .mimeType ,
360330 )
361331 )
362- case types . EmbeddedResource () as resource :
332+ case EmbeddedResource () as resource :
363333 content .append (
364334 EmbeddedResource (
365335 type = "resource" , resource = resource .resource
@@ -427,7 +397,7 @@ async def run(
427397 self ,
428398 read_stream : MemoryObjectReceiveStream [JSONRPCMessage | Exception ],
429399 write_stream : MemoryObjectSendStream [JSONRPCMessage ],
430- initialization_options : types . InitializationOptions ,
400+ initialization_options : InitializationOptions ,
431401 # When True, exceptions are returned as messages to the client.
432402 # When False, exceptions are raised, which will cause the server to shut down
433403 # but also make tracing exceptions much easier during testing and when using
0 commit comments