Skip to main content
Glama
SiwuXue

Yijing Bazi MCP Server

by SiwuXue

yijing_generate_hexagram

Generate I Ching hexagrams using traditional methods like number, time, plum blossom, or random selection to provide divination insights based on your questions.

Instructions

根据指定方法生成六爻卦象

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
methodYes起卦方式
questionYes用户问题或求卦意图
seedNo起卦数字或其他种子信息(可选)

Implementation Reference

  • Core handler function that generates the hexagram based on the specified method, delegates line generation to YijingCalculator, determines original and changed hexagrams, fetches details from HexagramDatabase, and returns structured result.
    async generateHexagram({ method, question, seed }) { try { this.logger.info('开始生成卦象', { method, question }); // 根据不同方法生成爻 let calculatorResult; switch (method) { case 'number': calculatorResult = this.calculator.generateFromNumber(seed || question); break; case 'time': calculatorResult = this.calculator.generateFromTime(new Date()); break; case 'plum_blossom': calculatorResult = this.calculator.generateFromPlumBlossom(seed || question); break; case 'random': calculatorResult = this.calculator.generateRandom(question, seed); break; default: throw new Error(`不支持的起卦方式: ${method}`); } // 提取爻线数组 const lines = calculatorResult.lines || calculatorResult; // 确定本卦 const originalHexagram = this.determineHexagram(lines.map(l => l.type)); // 确定变卦 const changingLines = lines.filter(l => l.changing || l.is_changing).map(l => l.position); const changedHexagram = changingLines.length > 0 ? this.calculateChangedHexagram(originalHexagram, changingLines) : null; // 获取卦象详细信息 const originalInfo = await this.hexagramDB.getHexagram(originalHexagram.id); const changedInfo = changedHexagram ? await this.hexagramDB.getHexagram(changedHexagram.id) : null; const result = { timestamp: new Date().toISOString(), method: method, question: question, original: { ...originalHexagram, ...originalInfo, lines: lines }, changing_lines: changingLines, changed: changedInfo ? { ...changedHexagram, ...changedInfo } : null, interpretation_hint: this.generateInterpretationHint(originalInfo, changedInfo, question) }; this.logger.info('卦象生成成功', { hexagramId: originalHexagram.id }); return result; } catch (error) { this.logger.error('卦象生成失败', { error: error.message, stack: error.stack, method: method, question: question, seed: seed }); console.error('详细错误信息:', error); throw error; } }
  • src/index.js:75-96 (registration)
    Tool registration in the ListTools handler, defining name, description, and input schema for the MCP protocol.
    name: 'yijing_generate_hexagram', description: '根据指定方法生成六爻卦象', inputSchema: { type: 'object', properties: { method: { type: 'string', enum: ['number', 'time', 'plum_blossom', 'random'], description: '起卦方式' }, question: { type: 'string', description: '用户问题或求卦意图' }, seed: { type: 'string', description: '起卦数字或其他种子信息(可选)' } }, required: ['method', 'question'] } },
  • Delegation from the main CallToolRequestSchema handler to the YijingEngine's generateHexagram method.
    case 'yijing_generate_hexagram': result = await yijingEngine.generateHexagram(args); break;
  • Runtime input validation schema using Joi for the yijing_generate_hexagram tool parameters.
    function createYijingGenerateHexagramSchema() { return Joi.object({ method: Joi.string().valid('number', 'time', 'plum_blossom', 'random').required(), question: Joi.string().min(3).max(500).required(), seed: Joi.string().optional() }); }

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/SiwuXue/yijing-bazi-mcp-server'

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