Skip to main content
Glama

PostgreSQL API SSH MCP Server

by iMAGRAY
index.cjs3.53 kB
// 🔧 КОНСТАНТЫ ПРИЛОЖЕНИЯ // Заменяет magic numbers и централизует настройки // Таймауты (в миллисекундах) const TIMEOUTS = { CONNECTION: 10000, QUERY: 30000, TEST_CONNECTION: 5000, API_REQUEST: 30000, SSH_CONNECT: 15000 }; // Настройки по умолчанию const DEFAULTS = { POSTGRESQL_PORT: 5432, SSH_PORT: 22, MAX_RETRIES: 3, BATCH_SIZE: 1000, SAMPLE_DATA_LIMIT: 10, MAX_QUERY_LENGTH: 10000 }; // Уровни логгирования const LOG_LEVELS = { ERROR: 'error', WARN: 'warn', INFO: 'info', DEBUG: 'debug' }; // Статусы ответов const RESPONSE_STATUS = { SUCCESS: 'success', ERROR: 'error', PARTIAL: 'partial' }; // Типы действий const ACTIONS = { POSTGRESQL: { SETUP_PROFILE: 'setup_profile', LIST_PROFILES: 'list_profiles', QUICK_QUERY: 'quick_query', SHOW_TABLES: 'show_tables', DESCRIBE_TABLE: 'describe_table', SAMPLE_DATA: 'sample_data', INSERT_DATA: 'insert_data', UPDATE_DATA: 'update_data', DELETE_DATA: 'delete_data', DATABASE_INFO: 'database_info' }, SSH: { SETUP_PROFILE: 'setup_profile', LIST_PROFILES: 'list_profiles', EXECUTE: 'execute', SYSTEM_INFO: 'system_info', CHECK_HOST: 'check_host' }, API: { GET: 'get', POST: 'post', PUT: 'put', DELETE: 'delete', PATCH: 'patch', CHECK_API: 'check_api' } }; // Сообщения для ИИ const AI_HINTS = { SETUP_COMPLETE: 'Профиль успешно создан. Теперь можно использовать команды без указания пароля', QUERY_SUCCESS: 'Запрос выполнен успешно', CONNECTION_ERROR: 'Проверьте параметры подключения', VALIDATION_ERROR: 'Проверьте корректность входных данных', SECURITY_ERROR: 'Операция заблокирована из соображений безопасности' }; // Регулярные выражения для валидации const VALIDATION_PATTERNS = { SQL_INJECTION: /(\b(SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC|UNION|SCRIPT)\b|[';-])/gi, TABLE_NAME: /^[a-zA-Z_][a-zA-Z0-9_]*$/, COLUMN_NAME: /^[a-zA-Z_][a-zA-Z0-9_]*$/, IP_ADDRESS: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/, URL: /^https?:\/\/.+$/ }; // Лимиты безопасности const SECURITY_LIMITS = { MAX_CONNECTIONS: 10, MAX_QUERY_TIME: 60000, MAX_RESULT_SIZE: 1000000, MAX_BATCH_SIZE: 100, PASSWORD_MIN_LENGTH: 8, MAX_QUERY_LENGTH: 10000, MAX_QUERY_LIMIT: 1000, MAX_DATA_SIZE: 10000 }; // Лимиты производительности const PERFORMANCE_LIMITS = { MAX_CONNECTIONS: 50, CONNECTION_POOL_SIZE: 10, QUERY_TIMEOUT: 30000, CLEANUP_INTERVAL: 300000 // 5 минут }; // Лимиты запросов const QUERY_LIMITS = { MAX_QUERY_LENGTH: 10000, MAX_COMMAND_LENGTH: 1000, MAX_BATCH_SIZE: 100, MAX_RESULT_ROWS: 10000 }; // Лимиты подключений const CONNECTION_LIMITS = { MAX_IDLE_TIME: 300000, // 5 минут MAX_LIFETIME: 3600000, // 1 час HEALTH_CHECK_INTERVAL: 60000 // 1 минута }; module.exports = { TIMEOUTS, DEFAULTS, LOG_LEVELS, RESPONSE_STATUS, ACTIONS, AI_HINTS, VALIDATION_PATTERNS, SECURITY_LIMITS, PERFORMANCE_LIMITS, QUERY_LIMITS, CONNECTION_LIMITS };

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/iMAGRAY/PSQL_SSH_API_MCP'

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