Skip to content

Commit 9fa818e

Browse files
authored
mcp - elicitation - fix server request (#1281)
1 parent 01b821c commit 9fa818e

File tree

2 files changed

+10
-17
lines changed

2 files changed

+10
-17
lines changed

tests_integ/mcp/elicitation_server.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
"""
55

66
from mcp.server import FastMCP
7-
from mcp.types import ElicitRequest, ElicitRequestParams, ElicitResult
7+
from pydantic import BaseModel, Field
8+
9+
10+
class ApprovalSchema(BaseModel):
11+
message: str = Field(description="request message")
812

913

1014
def server() -> None:
@@ -18,21 +22,10 @@ async def approval_tool() -> str:
1822
Returns:
1923
The elicitation result from the user.
2024
"""
21-
request = ElicitRequest(
22-
method="elicitation/create",
23-
params=ElicitRequestParams(
24-
message="Do you approve",
25-
requestedSchema={
26-
"type": "object",
27-
"properties": {
28-
"message": {"type": "string", "description": "request message"},
29-
},
30-
"required": ["message"],
31-
},
32-
),
25+
result = await server_.get_context().elicit(
26+
message="Do you approve",
27+
schema=ApprovalSchema,
3328
)
34-
result = await server_.get_context().session.send_request(request, ElicitResult)
35-
3629
return result.model_dump_json()
3730

3831
server_.run(transport="stdio")

tests_integ/mcp/test_mcp_elicitation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@pytest.fixture
1212
def callback():
1313
async def callback_(_, params):
14-
return ElicitResult(action="accept", content={"message": params.message})
14+
return ElicitResult(action="accept", content={"message": f"server_message=<{params.message}>"})
1515

1616
return callback_
1717

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

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

0 commit comments

Comments
 (0)