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)
@@ -88,6 +93,7 @@ async def test_server_capabilities():
8893 caps = server .get_capabilities (notification_options , experimental_capabilities )
8994 assert caps .prompts is None
9095 assert caps .resources is None
96+ assert caps .completions is None
9197
9298 # Add a prompts handler
9399 @server .list_prompts ()
@@ -97,6 +103,7 @@ async def list_prompts():
97103 caps = server .get_capabilities (notification_options , experimental_capabilities )
98104 assert caps .prompts == PromptsCapability (listChanged = False )
99105 assert caps .resources is None
106+ assert caps .completions is None
100107
101108 # Add a resources handler
102109 @server .list_resources ()
@@ -106,6 +113,21 @@ async def list_resources():
106113 caps = server .get_capabilities (notification_options , experimental_capabilities )
107114 assert caps .prompts == PromptsCapability (listChanged = False )
108115 assert caps .resources == ResourcesCapability (subscribe = False , listChanged = False )
116+ assert caps .completions is None
117+
118+ # Add a complete handler
119+ @server .completion ()
120+ async def complete (
121+ ref : PromptReference | ResourceReference , argument : CompletionArgument
122+ ):
123+ return Completion (
124+ values = ["completion1" , "completion2" ],
125+ )
126+
127+ caps = server .get_capabilities (notification_options , experimental_capabilities )
128+ assert caps .prompts == PromptsCapability (listChanged = False )
129+ assert caps .resources == ResourcesCapability (subscribe = False , listChanged = False )
130+ assert caps .completions == CompletionsCapability ()
109131
110132
111133@pytest .mark .anyio
0 commit comments