7
7
from anyio .streams .memory import MemoryObjectReceiveStream , MemoryObjectSendStream
8
8
from pydantic import AnyUrl
9
9
10
- from mcp .server import types
10
+ from mcp .server . models import InitializationOptions
11
11
from mcp .server .session import ServerSession
12
12
from mcp .server .stdio import stdio_server as stdio_server
13
13
from mcp .shared .context import RequestContext
14
14
from mcp .shared .session import RequestResponder
15
15
from mcp .types import (
16
16
METHOD_NOT_FOUND ,
17
17
CallToolRequest ,
18
+ GetPromptResult ,
19
+ GetPromptRequest ,
20
+ GetPromptResult ,
21
+ ImageContent ,
18
22
ClientNotification ,
19
23
ClientRequest ,
20
24
CompleteRequest ,
@@ -84,7 +88,7 @@ def create_initialization_options(
84
88
self ,
85
89
notification_options : NotificationOptions | None = None ,
86
90
experimental_capabilities : dict [str , dict [str , Any ]] | None = None ,
87
- ) -> types . InitializationOptions :
91
+ ) -> InitializationOptions :
88
92
"""Create initialization options from this server instance."""
89
93
90
94
def pkg_version (package : str ) -> str :
@@ -99,7 +103,7 @@ def pkg_version(package: str) -> str:
99
103
100
104
return "unknown"
101
105
102
- return types . InitializationOptions (
106
+ return InitializationOptions (
103
107
server_name = self .name ,
104
108
server_version = pkg_version ("mcp" ),
105
109
capabilities = self .get_capabilities (
@@ -168,50 +172,16 @@ async def handler(_: Any):
168
172
return decorator
169
173
170
174
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
-
180
175
def decorator (
181
176
func : Callable [
182
- [str , dict [str , str ] | None ], Awaitable [types . PromptResponse ]
177
+ [str , dict [str , str ] | None ], Awaitable [GetPromptResult ]
183
178
],
184
179
):
185
180
logger .debug ("Registering handler for GetPromptRequest" )
186
181
187
182
async def handler (req : GetPromptRequest ):
188
183
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 )
215
185
216
186
self .request_handlers [GetPromptRequest ] = handler
217
187
return func
@@ -338,7 +308,7 @@ def call_tool(self):
338
308
def decorator (
339
309
func : Callable [
340
310
...,
341
- Awaitable [Sequence [str | types . ImageContent | types . EmbeddedResource ]],
311
+ Awaitable [Sequence [TextContent | ImageContent | EmbeddedResource ]],
342
312
],
343
313
):
344
314
logger .debug ("Registering handler for CallToolRequest" )
@@ -351,15 +321,15 @@ async def handler(req: CallToolRequest):
351
321
match result :
352
322
case str () as text :
353
323
content .append (TextContent (type = "text" , text = text ))
354
- case types . ImageContent () as img :
324
+ case ImageContent () as img :
355
325
content .append (
356
326
ImageContent (
357
327
type = "image" ,
358
328
data = img .data ,
359
- mimeType = img .mime_type ,
329
+ mimeType = img .mimeType ,
360
330
)
361
331
)
362
- case types . EmbeddedResource () as resource :
332
+ case EmbeddedResource () as resource :
363
333
content .append (
364
334
EmbeddedResource (
365
335
type = "resource" , resource = resource .resource
@@ -427,7 +397,7 @@ async def run(
427
397
self ,
428
398
read_stream : MemoryObjectReceiveStream [JSONRPCMessage | Exception ],
429
399
write_stream : MemoryObjectSendStream [JSONRPCMessage ],
430
- initialization_options : types . InitializationOptions ,
400
+ initialization_options : InitializationOptions ,
431
401
# When True, exceptions are returned as messages to the client.
432
402
# When False, exceptions are raised, which will cause the server to shut down
433
403
# but also make tracing exceptions much easier during testing and when using
0 commit comments