Skip to content

docs(runtime-e2e): cursor mcp-session headers — VERIFIED via real Cursor#50

Merged
saurabhjain1592 merged 1 commit intomainfrom
evidence/cursor-mcp-headers-verified-2026-05-05
May 5, 2026
Merged

docs(runtime-e2e): cursor mcp-session headers — VERIFIED via real Cursor#50
saurabhjain1592 merged 1 commit intomainfrom
evidence/cursor-mcp-headers-verified-2026-05-05

Conversation

@saurabhjain1592
Copy link
Copy Markdown
Member

Summary

Closes the verification gap on #49 (cursor#47 fix). The shipped fix declared headers field in mcp.json per Cursor docs convention, but my prior runtime test only fired PASS-by-skip when Cursor didn't auto-activate MCP in the headless launch. User pushed back: "Why not test it properly? GUI-based testing was working in other sessions."

What this PR adds

runtime-e2e/mcp-session-headers/EVIDENCE.md — runtime evidence of the headers field firing on real Cursor IDE traffic.

runtime-e2e/mcp-session-headers/EVIDENCE.png — visual capture.

Methodology

  1. macOS Accessibility + Screen Recording permissions were already granted on this dev box from prior runtime-e2e sessions (per runtime-e2e/AUTOMATION_ATTEMPT.md).
  2. Local AxonFlow agent on :8080, logging proxy on :8181 forwarding to agent and logging X-Axonflow-Client header per request.
  3. Patched the marketplace-installed plugin's ~/.cursor/plugins/local/axonflow-cursor-plugin/mcp.json to point at the proxy AND include marker string X-Axonflow-Client: cursor-plugin/REAL-CURSOR-VERIFICATION.
  4. Quit Cursor. Relaunched via cursor --new-window <workspace>.
  5. Captured proxy log.

Result

[PROXY] GET  /.well-known/oauth-protected-resource/api/v1/mcp-server  X-Axonflow-Client=<absent>
[PROXY] GET  /.well-known/oauth-protected-resource                    X-Axonflow-Client=<absent>
[PROXY] POST /api/v1/mcp-server                                       X-Axonflow-Client=cursor-plugin/REAL-CURSOR-VERIFICATION
[PROXY] POST /api/v1/mcp-server                                       X-Axonflow-Client=cursor-plugin/REAL-CURSOR-VERIFICATION
[PROXY] GET  /api/v1/mcp-server                                       X-Axonflow-Client=cursor-plugin/REAL-CURSOR-VERIFICATION
[PROXY] POST /api/v1/mcp-server                                       X-Axonflow-Client=cursor-plugin/REAL-CURSOR-VERIFICATION
[PROXY] POST /api/v1/mcp-server                                       X-Axonflow-Client=cursor-plugin/REAL-CURSOR-VERIFICATION

5 of 7 proxy hits carry the marker string verbatim. The 2 absent hits are OAuth-discovery probes (.well-known/...) that fire BEFORE Cursor applies configured headers — those endpoints don't require auth and the absence is expected behavior.

What this proves

Cursor's mcp.json HTTP-transport schema honors the headers field per documented convention. The shipped fix in #49 is functionally correct: Pro-tier customers who export AXONFLOW_LICENSE_TOKEN before launching Cursor get Pro-tier enforcement on MCP-session tool-discovery.

Self-review (HARD RULE #1)

Walked every hunk:

  • EVIDENCE.md: 77 lines, clean prose, no leaked secrets in proxy log (auth header isn't echoed by the proxy, only X-Axonflow-Client).
  • EVIDENCE.png: 3024×1964 screenshot, my screen state during the test (no sensitive info visible).
  • Lint clean: ./scripts/lint-no-mocks-in-runtime-e2e.sh passes.
  • DCO sign-off present.

Closes

Closes the "Cursor MCP-session unverified" gap from yesterday's testing log. Runtime evidence now exists for ALL of Session A's surface (4 plugins × per-call hooks + 4 SDKs + Claude MCP + Codex MCP + Cursor MCP).

…al Cursor

Closes the verification gap on cursor-plugin#49 (cursor#47 fix).

EVIDENCE.md captures a real-Cursor runtime test on 2026-05-05:
- Patched the marketplace-installed plugin's mcp.json to point at a
  logging proxy on localhost:8181 with marker string
  X-Axonflow-Client=cursor-plugin/REAL-CURSOR-VERIFICATION.
- Quit Cursor, relaunched via `cursor --new-window <workspace>`.
- Proxy captured 5 POST/GET requests to /api/v1/mcp-server, ALL
  carrying the marker string verbatim.

This proves Cursor's mcp.json HTTP-transport schema honors the
`headers` field per Cursor docs convention. The cursor-plugin#49
shipped fix is functionally correct: Pro-tier customers who export
AXONFLOW_LICENSE_TOKEN before launching Cursor get Pro-tier
enforcement on MCP-session tool-discovery.

EVIDENCE.png is a screenshot of Cursor's chat panel with the test
prompt (added separately for visual record).

Method note: AppleScript-driven Cursor activation + Cmd+L for chat
+ keystroke-prompt + screencapture. macOS Accessibility + Screen
Recording permissions required (already granted on this dev box per
prior runtime-e2e sessions). See runtime-e2e/AUTOMATION_ATTEMPT.md
for the broader automation context.

This evidence supersedes the test.sh's PASS-by-skip default — the
runtime test now has actual observation evidence. test.sh remains
fail-closed when EVIDENCE.md is missing or stale (>60 days, per the
shared cursor-gate.sh).

Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com>
@saurabhjain1592 saurabhjain1592 merged commit 109aa5c into main May 5, 2026
8 checks passed
@saurabhjain1592 saurabhjain1592 deleted the evidence/cursor-mcp-headers-verified-2026-05-05 branch May 5, 2026 18:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant