/** * HR MCPlet (内部システム) * pool: なし (pool-less) | mcpletType: read | visibility: [model] */ import { MCPletServer } from '../../mcplet-server.js'; const server = new MCPletServer('hr-mcplet'); server.registerTool({ name: 'query_hr', description: 'HRシステムからスタッフ情報・シフトを取得します。施策実行に必要な人員確認に使用します。', inputSchema: { type: 'object', properties: { entity: { type: 'string', enum: ['staff', 'shifts'], description: '取得するエンティティ種別', }, date: { type: 'string', description: '対象日付 (YYYY-MM-DD形式)', }, }, required: ['entity'], }, mcpletType: 'read', visibility: ['model'], handler: async (args) => { const entity = args['entity'] as string; const date = (args['date'] as string | undefined) ?? new Date().toISOString().slice(0, 10); if (entity === 'staff') { return { staff: [ { staffId: 'S001', name: '中村 りか', role: 'manager', available: true }, { staffId: 'S002', name: '小林 けん', role: 'waiter', available: true }, { staffId: 'S003', name: '加藤 みゆ', role: 'waiter', available: false }, ], }; } if (entity === 'shifts') { return { date, shifts: [ { staffId: 'S001', startTime: '17:00', endTime: '23:00' }, { staffId: 'S002', startTime: '17:00', endTime: '22:00' }, ], }; } throw new Error(`Unknown HR entity: ${entity}`); }, }); await server.listen();