Skip to main content
Glama
isnow890

Naver Search MCP Server

search_local

Find local businesses and services in a specific area by querying Naver’s database, with options to sort results by accuracy or review count and control the number of displayed outcomes.

Instructions

Perform a search on Naver Local. (네이버 지역 검색)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
displayNoNumber of results to display (default: 1, max: 5)
queryYesSearch query
sortNoSort method (random: accuracy, comment: review count)
startNoStart position of search results (default: 1, max: 1)

Implementation Reference

  • src/index.ts:237-250 (registration)
    Registration of the 'search_local' MCP tool, including description, input schema, and handler that delegates to searchToolHandlers and formats the response as MCP content.
    server.registerTool(
      "search_local",
      {
        description:
          "📍 Search for local businesses, restaurants, and places in Korea. Find location information, reviews, contact details, and business hours for Korean establishments. For current business hours or today's availability, use get_current_korean_time first. (네이버 지역 검색 - 지역 업체와 장소 정보, 현재 영업시간이나 오늘 이용 가능 여부를 확인할 때는 먼저 get_current_korean_time으로 현재 시간을 확인하세요)",
        inputSchema: NaverLocalSearchParamsSchema.shape,
      },
      async (args) => {
        const result = await searchToolHandlers.search_local(args);
        return {
          content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
        };
      }
    );
  • Specific handler function for local search that invokes the NaverSearchClient's searchLocal method.
    /**
     * 지역 검색 핸들러
     */
    export async function handleLocalSearch(params: NaverLocalSearchParams) {
      return client.searchLocal(params);
    }
  • Zod input schema definition for the search_local tool parameters, extending the base SearchArgsSchema with local-specific fields.
    // 지역 검색 파라미터
    export const NaverLocalSearchParamsSchema = SearchArgsSchema.extend({
      sort: z
        .enum(["random", "comment"])
        .optional()
        .describe("정렬 방식 (random: 정확도순, comment: 리뷰 많은순)"),
      display: z.number().optional().describe("한 번에 가져올 결과 수 (최대 5)"),
      start: z.number().optional().describe("검색 시작 위치 (최대 1)"),
    });
    export type NaverLocalSearchParams = z.infer<
      typeof NaverLocalSearchParamsSchema
    >;
  • Core helper function in NaverSearchClient that performs the actual HTTP GET request to the Naver local search API endpoint.
    /**
     * 지역 검색 메서드
     */
    async searchLocal(
      params: NaverLocalSearchParams
    ): Promise<NaverLocalSearchResponse> {
      return this.get(`${this.searchBaseUrl}/local`, params);
    }
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action ('Perform a search') without mentioning any behavioral traits such as rate limits, authentication needs, error handling, or what the output looks like (e.g., format, pagination). For a search tool with no annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is extremely concise and front-loaded, consisting of a single clear sentence with a helpful parenthetical translation. There is no wasted text, and it efficiently communicates the core purpose without unnecessary details, making it easy to parse quickly.

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?

Given the complexity of a search tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral aspects (e.g., how results are returned, error cases), usage context compared to siblings, and any prerequisites or limitations. This makes it inadequate for an agent to fully understand how to invoke the tool effectively.

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?

Schema description coverage is 100%, so the schema already documents all parameters (query, display, sort, start) with descriptions and constraints. The description adds no additional parameter semantics beyond what's in the schema, such as examples or usage tips. This meets the baseline of 3, as the schema handles the heavy lifting, but the description doesn't compensate or enhance understanding.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Perform a search on Naver Local' with the Korean translation for clarity. It specifies the verb 'search' and the resource 'Naver Local', making it understandable. However, it doesn't explicitly differentiate from sibling tools like search_blog or search_news, which also perform searches on Naver but on different platforms, leaving some ambiguity about when to choose this specific tool.

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?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools like search_blog, search_news, and search_shop, there is no indication of what makes Naver Local unique or when it should be preferred over other search tools. This lack of context makes it difficult for an agent to select the appropriate tool without additional information.

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

Related 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/isnow890/naver-search-mcp'

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