Android Remote: MCP form elicitation shows only Deny and Cancel, no Accept
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Android Remote displays the message from a standard MCP form elicitation, but only offers Deny and Cancel. There is no affirmative control, so an explicit human response cannot be submitted.
Environment:
- ChatGPT Android 1.2026.244 (operator-confirmed; Android OS version not provided).
- Connected macOS host: ChatGPT desktop 26.903.61454, build 8378.
- Bundled codex-cli 0.153.4.
- MCP SDK 1.27.2.
The live server used authenticated streamable HTTP. Changing a required boolean to a single-choice enum, then to an empty object, did not resolve the visible symptom. The deployed empty-object request expired without receiving a decision. Server transport tests and deployment health passed; this does not prove mobile UI correctness.
Minimal independent stdio server (no external requests, credentials, or workflow actions):
"""Standalone MCP UI reproduction. No network, workflow, or write operations."""
from mcp.server.fastmcp import Context, FastMCP
server = FastMCP('Mobile form reproduction')
@server.tool(annotations={'readOnlyHint': True, 'idempotentHint': True})
async def probe_form(ctx: Context) -> dict:
"""Show a harmless form and report the action. This never approves real work."""
result = await ctx.session.elicit_form(
message='Respond to this read-only UI test. No workflow or other action will execute.',
requestedSchema={'type': 'object', 'properties': {}, 'required': []},
related_request_id=ctx.request_id,
)
return {'observed_action': result.action, 'workflow_executed': False}
if __name__ == '__main__':
server.run(transport='stdio')
Run with Python and mcp==1.27.2, register it as a disposable stdio MCP server, then call probe_form from Android Remote. It only reports the elicitation action; accepting this reproduction does not approve or execute real work.
Expected: the user can explicitly accept the empty form (action=accept, content={}), decline, or cancel.
Observed in the live Android case: message, Deny, and Cancel only; no affirmative control. No user decision was recorded. The independent server's accept/decline/cancel stdio tests pass, but it has not yet been connected to the affected phone.
Please confirm whether standard MCP form elicitation is supported in this Android Remote version and whether this is a mobile renderer, relay, or capability-negotiation problem. I did not add privileged codex_approval_kind metadata or enable automatic approvals as a workaround.
This report contains no tokens, internal workflow prompts, database contents, or private repository links.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Run the standalone stdio reproduction with Python and mcp==1.27.2, register it as a disposable server, and call probe_form from Android Remote. Trace the elicitation path across capability negotiation, relay, and mobile rendering; done means Android exposes accept, decline, and cancel and records the selected action correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, python, rust
- Domain
- backend-api-design, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100