11
11
from mcp .shared .session import RequestResponder
12
12
from mcp .types import (
13
13
ClientNotification ,
14
+ Completion ,
15
+ CompletionArgument ,
16
+ CompletionsCapability ,
14
17
InitializedNotification ,
18
+ PromptReference ,
15
19
PromptsCapability ,
20
+ ResourceReference ,
16
21
ResourcesCapability ,
17
22
ServerCapabilities ,
18
23
)
@@ -88,6 +93,7 @@ async def test_server_capabilities():
88
93
caps = server .get_capabilities (notification_options , experimental_capabilities )
89
94
assert caps .prompts is None
90
95
assert caps .resources is None
96
+ assert caps .completions is None
91
97
92
98
# Add a prompts handler
93
99
@server .list_prompts ()
@@ -97,6 +103,7 @@ async def list_prompts():
97
103
caps = server .get_capabilities (notification_options , experimental_capabilities )
98
104
assert caps .prompts == PromptsCapability (listChanged = False )
99
105
assert caps .resources is None
106
+ assert caps .completions is None
100
107
101
108
# Add a resources handler
102
109
@server .list_resources ()
@@ -106,6 +113,21 @@ async def list_resources():
106
113
caps = server .get_capabilities (notification_options , experimental_capabilities )
107
114
assert caps .prompts == PromptsCapability (listChanged = False )
108
115
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 ()
109
131
110
132
111
133
@pytest .mark .anyio
0 commit comments