fix: Expose completions capability (#865)

This commit is contained in:
Frédéric Barthelet 2025-07-07 10:26:22 +02:00 • committed by GitHub
commit 906ceea388
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -11,8 +11,13 @@ from mcp.shared.message import SessionMessage
from mcp.shared.session import RequestResponder
from mcp.types import (
ClientNotification,
Completion,
CompletionArgument,
CompletionsCapability,
InitializedNotification,
PromptReference,
PromptsCapability,
ResourceReference,
ResourcesCapability,
ServerCapabilities,
)
@ -80,6 +85,7 @@ async def test_server_capabilities():
caps = server.get_capabilities(notification_options, experimental_capabilities)
assert caps.prompts is None
assert caps.resources is None
assert caps.completions is None
# Add a prompts handler
@server.list_prompts()
@ -89,6 +95,7 @@ async def test_server_capabilities():
caps = server.get_capabilities(notification_options, experimental_capabilities)
assert caps.prompts == PromptsCapability(listChanged=False)
assert caps.resources is None
assert caps.completions is None
# Add a resources handler
@server.list_resources()
@ -98,6 +105,19 @@ async def test_server_capabilities():
caps = server.get_capabilities(notification_options, experimental_capabilities)
assert caps.prompts == PromptsCapability(listChanged=False)
assert caps.resources == ResourcesCapability(subscribe=False, listChanged=False)
assert caps.completions is None
# Add a complete handler
@server.completion()
async def complete(ref: PromptReference | ResourceReference, argument: CompletionArgument):
return Completion(
values=["completion1", "completion2"],
)
caps = server.get_capabilities(notification_options, experimental_capabilities)
assert caps.prompts == PromptsCapability(listChanged=False)
assert caps.resources == ResourcesCapability(subscribe=False, listChanged=False)
assert caps.completions == CompletionsCapability()
@pytest.mark.anyio