Skip to main content
Glama

DollhouseMCP

by DollhouseMCP
portfolio-constants.tsโ€ข4.07 kB
/** * Portfolio Tool Configuration Constants * * Centralized configuration for timeout values, file size limits, * retry behavior, and other portfolio-related constants. * * All values can be overridden via environment variables for flexibility. */ /** * Portfolio element metadata interface for type safety */ export interface PortfolioElementMetadata { name: string; description: string; author: string; created: string; updated: string; version: string; } /** * GitHub API timeout configuration * Used for collection submission API calls */ export const GITHUB_API_TIMEOUT = { // Default timeout for GitHub API requests (milliseconds) DEFAULT: Number.parseInt(process.env.DOLLHOUSE_GITHUB_API_TIMEOUT || '30000'), // Minimum allowed timeout (5 seconds) MIN: 5000, // Maximum allowed timeout (5 minutes) MAX: 300000 } as const; /** * File size limits for portfolio submissions */ export const FILE_SIZE_LIMITS = { // Maximum file size for portfolio submissions (10MB) MAX_FILE_SIZE: Number.parseInt(process.env.DOLLHOUSE_MAX_FILE_SIZE || String(10 * 1024 * 1024)), // Human-readable description of the limit MAX_FILE_SIZE_MB: 10 } as const; /** * Retry configuration for API operations */ export const RETRY_CONFIG = { // Maximum number of retry attempts MAX_ATTEMPTS: Number.parseInt(process.env.DOLLHOUSE_MAX_RETRY_ATTEMPTS || '3'), // Initial delay between retries (milliseconds) INITIAL_DELAY: Number.parseInt(process.env.DOLLHOUSE_INITIAL_RETRY_DELAY || '1000'), // Maximum delay between retries (milliseconds) MAX_DELAY: Number.parseInt(process.env.DOLLHOUSE_MAX_RETRY_DELAY || '5000'), // Backoff multiplier for exponential backoff BACKOFF_MULTIPLIER: 2 } as const; /** * Search and similarity matching configuration */ export const SEARCH_CONFIG = { // Minimum similarity score for name suggestions (0.0 to 1.0) MIN_SIMILARITY_SCORE: Number.parseFloat(process.env.DOLLHOUSE_MIN_SIMILARITY || '0.3'), // Maximum number of suggestions to return MAX_SUGGESTIONS: Number.parseInt(process.env.DOLLHOUSE_MAX_SUGGESTIONS || '5') } as const; /** * Environment variable names for documentation */ export const ENV_VARS = { GITHUB_API_TIMEOUT: 'DOLLHOUSE_GITHUB_API_TIMEOUT', MAX_FILE_SIZE: 'DOLLHOUSE_MAX_FILE_SIZE', MAX_RETRY_ATTEMPTS: 'DOLLHOUSE_MAX_RETRY_ATTEMPTS', INITIAL_RETRY_DELAY: 'DOLLHOUSE_INITIAL_RETRY_DELAY', MAX_RETRY_DELAY: 'DOLLHOUSE_MAX_RETRY_DELAY', MIN_SIMILARITY: 'DOLLHOUSE_MIN_SIMILARITY', MAX_SUGGESTIONS: 'DOLLHOUSE_MAX_SUGGESTIONS' } as const; /** * Validation helper to ensure timeout is within acceptable bounds */ export function getValidatedTimeout(): number { const timeout = GITHUB_API_TIMEOUT.DEFAULT; if (timeout < GITHUB_API_TIMEOUT.MIN) { return GITHUB_API_TIMEOUT.MIN; } if (timeout > GITHUB_API_TIMEOUT.MAX) { return GITHUB_API_TIMEOUT.MAX; } return timeout; } /** * GitHub API rate limiting configuration * Implements client-side rate limiting to respect GitHub's API limits */ export const GITHUB_API_RATE_LIMITS = { // GitHub API limits: 5000/hour authenticated, 60/hour unauthenticated AUTHENTICATED_LIMIT: Number.parseInt(process.env.DOLLHOUSE_GITHUB_RATE_LIMIT_AUTH || '5000'), UNAUTHENTICATED_LIMIT: Number.parseInt(process.env.DOLLHOUSE_GITHUB_RATE_LIMIT_UNAUTH || '60'), // Time window for rate limiting (1 hour) WINDOW_MS: 60 * 60 * 1000, // Minimum delay between API calls to prevent rapid-fire requests MIN_DELAY_MS: Number.parseInt(process.env.DOLLHOUSE_GITHUB_MIN_DELAY || '1000'), // Buffer percentage - stay below actual limits to avoid hitting them BUFFER_PERCENTAGE: Number.parseFloat(process.env.DOLLHOUSE_GITHUB_RATE_BUFFER || '0.9') } as const; /** * Calculate retry delay using exponential backoff */ export function calculateRetryDelay(attempt: number): number { const delay = Math.min( RETRY_CONFIG.INITIAL_DELAY * Math.pow(RETRY_CONFIG.BACKOFF_MULTIPLIER, attempt - 1), RETRY_CONFIG.MAX_DELAY ); return delay; }

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/DollhouseMCP/DollhouseMCP'

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