Skip to main content
Glama
isnow890

Naver Search MCP Server

search_book

Search and retrieve book results from Naver's database. Specify queries, sort by relevance or date, and control display count and start position.

Instructions

Perform a search on Naver Book. (네이버 책 검색)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
displayNoNumber of results to display (default: 10)
queryYesSearch query
sortNoSort method (sim: similarity, date: date)
startNoStart position of search results (default: 1)

Implementation Reference

  • Core handler function that executes the book search using NaverSearchClient.search('book', params). This is the exact implementation of the tool logic.
    /**
     * 도서 검색 핸들러
     */
    export async function handleBookSearch(params: SearchArgs) {
      return client.search("book", params);
    }
  • src/index.ts:192-205 (registration)
    MCP server registration of the 'search_book' tool, specifying name, description, input schema, and handler that delegates to searchToolHandlers.search_book.
    server.registerTool(
      "search_book",
      {
        description:
          "📚 Search for books, publications, and literary content. Find book reviews, author information, publication details, and reading recommendations in Korean literature and translated works. For new releases or current bestsellers, use get_current_korean_time first. (네이버 책 검색 - 도서 정보와 서평, 신간도서나 현재 베스트셀러를 찾을 때는 먼저 get_current_korean_time으로 현재 시간을 확인하세요)",
        inputSchema: SearchArgsSchema.shape,
      },
      async (args) => {
        const result = await searchToolHandlers.search_book(args);
        return {
          content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
        };
      }
    );
  • Zod schema defining input parameters for the search_book tool (query, display, start, sort).
    export const SearchArgsSchema = z.object({
      query: z.string().describe("검색어"),
      display: z.number().optional().describe("한 번에 가져올 결과 수 (기본 10)"),
      start: z.number().optional().describe("검색 시작 위치 (기본 1)"),
      sort: z
        .enum(["sim", "date"])
        .optional()
        .describe("정렬 방식 (sim: 유사도, date: 날짜순)"),
    });
  • Wrapper function in searchToolHandlers object that parses args with SearchArgsSchema and delegates to handleBookSearch.
    search_book: (args) => {
      console.error("search_book called with args:", JSON.stringify(args, null, 2));
      return handleBookSearch(SearchArgsSchema.parse(args));
    },
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 states the tool performs a search but doesn't describe what the search returns (e.g., book titles, authors, metadata), whether it's paginated, rate limits, authentication needs, or error handling. This leaves significant gaps in understanding the tool's behavior beyond the basic action.

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 with just one sentence and a parenthetical translation, making it front-loaded and efficient. Every word serves a purpose: it defines the action and resource clearly without any fluff or redundancy.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the search returns (e.g., book results format), behavioral aspects like pagination or errors, or how it differs from sibling tools. For a search tool with no structured output information, more context is needed to be fully helpful.

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?

The input schema has 100% description coverage, providing details for all 4 parameters (query, display, sort, start). The description adds no additional parameter semantics beyond what's in the schema. According to the rules, with high schema coverage (>80%), the baseline score is 3 when no param info is in the description, which applies here.

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 Book.' It specifies the action (search) and resource (Naver Book), and the Korean translation adds clarity. However, it doesn't explicitly differentiate from sibling tools like search_academic or search_news, which also perform searches on different Naver services.

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. It doesn't mention sibling tools like search_academic or search_news, nor does it specify scenarios where book searches are preferred over other search types. The only implied usage is for searching books, but no explicit context or exclusions are provided.

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