Skip to main content
Glama
hollanddd

Pokédex MCP Server

by hollanddd

get_pokemon_encounters

Find where specific Pokémon appear in the wild by entering their name or ID to get detailed location encounter data.

Instructions

Get location encounter information for a Pokémon

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe name or ID of the Pokémon

Implementation Reference

  • The asynchronous handler function for the get_pokemon_encounters MCP tool. It fetches the Pokémon data and encounters using pokeAPI.getPokemonWithEncounters and formats the response with formatPokemonEncounters, catching and formatting any errors.
    async ({ name }) => {
      try {
        const { pokemon, encounters } = await pokeAPI.getPokemonWithEncounters(
          name.toLowerCase().trim(),
        );
        return formatPokemonEncounters(pokemon, encounters);
      } catch (error) {
        return formatCaughtError(error, "fetching encounter information");
      }
    },
  • src/tools.ts:51-65 (registration)
    Registers the get_pokemon_encounters tool with the MCP server, providing the tool name, description, input schema (name parameter), and the handler function.
    server.tool(
      "get_pokemon_encounters",
      "Get location encounter information for a Pokémon",
      { name: z.string().min(1).describe("The name or ID of the Pokémon") },
      async ({ name }) => {
        try {
          const { pokemon, encounters } = await pokeAPI.getPokemonWithEncounters(
            name.toLowerCase().trim(),
          );
          return formatPokemonEncounters(pokemon, encounters);
        } catch (error) {
          return formatCaughtError(error, "fetching encounter information");
        }
      },
    );
  • Zod schema for the tool input, requiring a non-empty string for the Pokémon name or ID.
    { name: z.string().min(1).describe("The name or ID of the Pokémon") },
  • PokeAPIClient helper method that fetches both the Pokémon details and its location area encounters concurrently using Promise.all.
    async getPokemonWithEncounters(idOrName: string | number): Promise<{
      pokemon: Pokemon;
      encounters: LocationAreaEncounter[];
    }> {
      const [pokemon, encounters] = await Promise.all([
        this.getPokemon(idOrName),
        this.getPokemonEncounters(idOrName)
      ]);
    
      return { pokemon, encounters };
    }
  • Formatter helper that converts the Pokémon object and array of LocationAreaEncounter into a formatted MCPResponse text content, handling cases with no encounters and formatting location/version details.
    export function formatPokemonEncounters(
      pokemon: Pokemon,
      encounters: LocationAreaEncounter[]
    ): MCPResponse {
      if (encounters.length === 0) {
        return {
          content: [
            {
              type: "text",
              text: `**${pokemon.name}** has no recorded wild encounters. This Pokémon might be:
    - A starter Pokémon
    - Obtained through evolution
    - A legendary/mythical Pokémon
    - Only available through special events`,
            },
          ],
        };
      }
    
      const locationInfo = encounters
        .map((encounter) => {
          const locationName = encounter.location_area.name.replace("-", " ");
          const versions = encounter.version_details
            .map((vd) => {
              const encounterMethods = vd.encounter_details
                .map(
                  (ed) =>
                    `${ed.method.name} (Lv.${ed.min_level}-${ed.max_level}, ${ed.chance}% chance)`,
                )
                .join(", ");
              return `${vd.version.name}: ${encounterMethods}`;
            })
            .join("\n  ");
    
          return `**${locationName}:**\n  ${versions}`;
        })
        .join("\n\n");
    
      return {
        content: [
          {
            type: "text",
            text: `**${pokemon.name} Encounter Locations:**\n\n${locationInfo}`,
          },
        ],
      };
    }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hollanddd/pokedex-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server