get_adjacent_regions
Find bordering regions for any eBird location code to explore nearby birding areas and expand your search radius for observations.
Instructions
Get regions that share a border with the specified region.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| region_code | Yes | Country, subnational1, or subnational2 code |
Implementation Reference
- src/index.ts:389-392 (handler)Handler function that fetches adjacent regions from eBird API /ref/adjacent/{region_code} endpoint using makeRequest helper and returns formatted JSON response.async (args) => { const result = await makeRequest(`/ref/adjacent/${args.region_code}`); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; }
- src/index.ts:386-388 (schema)Zod input schema defining the region_code parameter.{ region_code: z.string().describe("Country, subnational1, or subnational2 code"), },
- src/index.ts:383-393 (registration)MCP server.tool registration of the get_adjacent_regions tool including description, schema, and handler.server.tool( "get_adjacent_regions", "Get regions that share a border with the specified region.", { region_code: z.string().describe("Country, subnational1, or subnational2 code"), }, async (args) => { const result = await makeRequest(`/ref/adjacent/${args.region_code}`); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } );
- src/index.ts:19-36 (helper)Shared helper function for making authenticated HTTP requests to eBird API endpoints.async function makeRequest(endpoint: string, params: Record<string, string | number | boolean> = {}): Promise<unknown> { const url = new URL(`${BASE_URL}${endpoint}`); Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { url.searchParams.append(key, String(value)); } }); const response = await fetch(url.toString(), { headers: { "X-eBirdApiToken": API_KEY! }, }); if (!response.ok) { throw new Error(`eBird API error: ${response.status} ${response.statusText}`); } return response.json(); }