Add mcp-advanced module: resources, prompts, sampling and elicitation on Spring AI 2.0.2 and MCP Java SDK 2.1.0
An incident-desk MCP server with a fixed resource, two resource templates, a prompt, a tool that borrows the client's model (sampling) and a tool that asks the operator to approve a restart (elicitation). Driven by a plain SDK client in JUnit and by raw curl, so the JSON-RPC for both server-to-client requests is committed. Also captured: a client that declared neither capability (a gated tool degrades, an ungated one returns an isError result), a slow client hitting the server request timeout, and protocol=STATELESS silently dropping every tool that takes McpSyncRequestContext (one WARN line, an empty tools/list). Negotiated protocol version is 2025-11-25; the 2026-07-28 spec is not implemented by SDK 2.1.0. No docs/ folder. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b5jAFLJrmUXmbo5EuV
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# elicitation/create on the wire
|
||||
|
||||
## 1. client -> server (POST, answers arrive later on the same session)
|
||||
tools/call restart_service {"service":"payments-api"}
|
||||
|
||||
## 2. server -> client, on the SSE stream of that same POST
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "elicitation/create",
|
||||
"id": "7899c995-7e19-45a9-8b27-a043acabe802-1",
|
||||
"params": {
|
||||
"message": "Restart payments-api? This drops in-flight requests.",
|
||||
"requestedSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"confirm": {
|
||||
"type": "boolean",
|
||||
"description": "Tick to approve the restart"
|
||||
},
|
||||
"ticket": {
|
||||
"type": "string",
|
||||
"description": "Change ticket number, e.g. CHG-2291"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"confirm",
|
||||
"ticket"
|
||||
]
|
||||
},
|
||||
"_meta": {},
|
||||
"mode": "form"
|
||||
}
|
||||
}
|
||||
|
||||
## 3. client -> server, a NEW POST carrying the answer (same id as the server's request)
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": "7899c995-7e19-45a9-8b27-a043acabe802-1",
|
||||
"result": {
|
||||
"action": "accept",
|
||||
"content": {
|
||||
"confirm": true,
|
||||
"ticket": "CHG-2291"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
## 4. server -> client, the original tools/call finally completes
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 7,
|
||||
"result": {
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "RESTARTED payments-api under CHG-2291"
|
||||
}
|
||||
],
|
||||
"isError": false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user