MCP Elicitation Not Working at Runtime - FastMCP Remote Server Issue #665
Replies: 2 comments
i think so , please check evalstate/fast-agent#602 , it's using fastmcp client i guess.
yes it supports , i have tested it.
i don't think so
there is a proposal to make this in-flight tools/call |
|
Your diagnosis is correct: the issue is transport-specific, and you have already identified the root cause in the spec quote. Let me connect the dots. The root cause: SSE does not carry user identityYour testing matrix tells the story:
Elicitation over SSE fails because:
Why MCP Inspector works but Cursor does notMCP Inspector manages the full OAuth flow and maintains session state internally. When it sends an elicitation request via HTTP, the session context (including user identity from the OAuth token) is preserved. Cursor over SSE does not have this — the SSE connection is established once at startup, and there is no per-request auth context. When the server calls The fix: use Streamable HTTP instead of SSEThe spec quote you found is the key:
SSE transport cannot satisfy this requirement. Streamable HTTP transport can. Migrate your server from SSE to Streamable HTTP: # Instead of:
mcp.run(transport="sse", host="0.0.0.0", port=8000)
# Use Streamable HTTP:
mcp.run(transport="streamable-http", host="0.0.0.0", port=8000)And update your Cursor config: {
"servers": {
"my-mcp-server": {
"type": "http",
"url": "https://necessary-fuchsia-cicada.fastmcp.app/mcp"
}
}
}Streamable HTTP carries the MCP session ID and Authorization header on every request, so the server can map elicitation state to the authenticated user. If you must stay on SSEThe only workaround is to implement user identification yourself:
But this is fragile and non-standard. Streamable HTTP is the correct path. FastMCP-specific noteCheck if
SummaryYour server code is correct. Your testing proves it. The issue is purely transport-level: SSE cannot satisfy the spec's requirement that remote elicitation be bound to user identity. Switch to Streamable HTTP. |
Uh oh!
There was an error while loading. Please reload this page.
Pre-submission Checklist
Question Category
Your Question
MCP Elicitation Not Working at Runtime - FastMCP Remote Server Issue
Problem Summary
MCP elicitation is "not working at runtime" when calling tools on a remote FastMCP server deployed on fastmcp.cloud. The elicitation form never appears, and the tool execution hangs or fails silently.
What works:
What doesn't work:
Technical Details
Server Setup
Client Configuration
Cursor MCP Config (
.vscode/mcp.json):{ "servers": { "my-mcp-server": { "type": "sse", "url": "https://necessary-fuchsia-cicada.fastmcp.app/mcp" } } }Observed Behavior
Tool Schema View: Shows empty
properties: {}(expected for elicitation tools)Tool Execution: When calling the tool:
Comparison with Working Scenarios:
Root Cause Hypothesis
Based on testing evidence:
According to MCP specification:
Questions
What I've Tried
Environment
Additional Context
The MCP Elicitation Specification states:
References:
Expected Behavior
When calling a tool that uses
ctx.elicit():Actual Behavior
Has anyone successfully gotten FastMCP elicitation to work with remote SSE transport? Any guidance would be greatly appreciated!
All reactions