44from mcp .server import Server
55
66
7- @click .group ()
8- def cli ():
9- pass
10-
11-
12- @cli .command ()
13- @click .option ("--port" , default = 8000 , help = "Port to listen on for SSE" )
14- @click .option (
15- "--transport" ,
16- type = click .Choice (["stdio" , "sse" ]),
17- default = "stdio" ,
18- help = "Transport type" ,
19- )
20- def main (port : int , transport : str ) -> int :
21- return anyio .run (_amain , port , transport )
22-
23-
247def create_messages (
258 context : str | None = None , topic : str | None = None
269) -> list [types .PromptMessage ]:
@@ -54,7 +37,19 @@ def create_messages(
5437 return messages
5538
5639
57- async def _amain (port : int , transport : str ) -> int :
40+ @click .group ()
41+ def cli ():
42+ pass
43+
44+
45+ @click .option ("--port" , default = 8000 , help = "Port to listen on for SSE" )
46+ @click .option (
47+ "--transport" ,
48+ type = click .Choice (["stdio" , "sse" ]),
49+ default = "stdio" ,
50+ help = "Transport type" ,
51+ )
52+ def main (port : int , transport : str ) -> int :
5853 app = Server ("mcp-simple-prompt" )
5954
6055 @app .list_prompts ()
@@ -63,7 +58,7 @@ async def list_prompts() -> list[types.Prompt]:
6358 types .Prompt (
6459 name = "simple" ,
6560 description = "A simple prompt that can take optional context and topic "
66- "arguments" ,
61+ "arguments" ,
6762 arguments = [
6863 types .PromptArgument (
6964 name = "context" ,
@@ -103,14 +98,16 @@ async def get_prompt(
10398
10499 sse = SseServerTransport ("/messages" )
105100
106- async def handle_sse (scope , receive , send ):
107- async with sse .connect_sse (scope , receive , send ) as streams :
101+ async def handle_sse (request ):
102+ async with sse .connect_sse (
103+ request .scope , request .receive , request ._send
104+ ) as streams :
108105 await app .run (
109106 streams [0 ], streams [1 ], app .create_initialization_options ()
110107 )
111108
112- async def handle_messages (scope , receive , send ):
113- await sse .handle_post_message (scope , receive , send )
109+ async def handle_messages (request ):
110+ await sse .handle_post_message (request . scope , request . receive , request . _send )
114111
115112 starlette_app = Starlette (
116113 debug = True ,
@@ -126,7 +123,12 @@ async def handle_messages(scope, receive, send):
126123 else :
127124 from mcp .server .stdio import stdio_server
128125
129- async with stdio_server () as streams :
130- await app .run (streams [0 ], streams [1 ], app .create_initialization_options ())
126+ async def arun ():
127+ async with stdio_server () as streams :
128+ await app .run (
129+ streams [0 ], streams [1 ], app .create_initialization_options ()
130+ )
131+
132+ anyio .run (arun )
131133
132134 return 0
0 commit comments