Skip to main content
Glama
firstorderai

Authenticator App MCP Server

by firstorderai
authenticator.ts2.61 kB
// --- Type Definitions (Keep relevant ones) --- interface Get2FACodeParams { website: string; username: string; } interface GetPasswordParams { website: string; username: string; } interface GetAccountListParams { website: string; } export interface Get2FACodeResponse { code: string; valid_for: number; } export interface GetPasswordResponse { password: string; } export interface GetAccountListResponse { accounts: string[]; } export class Authenticator { private readonly accessToken: string; private readonly baseUrl = 'http://127.0.0.1:43457/mcp/v1'; constructor(accessToken: string) { this.accessToken = accessToken; } async get2FACode(website: string, username: string): Promise<Get2FACodeResponse> { const url = `${this.baseUrl}/code?website=${encodeURIComponent(website)}&username=${encodeURIComponent(username)}`; const response = await fetch(url, { headers: { Authorization: `Bearer ${this.accessToken}`, }, }); if (!response.ok) { const errorBody = await response.text(); console.error(`HTTP error ${response.status} from ${url}: ${errorBody}`); throw new Error(`HTTP error ${response.status}: ${errorBody}`); // Include body in error } return (await response.json()) as Get2FACodeResponse; } async getPassword(website: string, username: string): Promise<GetPasswordResponse> { const url = `${this.baseUrl}/password?website=${encodeURIComponent(website)}&username=${encodeURIComponent(username)}`; const response = await fetch(url, { headers: { Authorization: `Bearer ${this.accessToken}`, }, }); if (!response.ok) { const errorBody = await response.text(); console.error(`HTTP error ${response.status} from ${url}: ${errorBody}`); throw new Error(`HTTP error ${response.status}: ${errorBody}`); } return (await response.json()) as GetPasswordResponse; } async getAccountList(website: string): Promise<GetAccountListResponse> { const url = `${this.baseUrl}/account_list?website=${encodeURIComponent(website)}`; const response = await fetch(url, { headers: { Authorization: `Bearer ${this.accessToken}`, }, }); if (!response.ok) { const errorBody = await response.text(); console.error(`HTTP error ${response.status} from ${url}: ${errorBody}`); throw new Error(`HTTP error ${response.status}: ${errorBody}`); } // Assuming the backend returns a string array directly const accounts = (await response.json()) as string[]; return { accounts }; } }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/firstorderai/authenticator_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server