Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 8 additions & 15 deletions tests_integ/mcp/elicitation_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
"""

from mcp.server import FastMCP
from mcp.types import ElicitRequest, ElicitRequestParams, ElicitResult
from pydantic import BaseModel, Field


class ApprovalSchema(BaseModel):
message: str = Field(description="request message")


def server() -> None:
Expand All @@ -18,21 +22,10 @@ async def approval_tool() -> str:
Returns:
The elicitation result from the user.
"""
request = ElicitRequest(
method="elicitation/create",
params=ElicitRequestParams(
message="Do you approve",
requestedSchema={
"type": "object",
"properties": {
"message": {"type": "string", "description": "request message"},
},
"required": ["message"],
},
),
result = await server_.get_context().elicit(
message="Do you approve",
schema=ApprovalSchema,
)
result = await server_.get_context().session.send_request(request, ElicitResult)

return result.model_dump_json()

server_.run(transport="stdio")
Expand Down
4 changes: 2 additions & 2 deletions tests_integ/mcp/test_mcp_elicitation.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
@pytest.fixture
def callback():
async def callback_(_, params):
return ElicitResult(action="accept", content={"message": params.message})
return ElicitResult(action="accept", content={"message": f"server_message=<{params.message}>"})

return callback_

Expand All @@ -36,5 +36,5 @@ def test_mcp_elicitation(client):
tool_result = agent.messages[-2]

tru_result = json.loads(tool_result["content"][0]["toolResult"]["content"][0]["text"])
exp_result = {"meta": None, "action": "accept", "content": {"message": "Do you approve"}}
exp_result = {"action": "accept", "data": {"message": "server_message=<Do you approve>"}}
assert tru_result == exp_result
Loading