Protocol Revision: draft
Elicitation is newly introduced in this version of the MCP specification and its design may evolve in future protocol versions.
User Interaction Model
Elicitation in MCP allows servers to implement interactive workflows by enabling user input requests to occur nested inside other MCP server features. Implementations are free to expose elicitation through any interface pattern that suits their needs—the protocol itself does not mandate any specific user interaction model.For trust & safety and security:
- Servers MUST NOT use elicitation to request sensitive information.
- Provide UI that makes it clear which server is requesting information
- Allow users to review and modify their responses before sending
- Respect user privacy and provide clear decline and cancel options
Capabilities
Clients that support elicitation MUST declare theelicitation
capability during
initialization:
Protocol Messages
Creating Elicitation Requests
To request information from a user, servers send anelicitation/create
request:
Simple Text Request
Request:Structured Data Request
Request:Message Flow
Request Schema
TherequestedSchema
field allows servers to define the structure of the expected response using a restricted subset of JSON Schema. To simplify client user experience, elicitation schemas are limited to flat objects with primitive properties only:
Supported Schema Types
The schema is restricted to these primitive types:-
String Schema
Supported formats:
email
,uri
,date
,date-time
-
Number Schema
-
Boolean Schema
-
Enum Schema
- Generate appropriate input forms
- Validate user input before sending
- Provide better guidance to users
Response Actions
Elicitation responses use a three-action model to clearly distinguish between different user actions:-
Accept (
action: "accept"
): User explicitly approved and submitted with data- The
content
field contains the submitted data matching the requested schema - Example: User clicked “Submit”, “OK”, “Confirm”, etc.
- The
-
Decline (
action: "decline"
): User explicitly declined the request- The
content
field is typically omitted - Example: User clicked “Reject”, “Decline”, “No”, etc.
- The
-
Cancel (
action: "cancel"
): User dismissed without making an explicit choice- The
content
field is typically omitted - Example: User closed the dialog, clicked outside, pressed Escape, etc.
- The
- Accept: Process the submitted data
- Decline: Handle explicit decline (e.g., offer alternatives)
- Cancel: Handle dismissal (e.g., prompt again later)
Security Considerations
- Servers MUST NOT request sensitive information through elicitation
- Clients SHOULD implement user approval controls
- Both parties SHOULD validate elicitation content against the provided schema
- Clients SHOULD provide clear indication of which server is requesting information
- Clients SHOULD allow users to decline elicitation requests at any time
- Clients SHOULD implement rate limiting
- Clients SHOULD present elicitation requests in a way that makes it clear what information is being requested and why