SkillTotal

Is Auth0 MCP Server safe?

No malicious indicators - review capabilities before installing
Notable — review in context (capabilities are not malware):
  • Node.js filesystem read
  • Node.js filesystem write/delete
  • Node.js network egress

@auth0/auth0-mcp-server is an AI npm_package analyzed by SkillTotal's deterministic static scanner. The scan found no malicious indicators, though 5 risky constructs are reported for review. It can: delegated authentication, filesystem read, filesystem write, mcp tools detected and network egress — capabilities are what the code can do, not a verdict on intent. Risk score 0/100 (low).

@auth0/auth0-mcp-server 0.1.0-beta.19

npm_package · npm:@auth0/auth0-mcp-server
LOW
0
/ 100 risk score
Snapshot · scanned Sep 24, 2026 · @auth0/auth0-mcp-server@0.1.0-beta.19 · engine 0.53.0 / ruleset 60

Automated static-analysis result. It can contain false positives and false negatives, and is not a claim about the intent of Auth0 MCP Server's authors. Report a false positive.

Capabilities — what this component can do (not a risk score):
delegated authenticationfilesystem readfilesystem writemcp tools detectednetwork egress

Behavioral traits

How this component maps to the CSA agentic threat model. Descriptive — it never affects the risk score.

Tool surface
Tool Usage
Filesystem reach
Tool Execution Context
Network egress
Interaction & Communication / Direct Communication
Delegated authentication
Tool Execution Context / User Delegated Credentials

Findings (5)

MEDIUMNode.js filesystem readST-FS-NODE-READ

The component reads files from disk.

const data = fs.readFileSync(configPath, 'utf-8');
const data = fs.readFileSync(configPath, 'utf-8');
existingContent = fs.readFileSync(resolvedPath, 'utf-8');
const content = fs.readFileSync(gitignorePath, 'utf-8');
return dotenvParse(fs.readFileSync(filePath, 'utf-8'));
const state = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
lines = fs.readFileSync(logPath, 'utf-8').split('\n').filter(Boolean);

Why it matters: Usually legitimate, but worth confirming it can't be steered into reading sensitive files.

Fix: Confirm which files are read and that paths cannot be influenced by untrusted input to reach sensitive locations.

MEDIUMNode.js filesystem write/deleteST-FS-NODE-WRITE

The component writes or deletes files on disk.

fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
fs.writeFileSync(tmpFile, content, { encoding: 'utf-8', mode: CREDENTIAL_FILE_MODE });
fs.appendFileSync(gitignorePath, `${header}\n${envFileName}\n`, 'utf-8');
fs.writeFileSync(gitignorePath, `# Auth0 credentials\n${envFileName}\n`, 'utf-8');
fs.writeFileSync(statePath, JSON.stringify(state, null, 2), 'utf-8');
fs.writeFileSync(tmpPath, content, 'utf-8');

Why it matters: Usually legitimate, but worth confirming the paths can't be controlled by untrusted input.

Fix: Confirm which files are written/deleted and that paths cannot be influenced by untrusted input.

MEDIUMNode.js network egressST-NET-NODE

The component makes outbound network requests.

const response = await fetch(`https://${config.tenant}/oauth/device/code`, {
const response = await fetch(`https://${config.tenant}/oauth/token`, {
const response = await fetch(`https://${config.tenant}/oauth/token`, {
const response = await fetch(`https://${config.tenant}/oauth/revoke`, {
const response = await fetch(this.endpoint, {
const response = await fetch(url, {

Why it matters: Usually legitimate, but confirm the destinations are expected and no sensitive data leaves.

Fix: Confirm the destination hosts are expected and that no sensitive data is sent off-host.

LOWDelegated authentication (OAuth 2.0 / OIDC)ST-AUTH-DELEGATED

An OAuth 2.0 / OpenID Connect delegated-authentication flow was detected (authorization-code / refresh-token / token-exchange grant, an OIDC authorize/discovery endpoint or id_token, or a delegation library). Tools authenticate with the end user's delegated, scoped credentials rather than a long-lived embedded service credential.

grant_type: 'refresh_token',

Fix: Delegated auth is a lower-blast-radius execution context than an embedded static credential. Confirm the requested scopes are minimal and that tokens are never logged or forwarded off-host.

LOWMCP tool surface detectedST-MCP-DETECTED

An MCP tool surface (manifest or tool definitions) was found.

const server = new Server({ name: 'auth0', version: packageVersion }, { capabilities: { tools: {}, logging: {} } });

Why it matters: Just context — review which tools it offers and their permissions.

Fix: Review the declared MCP tools and their permissions.

Check your own component

Run the same evidence-backed scan on any MCP server, agent skill, or package.

Scan your own component

How we determine this: deterministic static analysis (regex + AST), evidence-anchored, no code execution. Methodology →