danggn-mcp
by iamkw0n
README.md
<p align="center">
<img src="https://capsule-render.vercel.app/api?type=waving&color=0:ff6f0f,100:ff8a3d&height=120§ion=header&text=danggn-mcp&fontSize=42&fontColor=ffffff&animation=fadeIn" alt="danggn-mcp" />
</p>
<p align="center">
<b>당근마켓 매물 검색 · 상세 · 시세 요약</b><br/>
<sub>Dynamically search Daangn listings in your MCP clients</sub>
</p>
<p align="center">
<a href="https://github.com/iamkw0n/danggn-mcp/stargazers"><img src="https://img.shields.io/github/stars/iamkw0n/danggn-mcp?style=for-the-badge&logo=github&color=ff6f0f" alt="Stars"/></a>
<a href="https://github.com/iamkw0n/danggn-mcp/network/members"><img src="https://img.shields.io/github/forks/iamkw0n/danggn-mcp?style=for-the-badge&logo=github&color=ff6f0f" alt="Forks"/></a>
<a href="https://github.com/iamkw0n/danggn-mcp/issues"><img src="https://img.shields.io/github/issues/iamkw0n/danggn-mcp?style=for-the-badge&logo=github&color=ff6f0f" alt="Issues"/></a>
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-ff6f0f?style=for-the-badge" alt="License"/></a>
</p>
<p align="center">
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-stdio-ff8a3d?style=flat-square&logo=anthropic" alt="MCP"/></a>
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node"/></a>
<a href="https://www.typescriptlang.org"><img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript"/></a>
<a href="https://www.daangn.com"><img src="https://img.shields.io/badge/source-www.daangn.com-ff6f0f?style=flat-square" alt="Daangn"/></a>
</p>
<p align="center">
<a href="#-quick-start">Quick Start</a>
·
<a href="#-tools">Tools</a>
·
<a href="#-client-setup">Client Setup</a>
·
<a href="#-examples">Examples</a>
·
<a href="#-faq">FAQ</a>
·
<a href="https://github.com/iamkw0n/danggn-mcp/issues/new">Report Bug</a>
</p>
---
<details>
<summary><b>📑 Table of contents (Click to show)</b></summary>
- [Important Notices](#-important-notices)
- [Features](#-features)
- [Quick Start](#-quick-start)
- [Tools](#-tools)
- [One-Click Install Prompt](#-one-click-install-prompt)
- [Client Setup](#-client-setup)
- [Cursor](#cursor)
- [Claude Code](#claude-code)
- [Claude Desktop](#claude-desktop)
- [OpenAI Codex](#openai-codex)
- [ChatGPT](#chatgpt)
- [Examples](#-examples)
- [How It Works](#-how-it-works)
- [FAQ](#-faq)
- [License](#-license)
</details>
---
## ⚠️ Important Notices
> [!IMPORTANT]
> 이 프로젝트는 **당근마켓 공식 Open API가 아닌** 공개 웹 페이지를 파싱합니다. 사이트 구조가 바뀌면 일부 기능이 깨질 수 있습니다. **개인·비상업적 용도**를 권장합니다.
> [!WARNING]
> 과도한 요청은 당근마켓에서 차단될 수 있습니다. 차단이 잦으면 `ZYTE_API_KEY` 환경 변수로 Zyte 프록시를 켤 수 있습니다.
---
## ✨ Features
| 기능 | 설명 |
| :--- | :--- |
| 🔍 **매물 검색** | 키워드·동네 슬러그 기반 당근마켓 검색 |
| 📦 **상세 조회** | 게시글 상세 · 판매자 · 매너온도 조회 |
| 📉 **시세 확인** | 검색 결과 기반 가격 범위 · 요약 |
| 📍 **동네 슬러그** | 인근 동네 목록 · 슬러그 유효성 확인 |
| 🔌 **stdio MCP** | Cursor, Claude, Codex 등 로컬 클라이언트 지원 |
| 📦 **Zero setup** | `npm install` 후 `npm start`로 즉시 실행 |
---
## 🚀 Quick Start
```bash
git clone https://github.com/iamkw0n/danggn-mcp.git
cd danggn-mcp
npm install
npm start
```
공통 실행 명령:
```bash
node dist/index.js
```
---
## 🛠 Tools
| Tool | Description |
| :--- | :--- |
| `search_listings` | 키워드 매물 검색 |
| `get_listing_detail` | 게시글 상세 · 판매 정보 |
| `summarize_search_market` | 검색 결과 기반 시세 요약 |
| `list_nearby_regions` | 인근 동네 슬러그 목록 |
| `validate_region_slug` | 동네 슬러그 유효성 확인 |
| `proxy_status` | 프록시 상태 확인 |
---
## 💬 One-Click Install Prompt
Cursor / Claude Code / Codex에서 아래 프롬프트를 붙여넣으면 MCP 설치를 요청할 수 있습니다.
```
Github에서 iamkw0n/danggn-mcp 를 가져와서 MCP 서버 설치를 해줘.
```
---
## 🔧 Client Setup
| Client | Config file | stdio |
| :--- | :--- | :---: |
| Cursor | `.cursor/mcp.json` | ✅ |
| Claude Code | `.mcp.json` | ✅ |
| Claude Desktop | `claude_desktop_config.json` | ✅ |
| Codex | `.codex/config.toml` | ✅ |
| ChatGPT | Connector URL | ❌ |
### Cursor
프로젝트 루트에 `.cursor/mcp.json`:
```json
{
"mcpServers": {
"danggn-mcp": {
"command": "node",
"args": ["./dist/index.js"],
"cwd": "${workspaceFolder}"
}
}
}
```
### Claude Code
프로젝트 루트에 `.mcp.json`:
```json
{
"mcpServers": {
"danggn-mcp": {
"type": "stdio",
"command": "node",
"args": ["./dist/index.js"]
}
}
}
```
CLI:
```bash
claude mcp add danggn-mcp -s project -- node ./dist/index.js
```
### Claude Desktop
macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"danggn-mcp": {
"command": "node",
"args": ["/absolute/path/to/danggn-mcp/dist/index.js"],
"cwd": "/absolute/path/to/danggn-mcp"
}
}
}
```
> [!WARNING]
> Claude Desktop은 `${workspaceFolder}`를 지원하지 않습니다. **절대 경로**를 사용하세요.
### OpenAI Codex
프로젝트 `.codex/config.toml` 또는 `~/.codex/config.toml`:
```toml
[mcp_servers.danggn-mcp]
command = "node"
args = ["./dist/index.js"]
cwd = "/absolute/path/to/danggn-mcp"
enabled = true
```
CLI:
```bash
codex mcp add danggn-mcp -- node ./dist/index.js
```
연결 확인: Codex 세션에서 `/mcp`
### ChatGPT
> [!IMPORTANT]
> ChatGPT 커넥터는 **HTTPS MCP 엔드포인트**만 지원합니다. 이 레포는 로컬 **stdio** 서버이므로 ChatGPT에 직접 연결할 수 없습니다.
---
## 💡 Examples
```
갤럭시북 당근마켓 검색해줘
```
```
아이폰 15 강남구 근처 당근 매물 찾아줘
```
```
iamkw0n 게시글 상세 보여줘
```
```
맥북 당근 시세 요약해줘
```
```
역삼동 동네 슬러그 찾아줘
```
```
강남구-386 슬러그 유효한지 확인해줘
```
```
프록시 상태 확인해줘
```
---
## ⚙️ How It Works
```mermaid
flowchart LR
A[MCP Client] -->|stdio| B[danggn-mcp]
B --> C[www.daangn.com/kr/buy-sell]
B --> D[fleamarketArticles JSON]
B --> E[JSON-LD Product/ItemList]
B --> F[api.zyte.com/v1/extract]
```
| Endpoint | Usage |
| :--- | :--- |
| `www.daangn.com/kr/buy-sell` | 매물 검색 |
| `www.daangn.com/kr/buy-sell/{articleId}` | 게시글 상세 |
| `fleamarketArticles` | 검색 결과 임베디드 JSON |
| `api.zyte.com/v1/extract` | 차단 대응용 프록시 |
### 동네 슬러그 형식
검색 범위를 좁히려면 `regionSlug`에 `동네이름-숫자ID` 형식을 사용하세요.
예: `강남구-386`, `역삼동-6035`
`list_nearby_regions`로 기본 페이지에 노출되는 인근 동네를 확인할 수 있습니다.
---
## 📄 License
[MIT](./LICENSE) © iamkw0n
<p align="center">
<sub>Built with ❤️ by <a href="https://github.com/iamkw0n">iamkw0n</a> · 당근마켓과 공식적으로 관련이 없는 비공식 프로젝트입니다</sub>
</p>
TDQS
A3.6/5.0
Scored across 6 tools
Disambiguation5/5
Each tool has a distinct purpose: searching, retrieving details, summarizing market data, and managing region slugs, with no overlap between them.
Naming Consistency4/5
Most tools follow a verb_noun pattern (search, get, list, validate, summarize), but 'proxy_status' is a noun phrase, slightly breaking the convention.
Tool Count5/5
Six tools is well-scoped for a marketplace search and analysis server, covering core operations without unnecessary bloat.
Completeness4/5
The server covers search, detail retrieval, market summarization, and region utilities, but lacks listing creation or advanced filtering options, which are minor gaps for a read-only market analysis tool.
Maintenance
ActivityInactive
ResponsivenessNo issues