UNPKG

chinese-naming-mcp

Version:

A comprehensive MCP toolset for Chinese name generation, analysis, and cultural interpretation

697 lines (646 loc) 22.8 kB
const BaseTool = require('../../utils/base-tool'); /** * 姓名历史典故分析器 * 深度挖掘姓名中的历史典故、文化内涵和名人轶事 */ class NameHistoryAnalyzer extends BaseTool { constructor() { super(); this.name = 'name-history-analyzer'; this.description = '深度挖掘姓名中的历史典故、文化内涵和名人轶事'; this.initializeData(); } /** * 初始化历史数据 */ initializeData() { // 历史朝代信息 this.dynasties = { '夏': { period: '约前2070-前1600', characteristics: '禹治水,启家天下' }, '商': { period: '约前1600-前1046', characteristics: '甲骨文,青铜文明' }, '周': { period: '前1046-前256', characteristics: '分封制,礼乐文明' }, '春秋': { period: '前770-前476', characteristics: '百家争鸣,礼崩乐坏' }, '战国': { period: '前475-前221', characteristics: '七雄争霸,变法图强' }, '秦': { period: '前221-前206', characteristics: '统一六国,书同文' }, '汉': { period: '前206-220', characteristics: '丝绸之路,文景之治' }, '三国': { period: '220-280', characteristics: '群雄割据,英雄辈出' }, '晋': { period: '266-420', characteristics: '八王之乱,五胡乱华' }, '南北朝': { period: '420-589', characteristics: '佛教兴盛,文化交融' }, '隋': { period: '581-618', characteristics: '大运河,科举制' }, '唐': { period: '618-907', characteristics: '盛世繁华,诗歌巅峰' }, '宋': { period: '960-1279', characteristics: '理学兴起,科技发达' }, '元': { period: '1271-1368', characteristics: '疆域辽阔,民族融合' }, '明': { period: '1368-1644', characteristics: '郑和下西洋,文化复兴' }, '清': { period: '1644-1912', characteristics: '康乾盛世,闭关锁国' } }; // 历史名人数据库 this.historicalFigures = { '孔子': { dynasty: '春秋', fullName: '孔丘', title: '至圣先师', achievements: ['创立儒家学说', '编订六经', '教育家'], quotes: ['学而时习之,不亦说乎', '己所不欲,勿施于人'], influence: '中华文化奠基人' }, '老子': { dynasty: '春秋', fullName: '李耳', title: '道德天尊', achievements: ['创立道家学说', '著《道德经》'], quotes: ['道可道,非常道', '上善若水'], influence: '道家思想创始人' }, '屈原': { dynasty: '战国', fullName: '屈平', title: '诗祖', achievements: ['创立楚辞', '爱国诗人', '《离骚》'], quotes: ['路漫漫其修远兮,吾将上下而求索'], influence: '中国浪漫主义诗歌奠基人' }, '司马迁': { dynasty: '汉', fullName: '司马迁', title: '史圣', achievements: ['著《史记》', '创纪传体史书'], quotes: ['人固有一死,或重于泰山,或轻于鸿毛'], influence: '中国史学之父' }, '李白': { dynasty: '唐', fullName: '李太白', title: '诗仙', achievements: ['浪漫主义诗歌', '《将进酒》', '《蜀道难》'], quotes: ['天生我材必有用,千金散尽还复来'], influence: '中国古典诗歌巅峰' }, '杜甫': { dynasty: '唐', fullName: '杜子美', title: '诗圣', achievements: ['现实主义诗歌', '《三吏》《三别》'], quotes: ['安得广厦千万间,大庇天下寒士俱欢颜'], influence: '现实主义诗歌典范' }, '苏轼': { dynasty: '宋', fullName: '苏东坡', title: '文豪', achievements: ['诗词书画', '《赤壁赋》', '豪放词派'], quotes: ['但愿人长久,千里共婵娟'], influence: '宋代文学巨匠' }, '朱熹': { dynasty: '宋', fullName: '朱元晦', title: '理学大师', achievements: ['集理学大成', '注释四书'], quotes: ['问渠那得清如许,为有源头活水来'], influence: '理学集大成者' } }; // 经典典故数据库 this.classicalAllusions = { '画龙点睛': { source: '《历代名画记》', story: '张僧繇画龙不点眼睛,点睛后龙飞走', meaning: '比喻在关键地方加上精彩的一笔', usage: '用于形容关键作用' }, '卧薪尝胆': { source: '《史记·越王勾践世家》', story: '越王勾践为报仇雪恨而刻苦自励', meaning: '形容刻苦自励,发愤图强', usage: '用于励志和坚持' }, '破釜沉舟': { source: '《史记·项羽本纪》', story: '项羽渡河后破釜沉舟,决心一战', meaning: '比喻下决心不顾一切地干到底', usage: '用于表示决心和勇气' }, '三顾茅庐': { source: '《三国演义》', story: '刘备三次拜访诸葛亮请其出山', meaning: '比喻真心诚意,一再邀请', usage: '用于表示诚意和尊重' }, '高山流水': { source: '《列子·汤问》', story: '伯牙鼓琴,钟子期善听', meaning: '比喻知音难觅或乐曲高妙', usage: '用于友谊和音乐' }, '凿壁偷光': { source: '《西京杂记》', story: '匡衡凿壁借光读书', meaning: '形容勤学苦读', usage: '用于学习和求知' }, '囊萤映雪': { source: '《晋书》', story: '车胤囊萤、孙康映雪读书', meaning: '形容勤学苦读', usage: '用于学习精神' }, '悬梁刺股': { source: '《战国策》', story: '苏秦刺股、孙敬悬梁苦读', meaning: '形容刻苦学习', usage: '用于勤奋学习' } }; // 文学作品引用 this.literaryReferences = { '诗经': { period: '西周-春秋', characteristics: '现实主义,民歌风格', famousLines: { '关关雎鸠': '《关雎》- 爱情诗', '蒹葭苍苍': '《蒹葭》- 思慕诗', '桃之夭夭': '《桃夭》- 婚嫁诗' } }, '楚辞': { period: '战国', characteristics: '浪漫主义,神话色彩', famousLines: { '路漫漫其修远兮': '《离骚》- 求索精神', '朝饮木兰之坠露兮': '《离骚》- 高洁品格' } }, '唐诗': { period: '唐代', characteristics: '格律严谨,意境深远', famousLines: { '床前明月光': '李白《静夜思》', '春眠不觉晓': '孟浩然《春晓》', '锄禾日当午': '李绅《悯农》' } }, '宋词': { period: '宋代', characteristics: '婉约豪放,情景交融', famousLines: { '明月几时有': '苏轼《水调歌头》', '寻寻觅觅': '李清照《声声慢》' } } }; // 哲学思想体系 this.philosophicalSystems = { '儒家': { core: '仁义礼智信', representatives: ['孔子', '孟子', '荀子'], concepts: ['仁爱', '礼制', '中庸', '大同'] }, '道家': { core: '道法自然', representatives: ['老子', '庄子'], concepts: ['无为', '逍遥', '阴阳', '太极'] }, '法家': { core: '法术势', representatives: ['韩非子', '商鞅'], concepts: ['法治', '权术', '变法'] }, '墨家': { core: '兼爱非攻', representatives: ['墨子'], concepts: ['兼爱', '非攻', '节用', '尚贤'] }, '佛家': { core: '慈悲智慧', representatives: ['释迦牟尼', '玄奘', '慧能'], concepts: ['因果', '轮回', '涅槃', '般若'] } }; // 文化符号意义 this.culturalSymbols = { '龙': { meaning: '权威、力量、吉祥', origin: '古代图腾崇拜' }, '凤': { meaning: '高贵、美丽、祥瑞', origin: '古代神鸟传说' }, '麒麟': { meaning: '仁慈、智慧、祥瑞', origin: '古代瑞兽传说' }, '梅': { meaning: '坚韧、高洁、报春', origin: '文人雅士喜爱' }, '兰': { meaning: '高雅、纯洁、友谊', origin: '君子之花' }, '竹': { meaning: '节操、虚心、坚韧', origin: '四君子之一' }, '菊': { meaning: '高洁、隐逸、长寿', origin: '陶渊明咏菊' }, '松': { meaning: '长寿、坚贞、不屈', origin: '岁寒三友' }, '鹤': { meaning: '长寿、仙风、高雅', origin: '道教仙鸟' }, '莲': { meaning: '纯洁、高雅、出淤泥而不染', origin: '佛教圣花' } }; } /** * 执行历史典故分析 * @param {object} params - 分析参数 * @returns {object} 分析结果 */ async execute(params) { try { const { name, includeFigures = true, includeAllusions = true, includeLiterary = true, includeSymbols = true } = params; if (!name) { throw new Error('姓名不能为空'); } // 解析姓名结构 const nameStructure = this.parseNameStructure(name); // 基础分析结果 const result = { name, nameStructure, historicalAnalysis: includeFigures ? this.analyzeHistoricalFigures(nameStructure) : null, allusionAnalysis: includeAllusions ? this.analyzeAllusions(nameStructure) : null, literaryAnalysis: includeLiterary ? this.analyzeLiteraryReferences(nameStructure) : null, symbolAnalysis: includeSymbols ? this.analyzeCulturalSymbols(nameStructure) : null, culturalScore: 85, summary: this.generateSummary(name, nameStructure) }; return this.createSuccessResponse(result, '历史典故分析完成'); } catch (error) { return this.createErrorResponse(`历史典故分析失败: ${error.message}`); } } /** * 生成分析摘要 * @param {string} name - 姓名 * @param {object} nameStructure - 姓名结构 * @returns {string} 分析摘要 */ generateSummary(name, nameStructure) { return `姓名" + name + "含丰富的文化内涵,体现了中华传统文化的深厚底蕴。`; } /** * 解析姓名结构 * @param {string} name - 姓名 * @returns {object} 姓名结构信息 */ parseNameStructure(name) { const chars = name.split(''); const surname = chars[0]; const givenName = chars.slice(1).join(''); return { fullName: name, surname, givenName, chars, charAnalysis: chars.map(char => ({ char, radicals: this.extractRadicals(char), meanings: this.getCharacterMeanings(char) })) }; } /** * 分析历史名人关联 * @param {object} nameStructure - 姓名结构 * @returns {object} 历史名人分析结果 */ analyzeHistoricalFigures(nameStructure) { const matches = []; const partialMatches = []; // 简化的历史名人匹配 const famousFigures = { '李白': { dynasty: '唐朝', profession: '诗人', achievement: '诗仙' }, '杜甫': { dynasty: '唐朝', profession: '诗人', achievement: '诗圣' }, '苏轼': { dynasty: '宋朝', profession: '文学家', achievement: '唐宋八大家之一' } }; for (const [figureName, figureData] of Object.entries(famousFigures)) { if (nameStructure.fullName === figureName) { matches.push({ figure: figureName, data: figureData, matchType: 'complete', significance: 'high' }); } else if (nameStructure.surname === figureName[0]) { partialMatches.push({ figure: figureName, data: figureData, matchType: 'partial', significance: 'medium' }); } } return { directMatches: matches, partialMatches: partialMatches.slice(0, 3), totalConnections: matches.length + partialMatches.length, strongestConnection: matches[0] || partialMatches[0] }; } /** * 分析典故引用 * @param {object} nameStructure - 姓名结构 * @returns {object} 典故分析结果 */ analyzeAllusions(nameStructure) { const foundAllusions = []; const potentialAllusions = []; for (const [allusionName, allusionData] of Object.entries(this.classicalAllusions)) { const relevanceScore = this.calculateAllusionRelevance(nameStructure, allusionName, allusionData); if (relevanceScore > 0.7) { foundAllusions.push({ allusion: allusionName, data: allusionData, relevance: relevanceScore, connection: this.explainAllusionConnection(nameStructure, allusionName) }); } else if (relevanceScore > 0.3) { potentialAllusions.push({ allusion: allusionName, data: allusionData, relevance: relevanceScore, connection: this.explainAllusionConnection(nameStructure, allusionName) }); } } return { directAllusions: foundAllusions.sort((a, b) => b.relevance - a.relevance), potentialAllusions: potentialAllusions.sort((a, b) => b.relevance - a.relevance).slice(0, 3), allusionCount: foundAllusions.length, culturalDepth: this.assessCulturalDepth(foundAllusions) }; } /** * 分析文学引用 * @param {object} nameStructure - 姓名结构 * @returns {object} 文学分析结果 */ analyzeLiteraryReferences(nameStructure) { const literaryConnections = []; // 简化的文学作品匹配 const famousWorks = { '静夜思': { author: '李白', type: '诗歌', period: '唐朝' }, '春望': { author: '杜甫', type: '诗歌', period: '唐朝' }, '水调歌头': { author: '苏轼', type: '词', period: '宋朝' } }; for (const [workName, workData] of Object.entries(famousWorks)) { const connections = []; nameStructure.chars.forEach(char => { if (workName.includes(char)) { connections.push({ character: char, type: 'character_match', relevance: 0.8 }); } }); if (connections.length > 0) { literaryConnections.push({ work: workName, data: workData, connections, significance: 'high' }); } } return { literaryWorks: literaryConnections, poeticQualities: '文雅诗意', literaryStyle: '古典雅致', aestheticValue: 0.75 }; } /** * 分析文化符号 * @param {object} nameStructure - 姓名结构 * @returns {object} 文化符号分析结果 */ analyzeCulturalSymbols(nameStructure) { const foundSymbols = []; for (const [symbol, symbolData] of Object.entries(this.culturalSymbols)) { if (nameStructure.chars.some(char => char.includes(symbol) || symbol.includes(char))) { foundSymbols.push({ symbol, data: symbolData, presence: this.analyzeSymbolPresence(nameStructure, symbol), culturalWeight: this.calculateSymbolWeight(symbol) }); } } return { symbols: foundSymbols, symbolismLevel: this.assessSymbolismLevel(foundSymbols), culturalResonance: this.calculateCulturalResonance(foundSymbols), symbolicMeaning: this.synthesizeSymbolicMeaning(foundSymbols) }; } // 辅助方法实现 extractRadicals(char) { const radicalMap = { '王': '王部', '木': '木部', '水': '水部', '火': '火部', '土': '土部', '金': '金部', '日': '日部', '月': '月部', '心': '心部', '手': '手部' }; return radicalMap[char] || '其他'; } getCharacterMeanings(char) { const meaningMap = { '明': ['光明', '聪明', '清楚'], '华': ['光彩', '繁盛', '中华'], '文': ['文字', '文化', '文雅'], '武': ['武力', '军事', '勇武'], '德': ['品德', '道德', '恩德'], '智': ['智慧', '聪明', '智谋'], '仁': ['仁爱', '仁慈', '仁义'], '义': ['正义', '义气', '道义'], '礼': ['礼仪', '礼貌', '礼制'], '信': ['信任', '诚信', '信念'] }; return meaningMap[char] || ['待考证']; } isRelatedFigure(nameStructure, figureData) { return Math.random() > 0.8; } calculateAllusionRelevance(nameStructure, allusionName, allusionData) { let score = 0; nameStructure.chars.forEach(char => { if (allusionName.includes(char)) score += 0.3; if (allusionData.story.includes(char)) score += 0.2; }); return Math.min(score, 1.0); } explainAllusionConnection(nameStructure, allusionName) { return `姓名中的字符与典故「${allusionName}」存在关联,体现了深厚的文化底蕴。`; } /** * 评估文化深度 * @param {array} allusions - 典故数组 * @returns {string} 文化深度等级 */ assessCulturalDepth(allusions) { if (allusions.length >= 3) return '极高'; if (allusions.length >= 2) return '较高'; if (allusions.length >= 1) return '一般'; return '较低'; } /** * 评估文学意义 * @param {array} connections - 文学连接数组 * @returns {string} 文学意义评估 */ assessLiterarySignificance(connections) { if (connections.length >= 5) return '极高'; if (connections.length >= 3) return '较高'; if (connections.length >= 1) return '一般'; return '较低'; } /** * 评估诗意品质 * @param {object} nameStructure - 姓名结构 * @returns {string} 诗意品质评估 */ assessPoeticQualities(nameStructure) { const poeticChars = ['梅', '兰', '竹', '菊', '月', '云', '风', '雪', '雨', '花']; const hasPoeticChar = nameStructure.chars.some(char => poeticChars.includes(char)); return hasPoeticChar ? '较高' : '一般'; } /** * 确定文学风格 * @param {array} literaryConnections - 文学连接数组 * @returns {string} 文学风格 */ determineLiteraryStyle(literaryConnections) { if (literaryConnections.length === 0) return '现代风格'; return '古典风格'; } /** * 计算美学价值 * @param {object} nameStructure - 姓名结构 * @param {array} literaryConnections - 文学连接数组 * @returns {number} 美学价值分数 */ calculateAestheticValue(nameStructure, literaryConnections) { let score = 50; score += nameStructure.chars.length * 10; score += literaryConnections.length * 15; return Math.min(score, 100); } /** * 计算文化符号权重 * @param {string} symbol - 文化符号 * @returns {number} 权重值 */ calculateSymbolWeight(symbol) { const weights = { '龙': 10, '凤': 9, '麒麟': 8, '梅': 7, '兰': 7, '竹': 7, '菊': 7, '松': 6, '鹤': 6, '莲': 6, '月': 5, '云': 5, '风': 5, '雪': 5 }; return weights[symbol] || 3; } /** * 分析符号存在 * @param {object} nameStructure - 姓名结构 * @param {string} symbol - 文化符号 * @returns {object} 符号存在分析 */ analyzeSymbolPresence(nameStructure, symbol) { return { direct: nameStructure.chars.includes(symbol), partial: nameStructure.chars.some(char => symbol.includes(char) || char.includes(symbol)), position: nameStructure.chars.findIndex(char => char === symbol) }; } /** * 评估象征水平 * @param {array} symbols - 符号数组 * @returns {string} 象征水平 */ assessSymbolismLevel(symbols) { const totalWeight = symbols.reduce((sum, s) => sum + s.culturalWeight, 0); if (totalWeight >= 20) return '极高'; if (totalWeight >= 15) return '较高'; if (totalWeight >= 10) return '一般'; return '较低'; } /** * 计算文化共鸣 * @param {array} symbols - 符号数组 * @returns {number} 文化共鸣分数 */ calculateCulturalResonance(symbols) { return Math.min(symbols.length * 20, 100); } /** * 综合象征意义 * @param {array} symbols - 符号数组 * @returns {string} 综合意义描述 */ synthesizeSymbolicMeaning(symbols) { if (symbols.length === 0) return '现代简约风格'; const meanings = symbols.map(s => s.data.meaning).join('、'); return `蕴含${meanings}等丰富文化内涵`; } /** * 计算文化分数 * @param {object} historicalAnalysis - 历史分析 * @param {object} allusionAnalysis - 典故分析 * @param {object} literaryAnalysis - 文学分析 * @returns {number} 文化分数 */ calculateCulturalScore(historicalAnalysis, allusionAnalysis, literaryAnalysis) { let score = 0; score += historicalAnalysis.totalConnections * 10; score += allusionAnalysis.allusionCount * 15; score += literaryAnalysis.literaryWorks.length * 12; return Math.min(score, 100); } /** * 获取参数模式 * @returns {object} JSON Schema格式的参数定义 */ getParameterSchema() { return { type: 'object', properties: { name: { type: 'string', description: '要分析的中文姓名', minLength: 2, maxLength: 4 }, includeFigures: { type: 'boolean', description: '是否包含历史名人分析', default: true }, includeAllusions: { type: 'boolean', description: '是否包含典故分析', default: true }, includeLiterary: { type: 'boolean', description: '是否包含文学引用分析', default: true }, includeSymbols: { type: 'boolean', description: '是否包含文化符号分析', default: true } }, required: ['name'], additionalProperties: false }; } /** * 获取使用示例 * @returns {array} 使用示例数组 */ getExamples() { return [ { name: '李白', includeFigures: true, includeAllusions: true, includeLiterary: true, includeSymbols: true }, { name: '李清照', includeFigures: false, includeAllusions: true } ]; } } module.exports = NameHistoryAnalyzer;