Skip to main content
Glama
harimkang

Korea Tourism API MCP Server

find_nearby_attractions

Search for tourism attractions, restaurants, accommodations, and facilities near specific GPS coordinates in Korea using location-based filtering with customizable radius and content types.

Instructions

Find tourism attractions near a specific location in Korea.

This tool performs a location-based search to find tourism items within a specified radius of given GPS coordinates. It's useful for finding nearby attractions, restaurants, or other tourism facilities when you know a specific location.

Args: longitude (float): Longitude coordinate (e.g., 126.9780 for Seoul) latitude (float): Latitude coordinate (e.g., 37.5665 for Seoul) radius (int, optional): Search radius in meters (default: 1000, max: 20000) content_type (str, optional): Type of content to filter. Valid values: - "Tourist Attraction" (default) - "Cultural Facility" - "Festival Event" - "Leisure Activity" - "Accommodation" - "Shopping" - "Restaurant" - "Transportation" language (str, optional): Language for results (default: "en"). Supported: - "en" (English) - "jp" (Japanese) - "zh-cn" (Simplified Chinese) - "zh-tw" (Traditional Chinese) - "de" (German) - "fr" (French) - "es" (Spanish) - "ru" (Russian) page (int, optional): Page number for pagination (default: 1, min: 1) rows (int, optional): Number of items per page (default: 20, max: 100) filter (list[str], optional): List of keys to include in each result item (whitelist). - If filter is None or an empty list ([]), all fields are returned. - If filter contains values, only the specified keys will be included in each item, and all other keys will be removed.

Returns: dict: Nearby tourism attractions with structure: { "total_count": int, # Total number of matching items "num_of_rows": int, # Number of items per page "page_no": int, # Current page number "search_radius": int, # Search radius used "items": [ # List of tourism items { "title": str, # Name of the attraction/place "addr1": str, # Primary address "addr2": str, # Secondary address "areacode": str, # Area code "sigungucode": str, # Sigungu code "cat1": str, # Category 1 code "cat2": str, # Category 2 code "cat3": str, # Category 3 code "contentid": str, # Unique content ID "contenttypeid": str, # Content type ID "createdtime": str, # Creation timestamp "modifiedtime": str, # Last modified timestamp "tel": str, # Phone number "firstimage": str, # URL of main image "firstimage2": str, # URL of thumbnail image "mapx": str, # Longitude "mapy": str, # Latitude "mlevel": str, # Map level "dist": str # Distance from the specified coordinates } # ... more items ] }

Example: find_nearby_attractions(126.9780, 37.5665, 1000, "Tourist Attraction", "en", 1, 10)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
longitudeYes
latitudeYes
radiusNo
content_typeNo
languageNo
pageNo
rowsNo
filterNo

Implementation Reference

  • The 'find_nearby_attractions' tool implementation, which validates input parameters and calls the API client to fetch location-based tourism data.
    async def find_nearby_attractions(
        longitude: float,
        latitude: float,
        radius: int = 1000,
        content_type: str | None = None,
        language: str | None = None,
        page: int = 1,
        rows: int = 20,
        filter: list[str] | None = None,
    ) -> dict:
        """
        Find tourism attractions near a specific location in Korea.
    
        This tool performs a location-based search to find tourism items within a specified
        radius of given GPS coordinates. It's useful for finding nearby attractions,
        restaurants, or other tourism facilities when you know a specific location.
    
        Args:
            longitude (float): Longitude coordinate (e.g., 126.9780 for Seoul)
            latitude (float): Latitude coordinate (e.g., 37.5665 for Seoul)
            radius (int, optional): Search radius in meters (default: 1000, max: 20000)
            content_type (str, optional): Type of content to filter. Valid values:
                - "Tourist Attraction" (default)
                - "Cultural Facility"
                - "Festival Event"
                - "Leisure Activity"
                - "Accommodation"
                - "Shopping"
                - "Restaurant"
                - "Transportation"
            language (str, optional): Language for results (default: "en"). Supported:
                - "en" (English)
                - "jp" (Japanese)
                - "zh-cn" (Simplified Chinese)
                - "zh-tw" (Traditional Chinese)
                - "de" (German)
                - "fr" (French)
                - "es" (Spanish)
                - "ru" (Russian)
            page (int, optional): Page number for pagination (default: 1, min: 1)
            rows (int, optional): Number of items per page (default: 20, max: 100)
            filter (list[str], optional): List of keys to include in each result item (whitelist).
                - If filter is None or an empty list ([]), all fields are returned.
                - If filter contains values, only the specified keys will be included in each item, and all other keys will be removed.
    
        Returns:
            dict: Nearby tourism attractions with structure:
            {
                "total_count": int,     # Total number of matching items
                "num_of_rows": int,     # Number of items per page
                "page_no": int,         # Current page number
                "search_radius": int,   # Search radius used
                "items": [              # List of tourism items
                    {
                        "title": str,           # Name of the attraction/place
                        "addr1": str,           # Primary address
                        "addr2": str,           # Secondary address
                        "areacode": str,        # Area code
                        "sigungucode": str,     # Sigungu code
                        "cat1": str,            # Category 1 code
                        "cat2": str,            # Category 2 code
                        "cat3": str,            # Category 3 code
                        "contentid": str,       # Unique content ID
                        "contenttypeid": str,   # Content type ID
                        "createdtime": str,     # Creation timestamp
                        "modifiedtime": str,    # Last modified timestamp
                        "tel": str,             # Phone number
                        "firstimage": str,      # URL of main image
                        "firstimage2": str,     # URL of thumbnail image
                        "mapx": str,            # Longitude
                        "mapy": str,            # Latitude
                        "mlevel": str,          # Map level
                        "dist": str             # Distance from the specified coordinates
                    }
                    # ... more items
                ]
            }
    
        Example:
            find_nearby_attractions(126.9780, 37.5665, 1000, "Tourist Attraction", "en", 1, 10)
        """
        # Validate and convert content_type
        content_type_id = None
        if content_type:
            content_type_id = next(
                (
                    k
                    for k, v in CONTENTTYPE_ID_MAP.items()
                    if v.lower() == content_type.lower()
                ),
                None,
            )
            if content_type_id is None:
                valid_types = ", ".join(CONTENTTYPE_ID_MAP.values())
                raise ValueError(
                    f"Invalid content_type: '{content_type}'. Valid types are: {valid_types}"
                )
    
        # Call the API client and return dict directly
        results = await get_api_client().get_location_based_list(
            mapx=longitude,
            mapy=latitude,
            radius=radius,
            content_type_id=content_type_id,
            language=language,
            page=page,
            rows=rows,
        )
        # Apply filter if provided
        if filter:
            filter_items = []
            for item in results.get("items", []):
                item = {k: v for k, v in item.items() if k in filter}
                filter_items.append(item)
            results["items"] = filter_items
        # Add search radius to the results
        return {**results, "search_radius": radius}

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/harimkang/mcp-korea-tourism-api'

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