1111from mcp .shared .session import RequestResponder
1212from mcp .types import (
1313 ClientNotification ,
14+ Completion ,
15+ CompletionArgument ,
16+ CompletionsCapability ,
1417 InitializedNotification ,
18+ PromptReference ,
1519 PromptsCapability ,
20+ ResourceReference ,
1621 ResourcesCapability ,
1722 ServerCapabilities ,
1823)
@@ -80,6 +85,7 @@ async def test_server_capabilities():
8085 caps = server .get_capabilities (notification_options , experimental_capabilities )
8186 assert caps .prompts is None
8287 assert caps .resources is None
88+ assert caps .completions is None
8389
8490 # Add a prompts handler
8591 @server .list_prompts ()
@@ -89,6 +95,7 @@ async def list_prompts():
8995 caps = server .get_capabilities (notification_options , experimental_capabilities )
9096 assert caps .prompts == PromptsCapability (listChanged = False )
9197 assert caps .resources is None
98+ assert caps .completions is None
9299
93100 # Add a resources handler
94101 @server .list_resources ()
@@ -98,6 +105,21 @@ async def list_resources():
98105 caps = server .get_capabilities (notification_options , experimental_capabilities )
99106 assert caps .prompts == PromptsCapability (listChanged = False )
100107 assert caps .resources == ResourcesCapability (subscribe = False , listChanged = False )
108+ assert caps .completions is None
109+
110+ # Add a complete handler
111+ @server .completion ()
112+ async def complete (
113+ ref : PromptReference | ResourceReference , argument : CompletionArgument
114+ ):
115+ return Completion (
116+ values = ["completion1" , "completion2" ],
117+ )
118+
119+ caps = server .get_capabilities (notification_options , experimental_capabilities )
120+ assert caps .prompts == PromptsCapability (listChanged = False )
121+ assert caps .resources == ResourcesCapability (subscribe = False , listChanged = False )
122+ assert caps .completions == CompletionsCapability ()
101123
102124
103125@pytest .mark .anyio
0 commit comments