Skip to main content
Glama
harimkang

Korea Tourism API MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoHost address for HTTP transports127.0.0.1
MCP_PATHNoPath for HTTP endpoints/mcp
MCP_PORTNoPort for HTTP transports8000
MCP_LOG_LEVELNoLogging levelINFO
MCP_TRANSPORTNoTransport protocol to use (stdio, streamable-http, or sse)stdio
KOREA_TOURISM_API_KEYYesYour API key from the Korea Tourism Organization (KTO) Data Portal

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_tourism_by_keyword

Search for tourism information in Korea by keyword.

This tool searches through the Korea Tourism Organization database for tourism items matching the specified keyword. It supports filtering by content type, area, and provides paginated results with detailed information.

Args: keyword (str): Search keyword (e.g., "Gyeongbokgung", "Hanok", "Bibimbap") content_type (str, optional): Type of content to search for. Valid values: - "Tourist Attraction" (default) - "Cultural Facility" - "Festival Event" - "Leisure Activity" - "Accommodation" - "Shopping" - "Restaurant" - "Transportation" area_code (str, optional): Area code to filter results. Valid values: - "1" (Seoul) - "2" (Incheon) - "3" (Daejeon) - "4" (Daegu) - "5" (Gwangju) - "6" (Busan) - "7" (Ulsan) - "8" (Sejong) - "31" (Gyeonggi-do) - "32" (Gangwon-do) - "33" (Chungcheongbuk-do) - "34" (Chungcheongnam-do) - "35" (Gyeongsangbuk-do) - "36" (Gyeongsangnam-do) - "37" (Jeonbuk-do) - "38" (Jeollanam-do) - "39" (Jeju-do) 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: Search results 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 "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 "cpyrhtDivCd": str # Copyright division code } # ... more items ] }

Example: search_tourism_by_keyword("Gyeongbokgung", "Tourist Attraction", "1", "en", 1, 10)

get_tourism_by_area

Browse tourism information by geographic areas in Korea.

This tool retrieves tourism items from a specific geographic area in Korea. It allows filtering by area code, sigungu (district) code, and content type to find relevant tourism information in a particular region.

Args: area_code (str): Area code. Valid values: - "1" (Seoul) - "2" (Incheon) - "3" (Daejeon) - "4" (Daegu) - "5" (Gwangju) - "6" (Busan) - "7" (Ulsan) - "8" (Sejong) - "31" (Gyeonggi-do) - "32" (Gangwon-do) - "33" (Chungcheongbuk-do) - "34" (Chungcheongnam-do) - "35" (Gyeongsangbuk-do) - "36" (Gyeongsangnam-do) - "37" (Jeonbuk-do) - "38" (Jeollanam-do) - "39" (Jeju-do) sigungu_code (str, optional): Sigungu (district) code within the area 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: Area-based tourism information 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 "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 "zipcode": str, # Postal code "mlevel": str # Map level } # ... more items ] }

Example: get_tourism_by_area("1", "1", "Tourist Attraction", "en", 1, 20)

find_nearby_attractions

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)

search_festivals_by_date

Find festivals in Korea by date range.

This tool searches for festivals and events occurring within a specified date range. It's useful for finding cultural events, celebrations, and festivals happening during a particular period or ongoing events.

Args: start_date (str): Start date in YYYYMMDD format (e.g., "20250501" for May 1, 2025) end_date (str, optional): End date in YYYYMMDD format (e.g., "20250531" for May 31, 2025) If not provided, searches for events starting from the start_date area_code (str, optional): Area code to filter results. Valid values: - "1" (Seoul) - "2" (Incheon) - "3" (Daejeon) - "4" (Daegu) - "5" (Gwangju) - "6" (Busan) - "7" (Ulsan) - "8" (Sejong) - "31" (Gyeonggi-do) - "32" (Gangwon-do) - "33" (Chungcheongbuk-do) - "34" (Chungcheongnam-do) - "35" (Gyeongsangbuk-do) - "36" (Gyeongsangnam-do) - "37" (Jeonbuk-do) - "38" (Jeollanam-do) - "39" (Jeju-do) 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: Festivals within the specified date range 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 "start_date": str, # Search start date "end_date": str, # Search end date or "ongoing" "items": [ # List of festival items { "title": str, # Name of the festival "addr1": str, # Primary address "addr2": str, # Secondary address "areacode": str, # Area code "contentid": str, # Unique content ID "contenttypeid": str, # Content type ID "createdtime": str, # Creation timestamp "eventstartdate": str, # Festival start date "eventenddate": str, # Festival end date "firstimage": str, # URL of main image "firstimage2": str, # URL of thumbnail image "mapx": str, # Longitude "mapy": str, # Latitude "mlevel": str, # Map level "tel": str, # Phone number "cat1": str, # Category 1 code "cat2": str, # Category 2 code "cat3": str # Category 3 code } # ... more items ] }

Example: search_festivals_by_date("20250501", "20250531", "1", "en", 1, 20)

find_accommodations

Find accommodations in Korea by area.

This tool searches for accommodation options (hotels, guesthouses, pensions, etc.) in a specific area in Korea. It provides detailed information about lodging facilities including location, contact information, and special certifications.

Args: area_code (str, optional): Area code. Valid values: - "1" (Seoul) - "2" (Incheon) - "3" (Daejeon) - "4" (Daegu) - "5" (Gwangju) - "6" (Busan) - "7" (Ulsan) - "8" (Sejong) - "31" (Gyeonggi-do) - "32" (Gangwon-do) - "33" (Chungcheongbuk-do) - "34" (Chungcheongnam-do) - "35" (Gyeongsangbuk-do) - "36" (Gyeongsangnam-do) - "37" (Jeonbuk-do) - "38" (Jeollanam-do) - "39" (Jeju-do) sigungu_code (str, optional): Sigungu (district) code within the area 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: Accommodation options 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 "items": [ # List of accommodation items { "title": str, # Name of the accommodation "addr1": str, # Primary address "addr2": str, # Secondary address "areacode": str, # Area code "sigungucode": str, # Sigungu code "contentid": str, # Unique content ID "contenttypeid": str, # Content type ID "createdtime": str, # Creation timestamp "firstimage": str, # URL of main image "firstimage2": str, # URL of thumbnail image "mapx": str, # Longitude "mapy": str, # Latitude "mlevel": str, # Map level "tel": str, # Phone number "cat1": str, # Category 1 code "cat2": str, # Category 2 code "cat3": str, # Category 3 code "hanok": str, # Korean traditional house flag "benikia": str, # Benikia hotel flag "goodstay": str # Goodstay accommodation flag } # ... more items ] }

Example: find_accommodations("1", "1", "en", 1, 20)

get_detailed_information

Get detailed information about a specific tourism item in Korea.

This tool retrieves comprehensive details about a specific tourism item by its content ID. It combines common information, introduction details, and additional information to provide a complete picture of the tourism item.

Args: content_id (str): Content ID of the tourism item (obtained from other search functions) content_type (str, optional): Type of content. Valid values: - "Tourist Attraction" - "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)

Returns: dict: Detailed information with structure: { # Common information "title": str, # Name of the item "contentid": str, # Unique content ID "contenttypeid": str, # Content type ID "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 "mapx": str, # Longitude "mapy": str, # Latitude "mlevel": str, # Map level "overview": str, # Detailed description "tel": str, # Phone number "telname": str, # Contact name "homepage": str, # Website URL "firstimage": str, # URL of main image "firstimage2": str, # URL of thumbnail image "createdtime": str, # Creation timestamp "modifiedtime": str, # Last modified timestamp "zipcode": str, # Postal code

    # Introduction details (varies by content type)
    "infocenter": str,      # Information center (for attractions)
    "restdate": str,        # Rest/closing days
    "usetime": str,         # Hours of operation
    "parking": str,         # Parking information
    # ... other type-specific fields

    # Additional information
    "additional_info": [    # List of additional details
        {
            "infoname": str,    # Name of the information
            "infotext": str,    # Detailed text information
            "fldgubun": str,    # Field division code
            "serialnum": str    # Serial number
        }
        # ... more items
    ]
}

Example: get_detailed_information("126508", "Tourist Attraction", "en")

get_tourism_images

Get images for a specific tourism item in Korea.

This tool retrieves all available images for a specific tourism item by its content ID. It provides both original and thumbnail image URLs along with image metadata.

Args: content_id (str): Content ID of the tourism item (obtained from other search functions) 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)

Returns: dict: Images with structure: { "total_count": int, # Total number of matching items "content_id": str, # Content ID this image belongs to "items": [ # List of image items { "contentid": str, # Content ID this image belongs to "imgname": str, # Image name "originimgurl": str, # URL of original image "smallimageurl": str, # URL of small/thumbnail image "serialnum": str, # Serial number "cpyrhtDivCd": str # Copyright division code } # ... more items ] }

Example: get_tourism_images("126508", "en", 1, 10)

get_area_codes

Get area codes for regions in Korea.

This tool retrieves area codes and their corresponding names for Korean regions. It can be used to get top-level area codes (provinces/cities) or sub-area codes (districts/counties) within a specific area.

Args: parent_area_code (str, optional): Parent area code to get sub-areas - If None: Returns top-level area codes (provinces/cities) - If provided: Returns sigungu codes for that area 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: 100, max: 100)

Returns: dict: Area codes with structure: { "total_count": int, # Total number of matching items "parent_area_code": str, # Parent area code used (or null) "items": [ # List of area code items { "code": str, # Area code value "name": str, # Area name "rnum": str # Row number } # ... more items ] }

Available area codes: - "1" (Seoul) - "2" (Incheon) - "3" (Daejeon) - "4" (Daegu) - "5" (Gwangju) - "6" (Busan) - "7" (Ulsan) - "8" (Sejong) - "31" (Gyeonggi-do) - "32" (Gangwon-do) - "33" (Chungcheongbuk-do) - "34" (Chungcheongnam-do) - "35" (Gyeongsangbuk-do) - "36" (Gyeongsangnam-do) - "37" (Jeonbuk-do) - "38" (Jeollanam-do) - "39" (Jeju-do)

Example: get_area_codes(None, "en", 1, 50) # Get top-level areas get_area_codes("1", "en", 1, 50) # Get districts in Seoul

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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