Skip to main content
Glama
kimju1416

naver-land-mcp

by kimju1416

naver-land-mcp

네이버 부동산 데이터를 활용해 전국 아파트 매물·시세·실거래가를 조회하는 MCP(Model Context Protocol) 서버. Claude Desktop / Claude Code 등 MCP 클라이언트에서 자연어로 부동산 정보를 검색할 수 있습니다.

An MCP server for searching Korean apartment listings, market prices, and recent transactions via Naver Real Estate.


⚠️ 사전 고지

  • 본 서버는 네이버 부동산의 비공식 내부 API를 사용합니다. 네이버가 공식 제공·보장하는 인터페이스가 아니며, 응답 구조·차단 정책이 사전 통보 없이 변경될 수 있습니다.

  • 비공식 API 사용은 네이버 이용약관과 충돌할 가능성이 있으니, 네이버가 차단·중단·시정을 요청할 경우 사용을 중단해주세요.

  • 동일한 사유 또는 기타 사유로 본 저장소 자체도 예고 없이 비공개 전환되거나 삭제될 수 있습니다.

  • 상업적 이용은 이용약관·저작권·부정경쟁방지법 위반 위험이 있어 권장하지 않습니다. 개인 학습·조회 용도로 사용해주세요.

  • API 호출은 요청 간 최소 0.5초 딜레이를 두고 수행합니다 (config.REQUEST_DELAY_SEC). 과도한 호출은 IP 차단의 원인이 되므로 줄이지 마세요.

  • 코드는 MIT 라이선스로 자유롭게 사용할 수 있으나, 사용에 따른 법적·기술적 책임은 사용자 본인에게 있습니다.


Related MCP server: korea-realestate-mcp

🛠 제공 도구 (6개)

도구

설명

search_apartments

동/구/군 + 가격 범위로 매물 검색 (매매/전세/월세)

watch_complexes

관심 단지 매물 + 시세 + 실거래가를 한 번에 조회, 이전 스냅샷 대비 변동 감지

get_complex_info

단지 상세 정보 (세대수, 준공일, 평형, 좌표 등)

get_complex_price_info

단지 평형별 시세(네이버) + 최근 실거래가

resolve_district

지역명 → 네이버 cortarNo 조회

list_districts

전국 시/도 17개 목록


📦 설치

uv 가 설치돼 있어야 합니다.

# uv 가 없다면
curl -LsSf https://astral.sh/uv/install.sh | sh

저장소 클론:

git clone https://github.com/<YOUR_USERNAME>/naver-land-mcp.git
cd naver-land-mcp

의존성은 uv run 이 자동으로 설치하므로 별도 설치 단계가 없습니다.


🔌 MCP 클라이언트 등록

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 또는 %APPDATA%\Claude\claude_desktop_config.json (Windows) 에 추가:

{
  "mcpServers": {
    "naver-land": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/ABSOLUTE/PATH/TO/naver-land-mcp",
        "server.py"
      ]
    }
  }
}

Claude Code (CLI)

claude mcp add-json --scope user naver-land \
  '{"command":"uv","args":["run","--directory","/ABSOLUTE/PATH/TO/naver-land-mcp","server.py"]}'

/ABSOLUTE/PATH/TO/naver-land-mcp 는 클론한 저장소의 절대경로로 바꿔주세요.


💬 사용 예시

MCP 클라이언트에서 자연어로 호출하면 됩니다.

강남구 6억~7.9억 아파트 매매 매물 찾아줘
관평동 매매 매물 정리해줘
래미안강남 단지 정보 알려줘
가천대역두산위브의 평형별 시세와 최근 실거래가 보여줘

📁 프로젝트 구조

naver-land-mcp/
├── server.py        # MCP 서버 엔트리 (FastMCP 도구 6개)
├── naver_land.py    # 네이버 부동산 API 클라이언트
├── filter.py        # 매물 필터링 + 정렬
├── report.py        # 마크다운 리포트 포맷터
├── snapshot.py      # 매물 변동 감지 (신규/삭제/가격변동)
├── config.py        # 설정 (헤더, 가격 기본값, 규제지역 LTV)
├── pyproject.toml
├── docs/            # 상세 문서 (API 레퍼런스, 도구 스펙 등)
└── README.md

📚 문서


📄 라이선스

MIT License. LICENSE 참고.

Available Tools

6 tools
get_complex_infoB

아파트 단지 상세 정보를 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
complex_idNo단지 번호 (complexNo)
complex_nameNo단지명 (예: "래미안강남")

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the tool retrieves information, but does not mention authentication requirements, rate limits, side effects, or that the return format is defined by the output schema. The presence of an output schema mitigates this slightly, but the description offers no behavioral context.

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?

Single sentence, zero wasted words, front-loaded with the core action. Ideal conciseness for a simple retrieval tool.

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

Completeness3/5

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

The description is minimal but adequate for a retrieval tool with a complete output schema and 100% parameter schema coverage. However, it lacks context about querying by either ID or name, and does not summarize the optionality of parameters. Adequate but with clear gaps.

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%, with both parameters documented in the schema. The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

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?

Description uses a specific verb ('조회합니다' meaning 'retrieves') and resource ('아파트 단지 상세 정보' meaning 'detailed information about apartment complex'), clearly distinguishing it from sibling tool get_complex_price_info which focuses on price data.

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 guidance on when to use this tool versus alternatives like get_complex_price_info, nor on how to choose between the two optional parameters (complex_id vs complex_name). The description is purely declarative with no usage direction.

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

get_complex_price_infoC

단지 평형별 시세(네이버) + 최근 실거래가를 조회합니다.

평형별로 매매/전세 시세, 현재 호가 범위, 최근 실거래 내역을 반환합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
complex_idNo단지 번호 (complexNo)
complex_nameNo단지명 (예: "가천대역두산위브")

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must cover behavioral traits. It describes return data but omits side effects, required permissions, error handling, or behavior when both parameters are empty. This leaves significant behavioral gaps.

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

Conciseness4/5

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

The description is two sentences, front-loaded with the main action and detailed in the second sentence. It is concise and efficient, though it could benefit from more structure.

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

Completeness3/5

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

The tool has an output schema and low parameter count (2 optional). The description covers the basic purpose but lacks context on fallback behavior, parameter interaction, and comparison with siblings. It is adequate but incomplete.

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 coverage is 100% with parameter descriptions. The description adds no additional meaning beyond the schema; it does not explain how to choose between complex_id and complex_name or provide usage context. Baseline 3 is appropriate.

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 it retrieves prices by complex unit size and recent transaction prices, specifying data sources (Naver) and types (sale/jeonse, asking range, transaction history). It implicitly differentiates from sibling tools by focusing on price data.

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 explicit guidance on when to use this tool vs alternatives (e.g., get_complex_info). The description does not mention prerequisites, limitations, or preferred scenarios, leaving the agent to infer usage.

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

list_districtsA

전국 시/도 17개 목록을 반환합니다.

더 구체적인 지역(구/동)은 search_apartments의 district 파라미터에 직접 입력하면 네이버 검색 API로 자동 조회됩니다. 예: "관평동", "강남구", "성남시 분당구"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It clearly states the tool is a read-only query that returns a list. While it doesn't disclose data source or caching, the behavior is simple and transparent for a list tool.

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 a two-sentence structure: first sentence states the core purpose, second provides usage guidance and alternatives. No unnecessary words or repetition.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, returns a fixed list), the description completely covers its purpose and referral to sibling tool search_apartments for more detail. The presence of an output schema further reduces the need for describing return structure.

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

Parameters4/5

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

The tool has zero parameters, so baseline is 4. The description adds value by explaining what the list contains (17 cities/provinces), which goes beyond the empty schema.

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 returns a list of 17 nationwide cities/provinces (전국 시/도 17개 목록). It provides a specific verb and resource, distinguishing it from siblings like search_apartments which handle more specific districts.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool (for top-level districts) and when to use an alternative: for more specific areas like 구/동, the agent should directly use the district parameter of search_apartments. This provides clear contextual guidance.

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

resolve_districtB

지역명으로 네이버 cortarNo를 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes검색할 지역명 ("관평동", "강남구", "대전 유성구" 등)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description only states basic purpose without disclosing behavioral traits such as whether it returns a single code or multiple, idempotency, or authorization requirements.

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?

Very brief single sentence. While concise, it lacks structure like sections or examples. Could be improved without bloat.

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

Completeness3/5

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

Input schema and output schema likely cover return info, but description fails to contextualize the tool among siblings (e.g., 'Use this to get a district code before calling get_complex_info'). Adequate but not complete.

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 coverage is 100% with a clear parameter description. The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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?

Description clearly states verb ('조회합니다' = looks up) and resource ('네이버 cortarNo') with input ('지역명'). Distinct from siblings like list_districts or search_apartments.

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 guidance on when to use this tool versus siblings like list_districts. Does not indicate that this is a preliminary step to get a district code.

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

search_apartmentsA

지역 + 가격 범위로 아파트 매물을 검색합니다. 전국 + 매매/전세/월세 모두 지원.

지역 지정 방식 (네이버 부동산 기준 동적 조회):

  • 동 단위: "관평동", "개포동", "반포동"

  • 구/군 단위: "강남구", "유성구", "성남시 분당구"

  • 시/도 단위(예: "서울시")는 범위 과대로 거부됨

ParametersJSON Schema
NameRequiredDescriptionDefault
districtYes조회할 지역명 (동/구/군). 예: "관평동", "강남구", "성남시 분당구"
price_maxNo최대 가격 (만원)
price_minNo최소 가격 (만원). 매매=매매가, 전세=보증금, 월세=보증금 기준
trade_typeNo거래 유형. A1 = 매매 (기본) B1 = 전세 B2 = 월세 (응답에 rentPrice 포함)A1

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. It discloses that city-level queries are rejected due to range, but lacks details on authentication, rate limits, error handling, or result limits.

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

Conciseness4/5

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

The description is concise with two short paragraphs, each serving a purpose: stating the function and explaining region format. Could be slightly more structured, but no wasted words.

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

Completeness3/5

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

Covers region and price range well, but lacks info on pagination, ordering, or result limits. Output schema exists, which helps, but completeness is adequate but not full for a search tool.

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

Parameters4/5

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

Schema coverage is 100% with good descriptions. The description adds value by explaining the region specification method (dong/gu/gun levels) and the rejection of city-level, which is not in the schema.

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 it searches apartment listings by region and price range, supporting all trade types. It specifies the region format (dong/gu/gun) and distinguishes from sibling tools like get_complex_info by focusing on search.

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

Usage Guidelines3/5

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

The description implicitly tells when to use (search by region and price) but does not explicitly mention when not to use or alternatives like resolve_district for ambiguous regions. Usage is implied but lacks direct guidance.

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

watch_complexesA

관심 단지들의 매물 + 시세 + 실거래가를 한번에 조회합니다.

각 단지별로 현재 매물, 평형별 시세, 최근 실거래가를 반환합니다. 이전 스냅샷과 비교하여 신규/삭제/가격변동 매물도 함께 반환합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
price_maxNo최대 가격 (만원). 기본 999999 (무제한)
price_minNo최소 가격 (만원). 기본 0 (무제한)
complex_namesYes관심 단지명 목록 (예: ["가천대역두산위브", "광교해모로"])

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, description should cover behavioral traits. It mentions comparison to previous snapshot, which is useful. However, it does not explain prerequisites (how 'interest complexes' are defined) or potential limitations like rate limits or required authentication.

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?

Two sentences, front-loaded with main purpose, and no extraneous information. Each sentence contributes essential information about outputs and comparison feature.

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

Completeness4/5

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

Output schema exists, so return values are covered. Description addresses listings, prices, transactions, and diff. However, it omits details about the snapshot mechanism (how it is created or maintained), which is relevant for full usage completeness.

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 baseline is 3. The description adds no additional meaning beyond the schema; it does not elaborate on parameter usage or formats.

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?

Description clearly states the tool queries listings, market prices, and actual transaction prices for interest complexes, distinguishing it from siblings like get_complex_price_info or get_complex_info. It also mentions returning diff data compared to previous snapshot, adding unique value.

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

Usage Guidelines4/5

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

Description explains what the tool returns but does not explicitly state when to use it versus alternatives. It implies comprehensive coverage but lacks exclusionary guidance or context for when not to use.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.1.0
    • First observedget_complex_info
    • First observedget_complex_price_info
    • First observedlist_districts
    • First observedresolve_district
    • First observedsearch_apartments
    • First observedwatch_complexes

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

Tools target distinct aspects: district management, complex info, price info, search, and watchlist. Some overlap between get_complex_info and get_complex_price_info but descriptions clarify. watch_complexes aggregates multiple operations but is clearly a bulk watchlist feature.

Naming Consistency5/5

All tool names follow consistent verb_noun pattern with underscores, e.g., get_complex_info, list_districts. No naming inconsistencies.

Tool Count5/5

6 tools is appropriate for a real estate information server, covering lookup, search, and watchlist without being too many.

Completeness4/5

Covers listing districts, converting district names, searching apartments, getting complex details and prices, and a watchlist. Minor gap: no tool to manage the watchlist (add/remove) but viewing is covered.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables querying and searching for real estate listings, complexes, prices, and school information from Naver Land (Korean real estate platform) through a set of MCP tools. Supports region hierarchy navigation, coordinate-based search, and various trade types like sale, jeonse, and monthly rent.
    9
    1
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to query and analyze Korean apartment real estate transaction prices (sales and rentals) using natural language, providing tools for price trends, regional comparisons, and rent ratios.
    7
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying Korean apartment sales and rental transaction data from the public data portal through natural language, with tools for searching transactions and computing price statistics.
    51
    MIT

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/kimju1416/naver-land-mcp'

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