get_seismic_data
Retrieve recent seismic activity data for Portugal, including continental areas, Azores, and Madeira, to monitor earthquake occurrences.
Instructions
Obter dados sísmicos recentes
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Área: 'continent', 'azores', 'madeira', ou 'all' | all |
Implementation Reference
- src/index.js:242-299 (handler)The handler function for get_seismic_data tool. Fetches seismic data from IPMA API for specified area, formats recent earthquakes (up to 10) into a markdown text response with details like time, location, magnitude, depth, coordinates.async getSeismicData(area) { try { let areaId; switch (area.toLowerCase()) { case "continent": areaId = 1; break; case "azores": areaId = 2; break; case "madeira": areaId = 3; break; default: areaId = 1; } const response = await fetch(`${this.baseUrl}/observation/seismic/${areaId}.json`); const data = await response.json(); if (!data.data || data.data.length === 0) { return { content: [ { type: "text", text: "Não há dados sísmicos recentes para a área especificada." } ] }; } let result = `**Dados Sísmicos - ${area}**\n\n`; result += `Última atualização: ${data.data[0]?.dataUpdate}\n\n`; const recentData = data.data.slice(0, 10); recentData.forEach((earthquake) => { const eventTime = new Date(earthquake.time).toLocaleString('pt-PT'); result += `**${eventTime}**\n`; result += `Local: ${earthquake.obsRegion || 'N/A'}\n`; result += `Magnitude: ${earthquake.magnitud} ${earthquake.magType}\n`; result += `Profundidade: ${earthquake.depth} km\n`; result += `Coordenadas: ${earthquake.lat}, ${earthquake.lon}\n\n`; }); return { content: [ { type: "text", text: result } ] }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); throw new McpError(ErrorCode.InternalError, `Erro ao obter dados sísmicos: ${errorMessage}`); } }
- src/index.js:60-73 (registration)Registration of the get_seismic_data tool in the ListTools response, including name, description, and input schema defining optional 'area' parameter.{ name: "get_seismic_data", description: "Obter dados sísmicos recentes", inputSchema: { type: "object", properties: { area: { type: "string", description: "Área: 'continent', 'azores', 'madeira', ou 'all'", default: "all" } } } },
- src/index.js:112-113 (registration)Dispatcher case in CallToolRequestSchema handler that routes get_seismic_data calls to the getSeismicData method with default area 'all'.case "get_seismic_data": return await this.getSeismicData(args?.area || "all");