Naver Real Estate MCP
Enables automated collection of apartment listing data from Naver Real Estate using Playwright browser automation with passive network response capture. Provides MCP tools to search complexes, resolve property identifiers, and extract normalized listing information including duplicate properties.
Ask AI about Naver Real Estate MCP
Powered by Claude ยท Grounded in docs
I know everything about Naver Real Estate MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
naverestate-mcp
๋ค์ด๋ฒ ๋ถ๋์ฐ ์์ง์ ์ํ Playwright + MCP ํ๋ก์ ํธ.
๋ชฉํ
- ๋ค์ด๋ฒ ๋ถ๋์ฐ ํ์ด์ง๋ฅผ ์ค์ ๋ธ๋ผ์ฐ์ ๋ก ์ด๊ณ public ํ๋ฆ์ผ๋ก ์ ๊ทผ
- UI ์ํธ์์ฉ(ํํฐ, ์คํฌ๋กค, ์ค๋ณต๋งค๋ฌผ ํผ์น๊ธฐ)์ Playwright๋ก ์ํ
- ๊ทธ ๊ณผ์ ์์ ๋ฐ์ํ ๋ด๋ถ ๋คํธ์ํฌ ์๋ต์ passive capture
- ์์ง ๊ฒฐ๊ณผ๋ฅผ ์ ๊ทํํ๊ณ MCP tool๋ก ๋ ธ์ถ
์ค๊ณ ์์น
- ๊ธฐ๋ณธ ๋ชจ๋๋ passive network capture
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์ ๋ก ๋ฐ์์ํจ ์์ฒญ/์๋ต๋ง ์บก์ฒ
- ๋๊ตฌ๊ฐ ๋ด๋ถ API๋ฅผ ์๋ก ์ง์ ๋๋ฆฌ๋ active harvester๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋์ง ์์
- ๋ธ๋ผ์ฐ์ ์กฐ์๊ณผ ๋๋ฉ์ธ ๋ก์ง์ ๋ถ๋ฆฌ
jipxl์ ํ์ฅํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ ๋ฒ๋ฆฌ๊ณ , ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ /์ ๊ทํ ๋ก์ง๋ง ์ ๋ณ ์ด๊ด- ๋ก๊ทธ์ธ ์๋ public ํ๋ฆ์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ค
- ์บ์๋ ์ํํธ ์ด๋ฆ ์ ์ฒด๋ฅผ key๋ก ์ฌ์ฉํ๊ณ , ๊ตฌ/๋์ metadata๋ก๋ง ์ ์ฅํ๋ค
- ๋ค์ด๋ฒ ๋ถ๋์ฐ์ด ์ Playwright ์ปจํ ์คํธ๋ฅผ ์ฐจ๋จํ ์ ์์ผ๋ฏ๋ก, ํ์ํ๋ฉด ๊ธฐ์กด Chrome์ CDP attach ํ๋ ๊ฒฝ๋ก๋ฅผ ์ง์ํ๋ค
ํจํค์ง ๊ตฌ์กฐ
packages/collector-core- ํ์ , ์ ๊ทํ, ๊ทธ๋ฃนํ, ๊ฒฐ๊ณผ ๋ชจ๋ธ
packages/playwright-driver- persistent context, response capture registry, collector driver
packages/mcp-server- MCP tool spec, server entry skeleton
ํ์ฌ ์ํ
ํ์ฌ ๊ธฐ๋ณธ ์์ง์ ์ค์ ๋์ ํ์ธ ์๋ฃ:
- TypeScript workspace ๊ตฌ์กฐ
- collector-core ํ์ /๊ทธ๋ฃนํ/์ ๊ทํ
- playwright-driver ์์ง ๋์ ํ์ธ
- mcp-server tool ํธ์ถ ๊ฐ๋ฅ
- ๊ณ ๋๊ทธ๋ผ์์(
complexNo=113907) ๊ธฐ์ค ๊ฒ์ฆ ์๋ฃ- ๋ํ๋งค๋ฌผ ์์ง ์ฑ๊ณต
- ์ค๋ณต๋งค๋ฌผ ์์ง ์ฑ๊ณต
- JSON ์ ์ฅ ์ฑ๊ณต
์ต๊ทผ ๋ฐ์ ์ฌํญ
- ์ Playwright Chrome์์ ๋ค์ด๋ฒ ๋ถ๋์ฐ์ด
404๋ก ํ๊ธฐ๋ ๋ฌธ์ ์์ --disable-blink-features=AutomationControllednavigator.webdriver = falsenavigator.languages๋ณด์
- overview ์๋ต ํจํด ์์
/api/complexes/overview/{complexNo}์บก์ฒ ์ง์
๋์ผ๋งค๋ฌผ ๋ฌถ๊ธฐ์ฒดํฌ ๋ก์ง ์์ - checkbox ์ง์ ํด๋ฆญ ๋์ label click / force setChecked fallback
- ์ค๋ณต๋งค๋ฌผ ์๋ต ํ์ฑ ์์
/api/articles?representativeArticleNo=...์๋ต์ array payload ์ง์
ํ์ฌ ๊ธฐ๋ณธ ์์ง ์ ์
collectDuplicates๋ ์ต์ ์ผ๋ก ๋๋คtrue: ์ค๋ณต๋งค๋ฌผ๊น์ง ์์งfalse: ๋ํ๋งค๋ฌผ ๋ชฉ๋ก๊น์ง๋ง ์์ง
- ๊ฒ์/์์ง ๊ธฐ๋ณธ ์ ๋ ฌ์ ํญ์ ์ต์ ์(
dateDesc) ์ผ๋ก ๊ณ ์ ํ๋ค - ์บ์๋ ์ํํธ ์ด๋ฆ ์ ์ฒด ๊ธฐ์ค์ผ๋ก ์ ์ฅํ๋ค
์คํ ๋ฐฉ๋ฒ
1) ๊ธฐ๋ณธ ์คํ (๊ถ์ฅ ์์์ )
์ Playwright persistent Chrome ํ๋กํ๋ก ์คํํ๋ค.
cd /Users/hyunsu/.openclaw/workspace/naverestate-mcp
npm run build
node packages/mcp-server/dist/index.js
ํ์ฌ๋ anti-detection ๋ณด์ ์ด ๋ค์ด๊ฐ ์์ด์, ๊ธฐ๋ณธ persistent ์คํ๋ง์ผ๋ก๋ ๋ค์ด๋ฒ ๋ถ๋์ฐ ์์ธ ์ง์ ์ด ๊ฐ๋ฅํ๋ค.
2) CDP attach ๋ชจ๋
ํ๊ฒฝ๋ณ์๋ก ๊ธฐ์กด Chrome ๋๋ฒ๊น ์๋ํฌ์ธํธ๋ฅผ ๋๊ธฐ๋ฉด, ์ Playwright ํ๋กํ ๋์ ๊ธฐ์กด ๋ธ๋ผ์ฐ์ ์ ๋ถ์ ์ ์๋ค.
export NAVER_CDP_ENDPOINT_URL=http://127.0.0.1:9222
node packages/mcp-server/dist/index.js
๊ถ์ฅ ์ฉ๋:
- ์ด๋ฏธ ์ฌ๋์ด ์ด์ด๋ ์ค์ Chrome ์ธ์ ์ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๋
- Playwright ํ๋กํ๊ณผ ์ค์ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ๋์ ์ฐจ์ด๋ฅผ ๋น๊ตํ ๋
MCP ๋๊ตฌ
ํ์ฌ stdio MCP ์๋ฒ์์ ์ ๊ณตํ๋ ๋๊ตฌ๋ ์๋ 4๊ฐ๋ค.
| Tool | ์ค๋ช |
|---|---|
naver_search_complex | ํค์๋๋ก ๋จ์ง ์๋์์ฑ ํ๋ณด ๊ฒ์ |
naver_resolve_complex | ํ๋ณด๋ฅผ complexNo๋ก resolveํ๊ณ cache ์ ์ฅ |
naver_collect_complex | ๋จ์ง ์์ธ์์ ๋ํ๋งค๋ฌผ + ์ค๋ณต๋งค๋ฌผ ์์ง |
naver_get_last_result | ๋ง์ง๋ง ์์ง JSON ๋ค์ ๊ฐ์ ธ์ค๊ธฐ |
ํธ์ถ ์์
Search
{
"name": "naver_search_complex",
"arguments": {
"keyword": "๊ณ ๋๊ทธ๋ผ์์"
}
}
Resolve
{
"name": "naver_resolve_complex",
"arguments": {
"apartmentName": "๊ณ ๋๊ทธ๋ผ์์",
"fullLabel": "๊ณ ๋๋ ๊ณ ๋๊ทธ๋ผ์์"
}
}
Collect
{
"name": "naver_collect_complex",
"arguments": {
"filter": {
"complexNo": "113907",
"tradeTypes": ["A1"]
},
"collectDuplicates": true
}
}
Get last result
{
"name": "naver_get_last_result",
"arguments": {}
}
ํ์ฌ ๊ฒฐ๊ณผ ๋ชจ๋ธ ์์ฝ
์์ง ๊ฒฐ๊ณผ JSON์ ์๋ ํ๋๋ฅผ ํฌํจํ๋ค.
complex: ๋จ์ง ๊ฐ์articlePages: ๋ํ๋งค๋ฌผ ๋ชฉ๋ก ์๋ณธ ์๋ต๋คduplicateResponses: ์ค๋ณต๋งค๋ฌผ ์๋ณธ ์๋ต๋คarticles: ๋ํ๋งค๋ฌผ ์ ๊ทํ ๋ชฉ๋กduplicateGroups:representativeArticleNo๊ธฐ์ค ์ค๋ณต๋งค๋ฌผ ๋ฌถ์listingGroups: ๋ํ๋งค๋ฌผ + duplicates ํฉ์น ์ต์ข ๊ตฌ์กฐ
๊ฒ์ฆ๋ ์ํ
๊ณ ๋๊ทธ๋ผ์์(complexNo=113907) ๊ธฐ์ค ์ต๊ทผ ๊ฒ์ฆ ๊ฒฐ๊ณผ:
- ๋ํ๋งค๋ฌผ
212 - ์ค๋ณต ๋ฌถ์
89 - JSON ์ ์ฅ ์ฑ๊ณต
