Free MCP OAuth Checker: Test a Remote MCP Server's Auth

Find out in ten seconds why an MCP client will not sign in to your server.

Free MCP OAuth Checker: Test a Remote MCP Server's Auth product illustration

What it checks

What it checks:

  • The challenge. An unauthenticated initialize must get 401 with WWW-Authenticate: Bearer resource_metadata="...", scope="...", not a 200, a login redirect or a 500.
  • Protected Resource Metadata (RFC 9728). Found at the challenge URL or the path-inserted / root well-known URLs; resource must equal the server URL exactly (clients reject a mismatch, a very common bug behind proxies); authorization_servers present.
  • Authorization server discovery, in the order clients use (RFC 8414 then OpenID, path-aware): issuer match, endpoints, HTTPS, code_challenge_methods_supported with S256 (without it MCP clients stop), and which registration options exist (Client ID Metadata Documents, DCR, or pre-registration only).

Quick start

python3 tools/mcp_oauth_check.py https://mcp.example.com/mcp
python3 tools/mcp_oauth_check.py https://mcp.example.com/mcp --token "$ACCESS_TOKEN"   # also test token handling
python3 tools/mcp_oauth_check.py https://mcp.example.com/mcp --flow                    # full OAuth flow in your browser
python3 tools/mcp_oauth_check.py https://mcp.example.com/mcp --json                    # for CI (exit 1 on errors)

Token tests

With --token: the real token works, garbage gets 401 invalid_token, a token with a broken signature and an alg: none token are rejected, the token is not accepted in the URL, and its aud is your server.

Full flow (--flow)

With --flow: a full authorization code + PKCE + resource flow through a loopback redirect, state and iss checks, single-use codes, refresh rotation.

Demo output (preview)

The screenshot is real output from the kit’s own commands. Tested from a fresh download of this exact zip: ./run_tests.sh ran 7 tests OK on Python 3.13 and 3.10.

Real terminal output from Free MCP OAuth Checker: Test a Remote MCP Server's Auth: demo and passing tests

Try it locally: bash tools/demo.sh (a clean mock and a broken server) and bash run_tests.sh (7 tests).

How it was tested

Try it locally: bash tools/demo.sh (a clean mock and a broken server) and bash run_tests.sh (7 tests). Tested from a fresh Estage CDN download on Python 3.13 and 3.10: both exited 0.

Honest limits

Limits: a clean run is evidence, not a security audit. The token tests only send requests a correct server rejects. --flow needs DCR or a --client-id your authorization server knows.

Format and license

Zip, 17 KB, v1.0, 9 files. Free to use, modify and share for any purpose, including commercial work, as long as this notice stays in copies. Not affiliated with or endorsed by the MCP project or Anthropic.

FAQ

Is it safe to point at someone else's server?
It only sends normal requests and tokens that a correct server rejects.
Does it need my client secret?
No. It tests public-client flows with PKCE.
Can it run in CI?
Yes: --json output and exit code 1 on errors.
How do I get the files?
Click Download free. The zip downloads straight away: no checkout, no account.
Do I have to sign up for the newsletter?
No. The form is optional and the download works without it.

Get Free MCP OAuth Checker: Test a Remote MCP Server's Auth

Free checker for remote MCP server OAuth: 401 challenge, protected resource metadata, discovery, PKCE S256, token handling and a full flow. Python, no deps.

Pairs well with

Download$119

Agent Builder Bundle

Swarm Operator Kit + x402 Builder Skills + MCP Starter Kit. $119 instead of $157.

View Agent Builder Bundle
Download$39

MCP Starter Kit

Deploy-ready TypeScript MCP server with auth, rate limits, logs and optional x402.

View MCP Starter Kit

Related

1 email a week: new x402 + MCP tools and free kits.

Short weekly digest of new x402 + MCP tools and free kits. The download above works without signing up. No spam, unsubscribe any time.