Skip to main content
Glama

MCP Lottery Demo

by pmhw
demo.js4.2 kB
#!/usr/bin/env node /** * MCP 抽签工具演示脚本 * 展示各种使用场景 */ import { spawn } from 'child_process'; // 启动 MCP 服务器进程 const serverProcess = spawn('node', ['src/server.js'], { stdio: ['pipe', 'pipe', 'inherit'] }); // 发送请求的辅助函数 function sendRequest(request) { return new Promise((resolve, reject) => { let responseData = ''; const timeout = setTimeout(() => { reject(new Error('请求超时')); }, 3000); serverProcess.stdout.once('data', (data) => { clearTimeout(timeout); responseData += data.toString(); try { const response = JSON.parse(responseData); resolve(response); } catch (error) { reject(new Error('解析响应失败: ' + error.message)); } }); serverProcess.stdin.write(JSON.stringify(request) + '\n'); }); } // 演示场景 async function runDemo() { console.log('🎪 MCP 抽签工具演示\n'); try { // 场景1: 选择午餐 console.log('🍽️ 场景1: 选择午餐'); const lunchResponse = await sendRequest({ jsonrpc: '2.0', id: 1, method: 'tools/call', params: { name: 'draw_lottery', arguments: { options: ['中餐', '日料', '韩料', '西餐', '泰餐', '印度菜'] } } }); console.log(lunchResponse.result.content[0].text); console.log(''); // 场景2: 团队分工 console.log('👥 场景2: 团队分工'); const teamResponse = await sendRequest({ jsonrpc: '2.0', id: 2, method: 'tools/call', params: { name: 'draw_lottery', arguments: { options: ['前端开发', '后端开发', 'UI设计', '测试', '文档编写', '项目管理'], count: 3, allow_duplicate: false } } }); console.log(teamResponse.result.content[0].text); console.log(''); // 场景3: D&D 游戏 console.log('🎲 场景3: D&D 游戏 - 投20面骰子'); const dndResponse = await sendRequest({ jsonrpc: '2.0', id: 3, method: 'tools/call', params: { name: 'roll_dice', arguments: { sides: 20, count: 1 } } }); console.log(dndResponse.result.content[0].text); console.log(''); // 场景4: 决策 console.log('🪙 场景4: 抛硬币做决定'); const decisionResponse = await sendRequest({ jsonrpc: '2.0', id: 4, method: 'tools/call', params: { name: 'flip_coin', arguments: { count: 1 } } }); console.log(decisionResponse.result.content[0].text); console.log(''); // 场景5: 抽奖活动 console.log('🎁 场景5: 公司年会抽奖'); const prizeResponse = await sendRequest({ jsonrpc: '2.0', id: 5, method: 'tools/call', params: { name: 'draw_lottery', arguments: { options: ['iPhone 15', 'MacBook Pro', 'iPad', 'AirPods', '现金1000元'], count: 1 } } }); console.log(prizeResponse.result.content[0].text); console.log(''); // 场景6: 学习计划 console.log('📚 场景6: 随机选择学习科目'); const studyResponse = await sendRequest({ jsonrpc: '2.0', id: 6, method: 'tools/call', params: { name: 'draw_lottery', arguments: { options: ['数学', '英语', '物理', '化学', '历史', '地理'], count: 2, allow_duplicate: false } } }); console.log(studyResponse.result.content[0].text); console.log(''); console.log('🎉 演示完成!'); console.log('\n💡 提示:'); console.log('- 你可以修改 demo.js 中的选项来测试不同的场景'); console.log('- 运行 "node test-client.js" 进入交互式测试模式'); console.log('- 查看 demo-prompts.md 了解更多使用示例'); } catch (error) { console.error('❌ 演示失败:', error.message); } finally { serverProcess.kill(); process.exit(0); } } // 运行演示 runDemo();

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/pmhw/McpDemo'

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