Skip to main content
Glama
store.ts1.51 kB
/** * Represents a tracked MCP tool request */ export interface Request { id: string; timestamp: string; sourceId: string; toolName: string; sql: string; durationMs: number; client: string; success: boolean; error?: string; } /** * In-memory store for tracking requests per source * Uses FIFO eviction when max entries reached */ export class RequestStore { private store = new Map<string, Request[]>(); private maxPerSource = 100; /** * Add a request to the store * Evicts oldest entry if at capacity */ add(request: Request): void { const requests = this.store.get(request.sourceId) ?? []; requests.push(request); if (requests.length > this.maxPerSource) { requests.shift(); } this.store.set(request.sourceId, requests); } /** * Get requests, optionally filtered by source * Returns newest first */ getAll(sourceId?: string): Request[] { let requests: Request[]; if (sourceId) { requests = [...(this.store.get(sourceId) ?? [])]; } else { requests = Array.from(this.store.values()).flat(); } return requests.sort( (a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime() ); } /** * Get total count of requests across all sources */ getTotal(): number { return Array.from(this.store.values()).reduce((sum, arr) => sum + arr.length, 0); } /** * Clear all requests (useful for testing) */ clear(): void { this.store.clear(); } }

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/bytebase/dbhub'

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