프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

mcp-authprobe

제작자: Enigmacker버전 0.8.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.Enigmacker/mcp-authprobe

설치

개요

제작자가 쓴 설명(영어 원문)

Active OAuth tests for remote MCP servers you own: tokens, PKCE, redirect_uri, audience, CSRF.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 기타
  • 입력해야 할 값: MCP_AUTHPROBE_SECRET

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: MCP_AUTHPROBE_SECRET_FILE, MCP_AUTHPROBE_SECRET, MCP_AUTHPROBE_CREDENTIALS_FILE, MCP_AUTHPROBE_ALLOW_PRIVATE, MCP_AUTHPROBE_LAB_ORIGINS, MCP_AUTHPROBE_TIMEOUT_MS

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "authprobe": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-authprobe",
        "mcp"
      ],
      "env": {
        "MCP_AUTHPROBE_SECRET_FILE": "your-value",
        "MCP_AUTHPROBE_SECRET": "your-value",
        "MCP_AUTHPROBE_CREDENTIALS_FILE": "your-value",
        "MCP_AUTHPROBE_ALLOW_PRIVATE": "your-value",
        "MCP_AUTHPROBE_LAB_ORIGINS": "your-value",
        "MCP_AUTHPROBE_TIMEOUT_MS": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add authprobe --env MCP_AUTHPROBE_SECRET_FILE=your-value --env MCP_AUTHPROBE_SECRET=your-value --env MCP_AUTHPROBE_CREDENTIALS_FILE=your-value --env MCP_AUTHPROBE_ALLOW_PRIVATE=your-value --env MCP_AUTHPROBE_LAB_ORIGINS=your-value --env MCP_AUTHPROBE_TIMEOUT_MS=your-value -- npx -y mcp-authprobe mcp

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "authprobe": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-authprobe",
        "mcp"
      ],
      "env": {
        "MCP_AUTHPROBE_SECRET_FILE": "your-value",
        "MCP_AUTHPROBE_SECRET": "your-value",
        "MCP_AUTHPROBE_CREDENTIALS_FILE": "your-value",
        "MCP_AUTHPROBE_ALLOW_PRIVATE": "your-value",
        "MCP_AUTHPROBE_LAB_ORIGINS": "your-value",
        "MCP_AUTHPROBE_TIMEOUT_MS": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "authprobe": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mcp-authprobe",
        "mcp"
      ],
      "env": {
        "MCP_AUTHPROBE_SECRET_FILE": "your-value",
        "MCP_AUTHPROBE_SECRET": "your-value",
        "MCP_AUTHPROBE_CREDENTIALS_FILE": "your-value",
        "MCP_AUTHPROBE_ALLOW_PRIVATE": "your-value",
        "MCP_AUTHPROBE_LAB_ORIGINS": "your-value",
        "MCP_AUTHPROBE_TIMEOUT_MS": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • MCP_AUTHPROBE_SECRET_FILE env
    Path to the ownership secret (create it with `mcp-authprobe ownership init `). Without a secret, only discovery runs.
  • MCP_AUTHPROBE_SECRET 비밀 env
    Ownership secret, if not read from MCP_AUTHPROBE_SECRET_FILE.
  • MCP_AUTHPROBE_CREDENTIALS_FILE env
    Path to a test grant written by `mcp-authprobe login`, for the refresh token checks. It is consumed by a scan.
  • MCP_AUTHPROBE_ALLOW_PRIVATE env
    Set to 1 to allow loopback and private targets (local labs only).
  • MCP_AUTHPROBE_LAB_ORIGINS env
    Comma-separated lab origins exempt from the ownership proof, e.g. http://127.0.0.1:8080.
  • MCP_AUTHPROBE_TIMEOUT_MS env
    Per-request timeout in milliseconds (default 10000).

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 Enigmacker 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 32433개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 32433개 중 95%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 32433개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

mcp-authprobe, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: MCP_AUTHPROBE_SECRET

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.8.0)은 어제 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211어제 업데이트
설치

Symantec Cloud DLP AIops

제작자: AIops-tools

Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.

내 컴퓨터에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

mcp-authprobe

Active authorization testing for remote MCP servers you own.

Passive scanners read what a remote Model Context Protocol server *announces*: its OAuth metadata, its TLS setup, its tool descriptions. Some properties can only be confirmed by actually exercising the authorization server: does it really rotate refresh tokens, does it really refuse a redirect URI it never registered, does it enforce PKCE, does it accept a token meant for another server, does it slow down repeated failures?

mcp-authprobe runs those active checks, against servers whose ownership you have proven, and reports the results as JSON, SARIF and Markdown.

19 checks, field-tested against a certified OpenID provider: OAuth discovery, refresh token rotation and replay, redirect URI strictness, PKCE enforcement, single-use codes, token audience, Origin validation, tokens in URLs, session IDs used as credentials, CORS, throttling and consent CSRF (in a real browser). It works as a CLI with an interactive login, as an MCP server so an AI assistant can run the audit, and as a GitHub Action. A deliberately vulnerable lab lets you try everything in a minute.

Only test servers you own or are explicitly authorized to test. Active checks change state on the target. The tool enforces an ownership proof before running them, but responsibility stays with the operator.

Contents

  • Field-tested
  • Why another scanner?
  • Install
  • Try it in a minute: the lab
  • Quick start
  • Ownership proof
  • Refresh token checks
  • Interactive login
  • Redirect URI checks
  • Throttling check
  • Consent CSRF check
  • Use it from an MCP client
  • What it checks
  • Combine with mcp-posture
  • Reports and exit codes
  • GitHub Action
  • Safety of the scanner
  • Roadmap
  • Development
  • Contributing and security

Field-tested

Besides its own test suite and lab, mcp-authprobe was run against real authorization stacks before each release:

  • node-oidc-provider (an OpenID Certified authorization server) with dynamic registration, resource indicators and JWT access tokens, in front of an MCP server built with the official TypeScript SDK that validates the token audience and the Origin header. Every check that can be judged from outside passed; MAP-THR01 failed, as expected, since that provider leaves rate limiting to the deployment; and its consent page, protected by a per-flow identifier instead of an anti-CSRF field, is reported as inconclusive with the reason.
  • The MCP TypeScript SDK's OAuth example server, a demonstration that is not meant for production. The results matched its code: redirect_uri not bound to the code, no Origin validation, unsafe redirect URIs accepted at registration, no refresh tokens, and crashes reported as inconclusive rather than passes. Its sessions correctly require the token on every request (MAP-SES01 passes).

These runs led to several fixes: results kept when a server issues no refresh token or crashes during login, a throttling check that copes with a broken refresh grant, and the per-flow identifier analysis above.

Why another scanner?

Good tools already exist, and this one is meant to sit next to them, not replace them:

ToolFocusOverlap with mcp-authprobe
mcp-posturePassive posture of remote servers: OAuth metadata per RFC, transport, tool poisoning, rug pullsNone by design: it never sends state-changing requests. Run it first.
MCPJam OAuth conformanceRuns real OAuth flows and checks conformance, with a few negative checksBasic redirect URI rejection. No refresh token replay, throttling or consent CSRF.
Cisco mcp-scanner, Snyk agent-scanMalicious tools, configs, local serversNone.

mcp-authprobe focuses on what only an active, authorized test can confirm, and uses check IDs (MAP-…) that do not clash with mcp-posture's (MCPP-…). mcp-posture reserves its own active IDs for this and points here; the two reports can be merged into one.

Install

Requires Node.js 22.19 or later.

# run without installing

npx mcp-authprobe --help

or install globally

npm install -g mcp-authprobe

Releases are published from GitHub Actions with npm trusted publishing; check the provenance on the package page before installing a security tool.

From source:

git clone https://github.com/Enigmacker/mcp-authprobe.git

cd mcp-authprobe npm ci npm run build node dist/cli.js --help

Try it in a minute: the lab

mcp-authprobe lab starts a small MCP server with its own OAuth authorization server on 127.0.0.1, so you can see every check at work without touching a real server:

# Terminal 1: a deliberately vulnerable server (or --profile secure)

npx mcp-authprobe lab

Terminal 2

npx mcp-authprobe scan http://127.0.0.1:8787/mcp --allow-private npx mcp-authprobe login http://127.0.0.1:8787/mcp --allow-private --out lab-grant.json npx mcp-authprobe scan http://127.0.0.1:8787/mcp --allow-private --credentials-file lab-grant.json

Log in with the account test / test and click Allow.

ProfileWhat you should see
vulnerable (default)Refresh token replay accepted, unsafe redirect URIs registered, PKCE not enforced, token audience ignored, foreign Origin accepted, token accepted in the URL, session ID accepted without a token, CORS open to any origin with credentials, no throttling, consent page without CSRF protection. MAP-RDR02 is reported as inconclusive: this server sends unknown visitors to its login page before looking at redirect_uri, which cannot be told apart from outside, and the scanner never turns that into a pass.
secureEvery check passes (or is not applicable); MAP-CSR01 runs with consent-check.

The lab only listens on 127.0.0.1 or ::1 (--host, --port, default 8787; names such as localhost are refused so that no resolver can move it elsewhere), keeps everything in memory, and stops with Ctrl-C. Its access tokens are unsigned JWTs, so MAP-AUD01 can read their audience. It is vulnerable on purpose: never expose it.

Quick start

# 1. Create a secret and the proof to publish for your MCP host

mcp-authprobe ownership init mcp.example.com

2. Publish the proof (well-known file or DNS TXT), then keep the secret in your environment

export MCP_AUTHPROBE_SECRET='…'

3. Check the proof is visible

mcp-authprobe ownership verify mcp.example.com

4. Scan

mcp-authprobe scan https://mcp.example.com/mcp --sarif results.sarif --markdown summary.md

5. Log in once with a dedicated test account to create a test grant

mcp-authprobe login https://mcp.example.com/mcp --out ./test-grant.json

6. Full scan, including the refresh token checks

mcp-authprobe scan https://mcp.example.com/mcp --credentials-file ./test-grant.json

Without a valid proof the scan still runs discovery (the same read-only requests any MCP client sends before logging in), and every active check is reported as skipped.

For a local lab on your own machine:

mcp-authprobe scan http://127.0.0.1:8080/mcp --allow-private

Loopback targets with --allow-private do not need a proof.

Ownership proof

Active checks register clients, rotate tokens and send failing requests. To make sure they only ever hit servers whose operator agreed to it, the scanner requires a proof for every host it would contact: the MCP server host and, when it differs, the authorization server host.

The proof is a hash, bound to the host, of a secret that only you hold:

mcp-authprobe-verification=sha256:<hex(sha256("<host>:<secret>"))>

Publish it in one of two places:

MethodWhereValue
Well-known filehttps:// /.well-known/mcp-authprobe.txtone line per proof; other lines are ignored
DNS TXT_mcp-authprobe. the proof string

Design choices:

  • The secret never leaves your machine. Only its hash is published, so a proof found in the wild cannot be reused by someone else to scan your server.
  • Proofs are host-bound. A proof for mcp.example.com is useless for any other host.
  • The secret is read from `MCP_AUTHPROBE_SECRET` or `--secret-file`, never from the command line, so it does not land in shell history or process listings.
  • Hosted authorization servers. If your authorization server is a third-party service on its own domain, you can only publish a proof if you control that domain (for example a custom domain). Check the provider's penetration testing policy before running active checks against it.

You can remove the proof as soon as you are done testing.

Refresh token checks

MCP clients are usually public clients, so OAuth 2.1 requires their refresh tokens to be rotated, and RFC 9700 recommends revoking the whole token family when an old one is reused. These properties cannot be read from metadata; they have to be exercised.

The checks need a test grant: a client and a refresh token obtained by logging in to your own server with a dedicated test account.

The easy way is mcp-authprobe login (see Interactive login), which writes the file for you. You can also write it by hand, readable only by you (chmod 600):

{

"client_id": "your-test-client-id", "refresh_token": "the-refresh-token", "client_secret": "only-for-confidential-clients", "token_endpoint_auth_method": "none" }

token_endpoint_auth_method is none (default for public clients), client_secret_post (default when a secret is present) or client_secret_basic.

The scan sends at most three refresh_token requests to the token endpoint found by discovery:

StepRequestExpected on a compliant serverCheck
1Refresh with the supplied tokenNew access token and a new refresh tokenMAP-RTK01
2Refresh again with the token from step 1's input (already used)Rejected, typically invalid_grantMAP-RTK02
3Refresh with the newest token (from step 1's output)Rejected: reuse revoked the whole familyMAP-RTK03

Important:

  • The grant is consumed. On a compliant server, step 3 revokes it. Never use a grant you still need.
  • If tokens are not rotated, MAP-RTK01 fails and the two replay checks are reported as not applicable.
  • A throttled or unexpected response is reported as error (inconclusive), never as a pass.
  • Token values never appear in output or reports; evidence only shows status codes and OAuth error codes.

Interactive login

mcp-authprobe login https://mcp.example.com

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기