LANCAMENTO2020% off no lançamento — apply at checkout
MCP OAuth Debug
When the MCP OAuth login returns neither a token nor a URL.
R$ 79,00 — v1.0.0
- Forces the challenge in the discovery -> authorize flow
- Separates infra, client and server before blaming the provider
- Checklist for redirect_uri, PKCE and resource indicators
You get 4 files (9 KB) in mcp-oauth-debug-1.0.0.zip — SKILL.md with the walkthrough plus the scripts.
sha256 f83ae0feeb1aa236…
Stripe paymentInstant download7-day refundNo subscription
Want me to install it in your project?
Guided setup from R$ 1.500,00: I install it, wire the guards and run the first cycle with you.
See the serviceRead before buying
MCP server connects but never asks you to log in
Open the articleHow to start
- Call a tool that requires an accountLook for HTTP/1.1 401 with WWW-Authenticate and resource_metadata=... If you get 200 the tool is public: pick another one (profile, library, credits, orders).
curl -sS -i -m 20 -X POST "$MCP_URL" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"<tool_with_account>","arguments":{}}}' | head -30 - See which authorization server the metadata points toLook for authorization_servers[] and scopes_supported[] in the protected-resource document.
curl -sS -m 20 "$MCP_URL_ORIGIN/.well-known/oauth-protected-resource" - Confirm dynamic client registrationWith a registration_endpoint the whole flow is automatic — no manual client registration, however much the client's error message suggests otherwise.
curl -sS -m 20 "$AUTH_SERVER/.well-known/oauth-authorization-server" - Confirm the token landed on diskOnly the .client.json (the registration result) means the OAuth did NOT finish. Registration alone is not authentication.
ls -la "$TOKEN_DIR" # e.g. ~/.config/<client>/mcp-tokens/, ~/.mcp/tokens/
When you will use it
- The client says "connected" and never asks for a loginThe server connects, tools/list works, and every account tool returns 401 forever. The skill forces the challenge the client never saw.
- 401 on every callBefore blaming the provider: four commands, in order, separate infra, client and server and tell you which of the three is returning 401.
- Which authorization server?Reads the protected-resource metadata and shows where the server points (authorization_servers, scopes_supported) — no guessing.
- Do I have to register a client by hand?If the server announces a registration_endpoint you create the client_id on the spot (public client + PKCE S256) instead of waiting on a manual signup.
- The token expired and the refresh never comesThe redirect_uri, PKCE and resource indicators checklist shows exactly where in the flow it died.
What comes in the package
scripts/force-oauth-challenge.py — reference implementation of the fix: forces the WWW-Authenticate and the authorization flowreferences/checklist.md — one-page checklist with the expected value at each diagnostic step
Requirements
- Python 3.10+ (stdlib only)
- access to the MCP server origin
- the /.well-known/* the server itself announces
Where it does not fit: This is for MCP servers with OAuth — a public tool returns 200 and the skill tells you to pick another one. It buys and pays nothing: if the server asks for payment, it stops and hands the decision back to the owner.
How do I get it after paying?
The download link shows up on the thank-you page as soon as Stripe confirms, and also goes to your e-mail. If you lose it, request a resend from the same e-mail used to buy.
Can I use it on a client project?
Yes — the license covers personal and commercial use in your projects, including client work. What you cannot do is resell the package. Full terms.
Prices in Brazilian real (BRL). Stripe charges in BRL.
← all skills
Payment processed by
Stripe — no card data touches this server. Instant delivery once confirmed. Prices in BRL (Brazilian real) — you are charged in BRL.
Terms, delivery and refund.