49b9bb6724
Deploy Docs / deploy-docs (push) Failing after 1s
Conformance Tests / client-conformance (push) Failing after 3s
Conformance Tests / server-conformance (push) Failing after 1s
GitHub Actions Security Analysis / zizmor (push) Failing after 1s
CI / checks (push) Failing after 59m20s
CI / all-green (push) Waiting to run
24 lines
984 B
Python
24 lines
984 B
Python
from mcp_types import CallToolResult, ElicitRequest, ElicitResult, InputRequest, InputRequiredResult, InputResponse
|
|
|
|
from mcp import Client
|
|
|
|
|
|
def fulfil(request: InputRequest) -> InputResponse:
|
|
if not isinstance(request, ElicitRequest):
|
|
raise NotImplementedError(f"this client cannot answer a {request.method!r} request")
|
|
return ElicitResult(action="accept", content={"region": "eu-west-1"})
|
|
|
|
|
|
async def provision(client: Client, name: str) -> CallToolResult:
|
|
result = await client.session.call_tool("provision", {"name": name}, allow_input_required=True)
|
|
while isinstance(result, InputRequiredResult):
|
|
responses = {key: fulfil(request) for key, request in (result.input_requests or {}).items()}
|
|
result = await client.session.call_tool(
|
|
"provision",
|
|
{"name": name},
|
|
input_responses=responses,
|
|
request_state=result.request_state,
|
|
allow_input_required=True,
|
|
)
|
|
return result
|