Include context into completions (#966)
This commit is contained in:
parent
7b420656de
commit
a3bcabdce2
2 changed files with 363 additions and 7 deletions
|
|
@ -364,6 +364,24 @@ class FastMCP:
|
|||
|
||||
return decorator
|
||||
|
||||
def completion(self):
|
||||
"""Decorator to register a completion handler.
|
||||
|
||||
The completion handler receives:
|
||||
- ref: PromptReference or ResourceTemplateReference
|
||||
- argument: CompletionArgument with name and partial value
|
||||
- context: Optional CompletionContext with previously resolved arguments
|
||||
|
||||
Example:
|
||||
@mcp.completion()
|
||||
async def handle_completion(ref, argument, context):
|
||||
if isinstance(ref, ResourceTemplateReference):
|
||||
# Return completions based on ref, argument, and context
|
||||
return Completion(values=["option1", "option2"])
|
||||
return None
|
||||
"""
|
||||
return self._mcp_server.completion()
|
||||
|
||||
def add_resource(self, resource: Resource) -> None:
|
||||
"""Add a resource to the server.
|
||||
|
||||
|
|
|
|||
|
|
@ -433,6 +433,7 @@ class Server(Generic[LifespanResultT, RequestT]):
|
|||
[
|
||||
types.PromptReference | types.ResourceTemplateReference,
|
||||
types.CompletionArgument,
|
||||
types.CompletionContext | None,
|
||||
],
|
||||
Awaitable[types.Completion | None],
|
||||
],
|
||||
|
|
@ -440,7 +441,7 @@ class Server(Generic[LifespanResultT, RequestT]):
|
|||
logger.debug("Registering handler for CompleteRequest")
|
||||
|
||||
async def handler(req: types.CompleteRequest):
|
||||
completion = await func(req.params.ref, req.params.argument)
|
||||
completion = await func(req.params.ref, req.params.argument, req.params.context)
|
||||
return types.ServerResult(
|
||||
types.CompleteResult(
|
||||
completion=completion
|
||||
|
|
|
|||
Loading…
Reference in a new issue