Skip to main content
Glama

Human Design MCP Server

by dvvolkovv
n8n-full-backend.json11.8 kB
{ "name": "Human Design Full Backend (No External API)", "nodes": [ { "parameters": { "httpMethod": "POST", "path": "human-design", "responseMode": "responseNode", "options": {} }, "name": "Webhook Entry", "type": "n8n-nodes-base.webhook", "typeVersion": 1, "position": [240, 300], "webhookId": "hd-full-backend" }, { "parameters": { "jsCode": "// Полная реализация Human Design расчетов в n8n\n\nconst { birthDate, birthTime, birthLocation } = $input.item.json;\n\n// Валидация\nif (!birthDate || !birthTime || !birthLocation) {\n return { json: { success: false, error: 'Missing required fields' } };\n}\n\n// Human Design константы\nconst GATES = {\n 1: { name: 'The Creative', ru_name: 'Творческий' }, 2: { name: 'The Receptive', ru_name: 'Воспринимающий' },\n 3: { name: 'Ordering', ru_name: 'Порядок' }, 4: { name: 'Formulization', ru_name: 'Формулирование' },\n 5: { name: 'Needing', ru_name: 'Потребность' }, 6: { name: 'Friction', ru_name: 'Трение' },\n 7: { name: 'The Role of Self', ru_name: 'Роль Я' }, 8: { name: 'Holding Together', ru_name: 'Удержание вместе' },\n 9: { name: 'The Focus', ru_name: 'Фокус' }, 10: { name: 'The Treading', ru_name: 'Шаги' },\n 11: { name: 'Ideas', ru_name: 'Идеи' }, 12: { name: 'Caution', ru_name: 'Осторожность' },\n 13: { name: 'The Listener', ru_name: 'Слушатель' }, 14: { name: 'Power Skills', ru_name: 'Силовые навыки' },\n 15: { name: 'Modesty', ru_name: 'Скромность' }, 16: { name: 'Skills', ru_name: 'Навыки' },\n 17: { name: 'Following', ru_name: 'Следование' }, 18: { name: 'Work', ru_name: 'Работа' },\n 19: { name: 'Approach', ru_name: 'Подход' }, 20: { name: 'Now', ru_name: 'Сейчас' },\n 21: { name: 'The Editor', ru_name: 'Редактор' }, 22: { name: 'Openness', ru_name: 'Открытость' },\n 23: { name: 'Splitting Apart', ru_name: 'Распад' }, 24: { name: 'Rationalizing', ru_name: 'Рационализация' },\n 25: { name: 'Spirit of the Self', ru_name: 'Дух Я' }, 26: { name: 'The Transmitter', ru_name: 'Передатчик' },\n 27: { name: 'Caring', ru_name: 'Забота' }, 28: { name: 'The Game Player', ru_name: 'Игрок' },\n 29: { name: 'Saying Yes', ru_name: 'Говорить да' }, 30: { name: 'Recognition of Feelings', ru_name: 'Узнавание чувств' },\n 31: { name: 'Influence', ru_name: 'Влияние' }, 32: { name: 'The Duration', ru_name: 'Продолжительность' },\n 33: { name: 'Retreat', ru_name: 'Отступление' }, 34: { name: 'Great Power', ru_name: 'Большая сила' },\n 35: { name: 'Progress', ru_name: 'Прогресс' }, 36: { name: 'Crisis', ru_name: 'Кризис' },\n 37: { name: 'Friendship', ru_name: 'Дружба' }, 38: { name: 'The Fighter', ru_name: 'Боец' },\n 39: { name: 'Provocation', ru_name: 'Провокация' }, 40: { name: 'Deliverance', ru_name: 'Освобождение' },\n 41: { name: 'Contraction', ru_name: 'Сокращение' }, 42: { name: 'Growth', ru_name: 'Рост' },\n 43: { name: 'Insight', ru_name: 'Инсайт' }, 44: { name: 'Coming to Meet', ru_name: 'Встреча' },\n 45: { name: 'The Gatherer', ru_name: 'Собирающий' }, 46: { name: 'Determination', ru_name: 'Определенность' },\n 47: { name: 'Realization', ru_name: 'Реализация' }, 48: { name: 'The Well', ru_name: 'Колодец' },\n 49: { name: 'Revolution', ru_name: 'Революция' }, 50: { name: 'Values', ru_name: 'Ценности' },\n 51: { name: 'The Arousing', ru_name: 'Побуждение' }, 52: { name: 'Keeping Still', ru_name: 'Сохранение покоя' },\n 53: { name: 'Development', ru_name: 'Развитие' }, 54: { name: 'The Marrying Maiden', ru_name: 'Невеста' },\n 55: { name: 'Abundance', ru_name: 'Изобилие' }, 56: { name: 'The Wanderer', ru_name: 'Странник' },\n 57: { name: 'The Gentle', ru_name: 'Нежный' }, 58: { name: 'The Joyous', ru_name: 'Радостный' },\n 59: { name: 'Dispersion', ru_name: 'Дисперсия' }, 60: { name: 'Limitation', ru_name: 'Ограничение' },\n 61: { name: 'Inner Truth', ru_name: 'Внутренняя правда' }, 62: { name: 'Detail', ru_name: 'Деталь' },\n 63: { name: 'After Completion', ru_name: 'После завершения' }, 64: { name: 'Before Completion', ru_name: 'До завершения' }\n};\n\nconst CENTER_GATES = {\n Root: [19, 39, 52, 58],\n Sacral: [2, 14, 26, 30, 31, 38, 42, 45, 59],\n SolarPlexus: [10, 20, 29, 34, 40, 46, 50, 57],\n Heart: [10, 21, 26, 34, 40, 51],\n Throat: [2, 3, 5, 7, 10, 11, 12, 16, 17, 20, 21, 22, 23, 24, 28, 31, 33, 35, 45, 56, 62],\n Ajna: [9, 20, 23, 30, 34, 40, 43, 47, 60, 61, 63, 64],\n Head: [1, 7, 13, 26, 27, 44, 50, 64],\n Spleen: [28, 32, 44, 48, 50, 57, 58],\n GCenter: [1, 2, 7, 10, 13, 15, 25, 46]\n};\n\n// Расчет положения планет (упрощенная астрологическая модель)\nfunction calculatePlanetPositions(date, time) {\n const [year, month, day] = date.split('-').map(Number);\n const [hour, minute] = time.split(':').map(Number);\n const birthDateTime = new Date(Date.UTC(year, month - 1, day, hour, minute));\n const jd = getJulianDay(year, month, day, hour + minute / 60);\n \n // Расчет примерных позиций планет (без учета времени года)\n // В реальном Human Design используются точные эфемериды\n const planets = [\n 'Sun', 'Moon', 'Mercury', 'Venus', 'Mars', 'Jupiter', 'Saturn'\n ];\n \n const positions = {};\n const seed = year * 365 + month * 30 + day;\n \n planets.forEach((planet, i) => {\n // Упрощенный расчет на основе даты\n // В production используйте Swiss Ephemeris\n const base = (seed % 360) + (i * 51.43); // примерное распределение\n positions[planet] = {\n longitude: base % 360,\n sign: Math.floor(base / 30) + 1\n };\n });\n \n // Rahu и Ketu (лунные узлы) - противоположные точки\n positions.Rahu = { longitude: positions.Moon.longitude + 180 % 360, sign: Math.floor((positions.Moon.longitude + 180) / 30) + 1 };\n positions.Ketu = { longitude: positions.Rahu.longitude + 180 % 360, sign: Math.floor((positions.Rahu.longitude + 180) / 30) + 1 };\n \n return positions;\n}\n\nfunction getJulianDay(year, month, day, hour) {\n // Упрощенный расчет юлианского дня\n const a = Math.floor((14 - month) / 12);\n const y = year + 4800 - a;\n const m = month + 12 * a - 3;\n return day + Math.floor((153 * m + 2) / 5) + 365 * y + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400) - 32045 + hour / 24;\n}\n\n// Расчет ворот Human Design из долготы\nfunction longitudeToGate(longitude) {\n const gate = Math.floor(longitude / 5.625) + 1;\n const degreeInGate = longitude % 5.625;\n const line = Math.floor(degreeInGate / 0.9375) + 1;\n return { gate: Math.min(64, gate), line };\n}\n\n// Определение типа\nfunction determineType(gates) {\n const gateNumbers = gates.map(g => g.gate);\n const hasSacral = CENTER_GATES.Sacral.some(g => gateNumbers.includes(g));\n const hasThroat = CENTER_GATES.Throat.some(g => gateNumbers.includes(g));\n const hasSolarPlexus = CENTER_GATES.SolarPlexus.some(g => gateNumbers.includes(g));\n \n if (hasSacral && hasThroat) return { name: 'Manifesting Generator', ru_name: 'Манифестирующий Генератор' };\n if (hasSacral) return { name: 'Generator', ru_name: 'Генератор' };\n if (!hasThroat) return { name: 'Reflector', ru_name: 'Рефлектор' };\n if (hasSolarPlexus) return { name: 'Projector', ru_name: 'Проектор' };\n return { name: 'Manifestor', ru_name: 'Манифестор' };\n}\n\n// Определение авторитета\nfunction determineAuthority(gates) {\n const gateNumbers = gates.map(g => g.gate);\n const solarPlexusGates = CENTER_GATES.SolarPlexus;\n const sacralGates = CENTER_GATES.Sacral;\n const splenicGates = CENTER_GATES.Spleen;\n \n if (solarPlexusGates.some(g => gateNumbers.includes(g))) {\n return { name: 'Emotional', ru_name: 'Эмоциональная' };\n }\n if (sacralGates.some(g => gateNumbers.includes(g))) {\n return { name: 'Sacral', ru_name: 'Сакральная' };\n }\n if (splenicGates.some(g => gateNumbers.includes(g))) {\n return { name: 'Splenic', ru_name: 'Селезеночная' };\n }\n return { name: 'Sacral', ru_name: 'Сакральная' };\n}\n\n// Основной расчет\nconst positions = calculatePlanetPositions(birthDate, birthTime);\nconst allGates = [];\n\n// Преобразуем позиции планет в ворота\nObject.entries(positions).forEach(([planet, pos]) => {\n const { gate, line } = longitudeToGate(pos.longitude);\n allGates.push({\n planet,\n gate,\n line,\n name: GATES[gate]?.name || 'Unknown',\n ru_name: GATES[gate]?.ru_name || 'Неизвестно',\n sign: pos.sign\n });\n});\n\nconst type = determineType(allGates);\nconst authority = determineAuthority(allGates);\nconst strategy = {\n 'Manifestor': 'Информировать',\n 'Generator': 'Отвечать',\n 'Manifesting Generator': 'Отвечать и информировать',\n 'Projector': 'Ждать приглашения',\n 'Reflector': 'Ждать полного лунного цикла'\n}[type.name] || 'Отвечать';\n\nconst sunPos = positions.Sun;\nconst sunGate = longitudeToGate(sunPos.longitude);\nconst earthGate = longitudeToGate((sunPos.longitude + 180) % 360);\nconst profile = {\n sun_line: sunGate.line,\n earth_line: earthGate.line,\n number: `${sunGate.line}/${earthGate.line}`,\n description: `Профиль ${sunGate.line}/${earthGate.line}`\n};\n\n// Определенные центры\nconst definedCenters = [];\nconst gateNumbers = allGates.map(g => g.gate);\nObject.entries(CENTER_GATES).forEach(([name, gates]) => {\n if (gates.some(g => gateNumbers.includes(g))) {\n definedCenters.push({ name, defined: true });\n }\n});\n\n// Результат\nreturn {\n json: {\n birthDate,\n birthTime,\n birthLocation,\n type,\n strategy,\n authority,\n profile,\n gates: allGates,\n definedCenters,\n calculationSource: 'n8n Full Backend'\n }\n};" }, "name": "Calculate HD (Full Logic)", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [460, 300] }, { "parameters": { "respondWith": "json", "responseBody": "={{ $json }}" }, "name": "Respond", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1, "position": [680, 300] } ], "connections": { "Webhook Entry": { "main": [ [ { "node": "Calculate HD (Full Logic)", "type": "main", "index": 0 } ] ] }, "Calculate HD (Full Logic)": { "main": [ [ { "node": "Respond", "type": "main", "index": 0 } ] ] } }, "pinData": {}, "settings": { "executionOrder": "v1" }, "staticData": null, "tags": [], "triggerCount": 1, "updatedAt": "2024-01-01T00:00:00.000Z", "versionId": "1" }

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/dvvolkovv/MCP_Human_design'

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