Skip to main content
Glama
leadbrain

korean-data-mcp

search_naver_places

Search Naver Map places by keyword and location to find cafes, restaurants, and local businesses. Supports up to 100 results for real-time data retrieval.

Instructions

Search Naver Map (네이버 지도) places by keyword.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keywordYesPlace type or name, e.g. '카페', '맛집', 'cafe'
locationNoLocation context, e.g. '홍대', '강남역', 'Itaewon'
max_placesNoMaximum number of places to return (default 20, max 100)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The `search_naver_places` async function is the MCP tool handler. It accepts keyword, location (optional), and max_places parameters, constructs a search query, and delegates to the Apify actor 'naver-place-search' via the _run_actor helper. The @mcp.tool() decorator registers it as a FastMCP tool.
    @mcp.tool()
    async def search_naver_places(
        keyword: str,
        location: str = "",
        max_places: int = 20,
    ) -> list[dict]:
        """
        Search Naver Map (네이버 지도) places by keyword.
    
        Args:
            keyword: Place type or name, e.g. '카페', '맛집', 'cafe'
            location: Location context, e.g. '홍대', '강남역', 'Itaewon'
            max_places: Maximum number of places to return (default 20, max 100)
    
        Returns:
            List of place objects with name, category, address, rating, reviewCount, url fields.
        """
        max_places = min(max_places, 100)
        search_query = f"{keyword} {location}".strip()
        return await _run_actor(
            f"{APIFY_ACCOUNT}/naver-place-search",
            {"query": search_query, "maxPlaces": max_places},
        )
  • The function signature serves as the input schema: 'keyword' (str, required), 'location' (str, default ''), 'max_places' (int, default 20, max 100). The return type is list[dict], with documented fields: name, category, address, rating, reviewCount, url.
    @mcp.tool()
    async def search_naver_places(
        keyword: str,
        location: str = "",
        max_places: int = 20,
    ) -> list[dict]:
        """
        Search Naver Map (네이버 지도) places by keyword.
    
        Args:
            keyword: Place type or name, e.g. '카페', '맛집', 'cafe'
            location: Location context, e.g. '홍대', '강남역', 'Itaewon'
            max_places: Maximum number of places to return (default 20, max 100)
    
        Returns:
            List of place objects with name, category, address, rating, reviewCount, url fields.
        """
        max_places = min(max_places, 100)
        search_query = f"{keyword} {location}".strip()
        return await _run_actor(
            f"{APIFY_ACCOUNT}/naver-place-search",
            {"query": search_query, "maxPlaces": max_places},
        )
  • The tool is registered via the `@mcp.tool()` decorator on line 203, which binds the Python function to the MCP FastMCP server instance named 'korean-data-mcp'.
    @mcp.tool()
  • The `_run_actor` helper function is called by search_naver_places. It sends the input data to the Apify actor URL (using APIFY_ACCOUNT/naver-place-search) via an HTTP POST request and returns the dataset items.
    async def _run_actor(actor_id: str, input_data: dict, timeout_secs: int = 60) -> list[dict]:
        """Run an Apify actor synchronously and return dataset items."""
        token = _get_token()
        url = f"{APIFY_BASE}/acts/{actor_id}/run-sync-get-dataset-items"
        params = {"token": token}
    
        async with httpx.AsyncClient(timeout=timeout_secs + 10) as client:
            resp = await client.post(url, json=input_data, params=params)
            resp.raise_for_status()
            return resp.json()
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, but it only states 'Search ... by keyword.' It does not mention pagination, result limits beyond the max_places parameter, authentication requirements, regional restrictions, or the format of returned data. This is insufficient for a search tool that may have specific behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is short and front-loaded, but it omits important details like output format or usage context. While concise, it sacrifices informativeness, making it mediocre for a tool with no annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists (not shown), the description does not hint at what the tool returns (e.g., a list of places with details). Combined with no annotations and minimal behavioral info, the description is incomplete for the tool's complexity. A more complete description would mention that it returns search results and possibly the structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with clear descriptions for each parameter (e.g., examples for keyword and location, and limits for max_places). The tool description itself adds no additional parameter semantics beyond what the schema provides. Baseline score of 3 is appropriate as the schema already documents the parameters well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches Naver Map places by keyword, using a specific verb 'Search' and resource 'Naver Map (네이버 지도) places'. Among sibling tools, it is distinct as the only one focused on map place search, while others target music, fashion, reviews, or second-hand goods.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. For example, it does not clarify that this tool is for Korean map data or how it differs from other search tools like search_bunjang or search_naver_news.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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/leadbrain/korean-data-mcp'

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