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
27 lines
950 B
Python
27 lines
950 B
Python
from mcp_types import ElicitRequest, ElicitRequestFormParams, ElicitResult, InputRequiredResult
|
|
|
|
from mcp.server.mcpserver import Context, MCPServer
|
|
from mcp.server.mcpserver.prompts.base import UserMessage
|
|
|
|
mcp = MCPServer("Briefing")
|
|
|
|
ASK_AUDIENCE = ElicitRequest(
|
|
params=ElicitRequestFormParams(
|
|
message="Who is the briefing for?",
|
|
requested_schema={
|
|
"type": "object",
|
|
"properties": {"audience": {"type": "string"}},
|
|
"required": ["audience"],
|
|
},
|
|
)
|
|
)
|
|
|
|
|
|
@mcp.prompt()
|
|
async def briefing(ctx: Context) -> list[UserMessage] | InputRequiredResult:
|
|
"""Draft a briefing tuned to its audience."""
|
|
answer = (ctx.input_responses or {}).get("audience")
|
|
if not isinstance(answer, ElicitResult) or answer.content is None:
|
|
return InputRequiredResult(input_requests={"audience": ASK_AUDIENCE})
|
|
return [UserMessage(f"Write a briefing for {answer.content['audience']}.")]
|