Back to Browse

Authn8 MCP Server

by Authn8
Developer ToolsModerate5.6MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

Shared 2FA for teams: let AI agents get TOTP codes for the accounts your Authn8 token can see.

About

Shared 2FA for teams: let AI agents get TOTP codes for the accounts your Authn8 token can see.

Remote endpoints: streamable-http: https://api.authn8.com/mcp

Security Report

5.6
Moderate5.6Moderate Risk

The server is a focused TOTP retrieval tool for Authn8. It requires a bearer token from the AUTHN8_API_KEY environment variable, validates it at startup, and only calls the Authn8 API with its declared purpose. The main concerns are that AUTHN8_API_URL can redirect the bearer token to any host and that OTP codes are returned into the AI agent's context by design. Supply chain analysis found 6 known vulnerabilities in dependencies (0 critical, 4 high severity). Package verification found 1 issue.

6 files analyzed · 10 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

An Authn8 MCP token (pat_...), created on the MCP Tokens page in Authn8Required

Environment variable: AUTHN8_API_KEY

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub README.

@authn8/mcp-server

MCP server for Authn8, shared 2FA for teams. It lets AI agents fetch TOTP codes for the 2FA accounts your team shares in Authn8, so an agent can finish a sign-in without anyone reading a code out of a phone. Every code it fetches is recorded in Authn8's access log with the name of the token that asked for it.

Listed in the MCP Registry as io.github.authn8/mcp-server.

Requirements

  • An Authn8 business on a paid plan. MCP tokens are not available on the Free plan, and a business's tokens stop working if its subscription ends.
  • An MCP token. Create one in Authn8 under Settings → MCP Tokens (how to create an MCP token). Tokens start with pat_. A token only reaches the 2FA accounts its creator can already access, and you can narrow it further to chosen groups and give it an expiry date.
  • Node.js 18 or later, if you run the npm package. The hosted endpoint needs nothing installed.

Two ways to connect

Hosted endpointnpm package
InstallNonenpx runs it locally
TransportStreamable HTTPstdio
Addresshttps://api.authn8.com/mcpnpx -y @authn8/mcp-server
TokenAuthorization: Bearer pat_... headerAUTHN8_API_KEY environment variable

Both offer the same three tools: list_accounts, get_otp and whoami.

Hosted endpoint

Point any MCP client that supports streamable HTTP at https://api.authn8.com/mcp and send your token in the Authorization header as Bearer pat_your_token_here.

Claude Code

claude mcp add --transport http --scope user authn8 https://api.authn8.com/mcp \
  --header "Authorization: Bearer pat_your_token_here"

npm package

Claude Code

claude mcp add --env AUTHN8_API_KEY=pat_your_token_here --transport stdio --scope user authn8 \
  -- npx -y @authn8/mcp-server

--scope user makes the server available in all your projects. Leave it out to add it to the current project only.

Claude Desktop

Open Settings → Developer → Edit Config, or edit the file directly:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "authn8": {
      "command": "npx",
      "args": ["-y", "@authn8/mcp-server"],
      "env": {
        "AUTHN8_API_KEY": "pat_your_token_here"
      }
    }
  }
}

Quit and restart Claude Desktop after saving.

Cursor

Add this to ~/.cursor/mcp.json for all projects, or to .cursor/mcp.json in a project:

{
  "mcpServers": {
    "authn8": {
      "command": "npx",
      "args": ["-y", "@authn8/mcp-server"],
      "env": {
        "AUTHN8_API_KEY": "pat_your_token_here"
      }
    }
  }
}

Other clients

Run npx -y @authn8/mcp-server as a stdio server with AUTHN8_API_KEY set.

Environment variables

VariableRequiredDefaultDescription
AUTHN8_API_KEYYes-Your MCP token (pat_...)
AUTHN8_API_URLNohttps://api.authn8.comAPI base URL

On startup the server checks the token and prints the business name, token name, account count and expiry date to stderr. It exits if the token is missing or rejected.

Tools

All tools declare an output schema and return structuredContent alongside the text block, so clients get typed results without re-parsing JSON out of text.

list_accounts

Returns all 2FA accounts accessible to this token.

Example response:

{
  "accounts": [
    {
      "id": "924c52a6-4457-4970-a39f-4dc620217683",
      "name": "AWS Production",
      "issuerDomain": "amazon.com"
    }
  ]
}

get_otp

Generates a TOTP code for a specific account.

Parameters:

  • account_id (string, optional): UUID of the account
  • account_name (string, optional): name or issuer domain to search for (case-insensitive partial match)

Provide either account_id or account_name. If more than one account matches the name, the tool returns them in multipleMatches so you can retry with an account_id.

Example response:

{
  "name": "AWS Production",
  "code": "483920",
  "length": 6
}

Ambiguous match:

{
  "error": "Multiple accounts match 'aws'. Please be more specific or use account_id.",
  "length": 0,
  "multipleMatches": [
    {
      "id": "924c52a6-4457-4970-a39f-4dc620217683",
      "name": "AWS Production",
      "issuerDomain": "amazon.com"
    }
  ]
}

whoami

Returns information about the current token.

Example response:

{
  "tokenName": "Claude Code",
  "businessName": "Acme Ltd",
  "scopedGroups": [
    { "id": "cfeba14a-e990-49e8-b6e5-61d63f7d68c8", "name": "Engineering" }
  ],
  "expiresAt": "2027-06-30T23:59:59Z",
  "accountCount": 12
}

Links

Reviews

No reviews yet

Be the first to review this server!