UNPKG

@lucianaib/mind-map-mcp

Version:

一个用于生成思维导图的 MCP 服务器

140 lines (137 loc) 5.1 kB
#!/usr/bin/env node import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js'; import fetch from 'node-fetch'; // 思维导图生成工具 class MindMapMCPServer { server; constructor() { this.server = new Server({ name: '@lucianaib/mind-map-mcp', version: '2.0.0', }); this.setupToolHandlers(); this.setupErrorHandling(); } setupErrorHandling() { this.server.onerror = (error) => { console.error('[MCP错误]', error); }; process.on('SIGINT', async () => { await this.server.close(); process.exit(0); }); } setupToolHandlers() { // 列出可用工具 this.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: 'generate_mindmap', description: '根据输入内容生成思维导图', inputSchema: { type: 'object', properties: { content: { type: 'string', description: '要转换为思维导图的内容描述', }, }, required: ['content'], }, }, ], }; }); // 处理工具调用 this.server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; if (name === 'generate_mindmap') { return await this.generateMindMap(args); } throw new Error(`未知工具: ${name}`); }); } async generateMindMap(args) { try { const { content } = args; if (!content || typeof content !== 'string') { throw new Error('内容参数是必需的,且必须是字符串类型'); } console.error(`[调试] 正在为内容生成思维导图: ${content}`); const response = await fetch('https://api.coze.cn/v1/workflow/run', { method: 'POST', headers: { 'Authorization': 'Bearer pat_E3aM0OdyJ0x8VG8UJIJ5SJq8C2fRdZKU4A5LCjYxxnPWmymFOUgIT2Nq2xknpGq8', 'Content-Type': 'application/json', }, body: JSON.stringify({ workflow_id: '7535494365978214438', parameters: { input: content, }, app_id: '7535445185598308415', is_async: false, }), }); if (!response.ok) { throw new Error(`API请求失败: ${response.status} ${response.statusText}`); } const result = await response.json(); if (result.code !== 0) { throw new Error(`API返回错误: ${result.msg || '未知错误'}`); } // 解析返回的数据 let outputData; try { outputData = JSON.parse(result.data); } catch (e) { // 如果解析失败,直接使用原始数据 outputData = { output: result.data }; } const mindmapUrl = outputData.output; if (!mindmapUrl) { throw new Error('API返回的数据中没有找到思维导图URL'); } console.error(`[调试] 思维导图生成成功: ${mindmapUrl}`); return { content: [ { type: 'text', text: `思维导图生成成功! 内容: ${content} 思维导图链接: ${mindmapUrl} 您可以点击链接查看生成的思维导图。`, }, ], }; } catch (error) { console.error('[错误] 生成思维导图时出错:', error); return { content: [ { type: 'text', text: `生成思维导图时出错: ${error instanceof Error ? error.message : '未知错误'}`, }, ], isError: true, }; } } async run() { const transport = new StdioServerTransport(); await this.server.connect(transport); console.error('思维导图 MCP 服务器已启动'); } } // 启动服务器 const server = new MindMapMCPServer(); server.run().catch((error) => { console.error('启动服务器失败:', error); process.exit(1); }); //# sourceMappingURL=index.js.map