filemaker-data-api-mcp
Version:
Model Context Protocol (MCP) server providing FileMaker Data API integration with database introspection for AI agents. Compatible with Claude, Windsurf, Cursor, Cline, and other MCP-enabled assistants.
100 lines • 2.55 kB
TypeScript
/**
* Represents a cached token with metadata
*/
export interface CachedToken {
token: string;
server: string;
database: string;
user: string;
expiresAt: number;
createdAt: number;
refreshCount: number;
}
/**
* Token info for debugging/inspection
*/
export interface TokenInfo {
server: string;
database: string;
user: string;
createdAt: number;
expiresAt: number;
expiresIn: number;
refreshCount: number;
}
/**
* Token Manager - Handles token lifecycle with caching, refresh, and error recovery
*/
export declare class TokenManager {
private tokens;
private configDir;
private tokensFile;
private readonly TOKEN_EXPIRY_BUFFER;
private readonly DEFAULT_TOKEN_TTL;
constructor(configDir?: string);
/**
* Generate cache key for a token
*/
private getCacheKey;
/**
* Load tokens from persistent storage
*/
private loadTokens;
/**
* Save tokens to persistent storage
*/
private saveTokens;
/**
* Clean up expired tokens from cache
*/
private cleanupExpiredTokens;
/**
* Cache a new token
*/
cacheToken(token: string, server: string, database: string, user: string, ttlMs?: number): void;
/**
* Get a cached token if valid
*/
getToken(server: string, database: string, user: string): string | null;
/**
* Check if a token needs refresh
*/
needsRefresh(server: string, database: string, user: string): boolean;
/**
* Update token expiry time (for refresh)
*/
refreshToken(server: string, database: string, user: string, ttlMs?: number): void;
/**
* Invalidate a token (on logout or 401 error)
*/
invalidateToken(server: string, database: string, user: string): void;
/**
* Get token info for debugging
*/
getTokenInfo(server: string, database: string, user: string): TokenInfo | null;
/**
* Clear all cached tokens
*/
clearAll(): void;
/**
* Get token cache statistics
*/
getStats(): {
totalCached: number;
validTokens: number;
expiredTokens: number;
};
/**
* Get tokens file path
*/
getTokensFilePath(): string;
}
/**
* Get or create the global token manager instance
*/
export declare function getTokenManager(configDir?: string): TokenManager;
/**
* Reset the global token manager (useful for testing)
*/
export declare function resetTokenManager(): void;
//# sourceMappingURL=token-manager.d.ts.map