get_ecology
Retrieve ecological data for marine species from FishBase, including habitat, diet, and environmental requirements, using scientific names.
Instructions
Get ecological information for a species
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| species_name | Yes | Scientific name of the species |
Implementation Reference
- src/index.ts:187-199 (handler)MCP CallToolRequest handler for the 'get_ecology' tool. It calls fishbaseAPI.getEcology with the species_name argument and returns the result as JSON-formatted text content.case "get_ecology": return { content: [ { type: "text", text: JSON.stringify( await fishbaseAPI.getEcology(args.species_name as string), null, 2 ), }, ], };
- src/index.ts:68-81 (registration)Registration of the 'get_ecology' tool in the ListTools response, including its name, description, and input schema definition.{ name: "get_ecology", description: "Get ecological information for a species", inputSchema: { type: "object", properties: { species_name: { type: "string", description: "Scientific name of the species", }, }, required: ["species_name"], }, },
- src/fishbase-api.ts:68-82 (helper)Core logic for retrieving ecology data: fetches species to get SpecCode, queries the 'ecology' table, and filters rows matching the species.async getEcology(speciesName: string): Promise<any[]> { try { const speciesData = await this.getSpecies(speciesName); if (speciesData.length === 0) { throw new Error(`Species not found: ${speciesName}`); } const specCode = speciesData[0].SpecCode; const ecoData = await this.queryTable('ecology'); return ecoData.filter((row: any) => row.SpecCode === specCode); } catch (error) { throw new Error(`Failed to get ecology data: ${error}`); } }