/** * 外部 Web アクセス MCPlet * pool: info-pool | mcpletType: read | visibility: [model] */ import { MCPletServer } from '../../mcplet-server.js'; const MOCK_SERVICE_URL = process.env.MOCK_SERVICE_URL ?? 'http://localhost:5100'; const server = new MCPletServer('web-access-mcplet'); server.registerTool({ name: 'fetch_web_content', description: '外部Webサイトのコンテンツを取得します。天気予報など外部情報の収集に使用します。', inputSchema: { type: 'object', properties: { source: { type: 'string', description: '取得する情報ソース (例: weather_forecast, news)', }, date: { type: 'string', description: '対象日付 (YYYY-MM-DD形式)', }, }, required: ['source'], }, mcpletType: 'read', pool: 'info-pool', visibility: ['model'], handler: async (args) => { const source = args['source'] as string; const date = (args['date'] as string | undefined) ?? new Date().toISOString().slice(0, 10); if (source === 'weather_forecast' || source === 'weather') { const res = await fetch(`${MOCK_SERVICE_URL}/weather/forecast?date=${date}`); if (!res.ok) throw new Error(`Weather service returned ${res.status}`); return res.json(); } return { source, date, content: `Mock web content for source="${source}" on ${date}` }; }, }); await server.listen();