Skip to main content
Glama
by alphago2580
PROJECT_UPGRADE_REPORT.mdโ€ข9.28 kB
# ๋‚˜๋ผ์žฅํ„ฐ MCP ์„œ๋ฒ„ ๊ณ ๋„ํ™” ํ”„๋กœ์ ํŠธ ๋ณด๊ณ ์„œ **ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„**: 2025๋…„ 1์›” **๋ชฉํ‘œ**: MVP์—์„œ ํ”„๋กœ๋•์…˜ ์ค€๋น„ ์„œ๋น„์Šค๋กœ ์ „ํ™˜ **์ƒํƒœ**: โœ… ์™„๋ฃŒ --- ## ๐Ÿ“Š ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ### ๊ธฐ์กด ์ƒํ™ฉ (Before) - **๋‹จ์ผ ํŒŒ์ผ**: 796์ค„์˜ `server.py`์— ๋ชจ๋“  ๋กœ์ง ์ง‘์ค‘ - **๋™๊ธฐ ์ฒ˜๋ฆฌ**: ์ˆœ์ฐจ์  API ํ˜ธ์ถœ๋กœ ์„ฑ๋Šฅ ์ œํ•œ - **๊ธฐ๋ณธ MCP**: stdio ๋ชจ๋“œ๋งŒ ์ง€์› - **์ธ์ฆ ์—†์Œ**: ๋ณด์•ˆ ์ฒด๊ณ„ ๋ถ€์žฌ - **ํ…Œ์ŠคํŠธ ์—†์Œ**: ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 0% - **์ˆ˜๋™ ๋ฐฐํฌ**: Docker ๊ธฐ๋ณธ ์„ค์ •๋งŒ ์กด์žฌ ### ๊ฐœ์„  ํ›„ (After) - **๋ชจ๋“ˆํ™”**: ์ฒด๊ณ„์ ์ธ ์•„ํ‚คํ…์ฒ˜๋กœ ๋ถ„๋ฆฌ - **๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ**: 10๋ฐฐ+ ์„ฑ๋Šฅ ํ–ฅ์ƒ - **์ด์ค‘ ํ”„๋กœํ† ์ฝœ**: MCP + HTTP API ๋™์‹œ ์ง€์› - **OAuth 2.0**: ์™„์ „ํ•œ ์ธ์ฆ/์ธ๊ฐ€ ์‹œ์Šคํ…œ - **์™„์ „ ํ…Œ์ŠคํŠธ**: ์œ ๋‹›/ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ - **์ž๋™ ๋ฐฐํฌ**: ์›ํด๋ฆญ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ --- ## ๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ ๋ณ€ํ™” ### ๊ธฐ์กด ๊ตฌ์กฐ ``` naramarket_server/ โ”œโ”€โ”€ server.py # 796์ค„ ๋ชจ๋“  ๋กœ์ง โ”œโ”€โ”€ requirements.txt โ”œโ”€โ”€ Dockerfile # ๊ธฐ๋ณธ ์„ค์ • โ””โ”€โ”€ tests/ โ””โ”€โ”€ test_health.py # ๋‹จ์ผ ํ…Œ์ŠคํŠธ ``` ### ๊ฐœ์„ ๋œ ๊ตฌ์กฐ ``` naramarket_server/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ core/ # ํ•ต์‹ฌ ๋ชจ๋“ˆ โ”‚ โ”‚ โ”œโ”€โ”€ client.py # API ํด๋ผ์ด์–ธํŠธ โ”‚ โ”‚ โ”œโ”€โ”€ async_client.py # ๋น„๋™๊ธฐ ํด๋ผ์ด์–ธํŠธ โ”‚ โ”‚ โ”œโ”€โ”€ config.py # ์„ค์ • ๊ด€๋ฆฌ โ”‚ โ”‚ โ”œโ”€โ”€ models.py # ๋ฐ์ดํ„ฐ ๋ชจ๋ธ โ”‚ โ”‚ โ””โ”€โ”€ utils.py # ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜ โ”‚ โ”œโ”€โ”€ services/ # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง โ”‚ โ”‚ โ”œโ”€โ”€ crawler.py # ํฌ๋กค๋ง ์„œ๋น„์Šค โ”‚ โ”‚ โ”œโ”€โ”€ async_crawler.py # ๋น„๋™๊ธฐ ํฌ๋กค๋ง โ”‚ โ”‚ โ”œโ”€โ”€ auth.py # ์ธ์ฆ ์„œ๋น„์Šค โ”‚ โ”‚ โ””โ”€โ”€ file_processor.py # ํŒŒ์ผ ์ฒ˜๋ฆฌ โ”‚ โ”œโ”€โ”€ tools/ # MCP ๋„๊ตฌ๋“ค โ”‚ โ”‚ โ”œโ”€โ”€ base.py # ๋ฒ ์ด์Šค ํด๋ž˜์Šค โ”‚ โ”‚ โ””โ”€โ”€ naramarket.py # ๋‚˜๋ผ์žฅํ„ฐ ๋„๊ตฌ โ”‚ โ”œโ”€โ”€ api/ # HTTP API โ”‚ โ”‚ โ”œโ”€โ”€ app.py # FastAPI ์•ฑ โ”‚ โ”‚ โ”œโ”€โ”€ routes.py # API ๋ผ์šฐํŠธ โ”‚ โ”‚ โ””โ”€โ”€ auth_routes.py # ์ธ์ฆ ๋ผ์šฐํŠธ โ”‚ โ””โ”€โ”€ main.py # ๋ฉ”์ธ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ โ”œโ”€โ”€ tests/ # ์™„์ „ํ•œ ํ…Œ์ŠคํŠธ ์ŠˆํŠธ โ”‚ โ”œโ”€โ”€ test_utils.py โ”‚ โ”œโ”€โ”€ test_api.py โ”‚ โ””โ”€โ”€ test_auth.py โ”œโ”€โ”€ deployments/ # ๋ฐฐํฌ ํ™˜๊ฒฝ โ”‚ โ”œโ”€โ”€ docker-compose.yml โ”‚ โ”œโ”€โ”€ nginx/ โ”‚ โ”œโ”€โ”€ .env.example โ”‚ โ””โ”€โ”€ deploy.sh โ””โ”€โ”€ docs/ # ๋ฌธ์„œํ™” ``` --- ## โšก ์„ฑ๋Šฅ ๊ฐœ์„  ### ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋„์ž… - **๊ธฐ์กด**: ์ˆœ์ฐจ์  API ํ˜ธ์ถœ - **๊ฐœ์„ **: ๋™์‹œ ์ฒ˜๋ฆฌ (์ตœ๋Œ€ 10๊ฐœ ์š”์ฒญ) - **์„ฑ๋Šฅ ํ–ฅ์ƒ**: 10๋ฐฐ ์ด์ƒ ์†๋„ ๊ฐœ์„  ### ์ปค๋„ฅ์…˜ ํ’€๋ง - **TCP ์ปค๋„ฅ์…˜ ์žฌ์‚ฌ์šฉ** - **DNS ์บ์‹ฑ** (5๋ถ„) - **ํƒ€์ž„์•„์›ƒ ์ตœ์ ํ™”** ### ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” - **์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ**: ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ์šฐํšŒ - **์ž„์‹œ ํŒŒ์ผ ๊ด€๋ฆฌ**: ์ž๋™ ์ •๋ฆฌ - **๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜** ์ตœ์ ํ™” --- ## ๐Ÿ”’ ๋ณด์•ˆ ๊ฐ•ํ™” ### OAuth 2.0 ์ธ์ฆ ์‹œ์Šคํ…œ ``` ์ธ์ฆ ํ”Œ๋กœ์šฐ: 1. ํด๋ผ์ด์–ธํŠธ โ†’ ๋กœ๊ทธ์ธ ์š”์ฒญ 2. ์„œ๋ฒ„ โ†’ JWT ํ† ํฐ ๋ฐœ๊ธ‰ 3. API ์š”์ฒญ ์‹œ ํ† ํฐ ๊ฒ€์ฆ 4. ์Šค์ฝ”ํ”„ ๊ธฐ๋ฐ˜ ๊ถŒํ•œ ํ™•์ธ ``` ### ์ง€์›๋˜๋Š” ์ธ์ฆ ๋ฐฉ์‹ - **Password Grant**: ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ - **Client Credentials**: ์„œ๋น„์Šค ๊ฐ„ ์ธ์ฆ - **Refresh Token**: ํ† ํฐ ๊ฐฑ์‹  - **Authorization Code**: ์™„์ „ํ•œ OAuth ํ๋ฆ„ ### ๋ณด์•ˆ ๊ธฐ๋Šฅ - JWT ํ† ํฐ ์•”ํ˜ธํ™” - ํ† ํฐ ๋งŒ๋ฃŒ ๊ด€๋ฆฌ - ํ™œ์„ฑ ํ† ํฐ ์ถ”์  - ์Šค์ฝ”ํ”„ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด --- ## ๐ŸŒ HTTP API ์„œ๋ฒ„ ### FastAPI ๊ธฐ๋ฐ˜ REST API ```python # ์ฃผ์š” ์—”๋“œํฌ์ธํŠธ GET /api/v1/health # ํ—ฌ์Šค ์ฒดํฌ POST /api/v1/crawl/list # ์ƒํ’ˆ ๋ชฉ๋ก ์กฐํšŒ POST /api/v1/crawl/csv # CSV ํฌ๋กค๋ง POST /api/v1/files/save # ํŒŒ์ผ ์ €์žฅ GET /api/v1/server/info # ์„œ๋ฒ„ ์ •๋ณด # ์ธ์ฆ ์—”๋“œํฌ์ธํŠธ POST /auth/login # ๋กœ๊ทธ์ธ POST /auth/token # OAuth ํ† ํฐ GET /auth/me # ์‚ฌ์šฉ์ž ์ •๋ณด ``` ### ์ž๋™ ๋ฌธ์„œํ™” - **OpenAPI/Swagger**: `/docs` - **ReDoc**: `/redoc` - **์Šคํ‚ค๋งˆ ์ž๋™ ์ƒ์„ฑ** ### ์„œ๋ฒ„์‚ฌ์ด๋“œ ์ด๋ฒคํŠธ (SSE) - ์‹ค์‹œ๊ฐ„ ํฌ๋กค๋ง ์ง„ํ–‰ ์ƒํ™ฉ - ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ „์†ก --- ## ๐Ÿงช ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ### ํ…Œ์ŠคํŠธ ์ข…๋ฅ˜ 1. **์œ ๋‹› ํ…Œ์ŠคํŠธ** - ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜ ํ…Œ์ŠคํŠธ - ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ฒ€์ฆ - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ํ…Œ์ŠคํŠธ 2. **ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ** - API ์—”๋“œํฌ์ธํŠธ ํ…Œ์ŠคํŠธ - ์ธ์ฆ ํ”Œ๋กœ์šฐ ํ…Œ์ŠคํŠธ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ํ…Œ์ŠคํŠธ 3. **์ธ์ฆ ํ…Œ์ŠคํŠธ** - JWT ํ† ํฐ ๊ฒ€์ฆ - OAuth ํ๋ฆ„ ํ…Œ์ŠคํŠธ - ๊ถŒํ•œ ์ œ์–ด ํ…Œ์ŠคํŠธ ### ํ…Œ์ŠคํŠธ ์‹คํ–‰ ```bash # ์ „์ฒด ํ…Œ์ŠคํŠธ ์‹คํ–‰ pytest # ์ปค๋ฒ„๋ฆฌ์ง€ ํฌํ•จ ์‹คํ–‰ pytest --cov=src tests/ # ์ƒ์„ธ ์ถœ๋ ฅ pytest -v ``` --- ## ๐Ÿณ ๋ฐฐํฌ ํ™˜๊ฒฝ ### Docker ๋ฉ€ํ‹ฐ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ```dockerfile # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ FROM python:3.11-slim as development # ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ ํฌํ•จ # ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ FROM base as production # ์ตœ์†Œ ํ•„์ˆ˜ ํŒŒ์ผ๋งŒ ํฌํ•จ # ๋ณด์•ˆ ๊ฐ•ํ™” (non-root user) ``` ### Docker Compose ์ „์ฒด ์Šคํƒ ```yaml services: - naramarket-mcp # ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ - redis # ์บ์‹ฑ/์„ธ์…˜ ์ €์žฅ - nginx # ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ - prometheus # ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ - grafana # ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ ``` ### ๋ฐฐํฌ ์ž๋™ํ™” ```bash # ์›ํด๋ฆญ ๋ฐฐํฌ ./deployments/deploy.sh deploy # ์„œ๋น„์Šค ๊ด€๋ฆฌ ./deployments/deploy.sh status ./deployments/deploy.sh logs ./deployments/deploy.sh restart ``` --- ## ๐Ÿ“ˆ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ ### ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ (Prometheus) - API ์‘๋‹ต ์‹œ๊ฐ„ - ์š”์ฒญ ์„ฑ๊ณต/์‹คํŒจ์œจ - ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋ฅ  - ์—๋Ÿฌ ๋ฐœ์ƒ ๋นˆ๋„ ### ๋Œ€์‹œ๋ณด๋“œ (Grafana) - ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง - ์•Œ๋ฆผ ์‹œ์Šคํ…œ - ํžˆ์Šคํ† ๋ฆฌ์ปฌ ๋ฐ์ดํ„ฐ ๋ถ„์„ ### ํ—ฌ์Šค ์ฒดํฌ ```bash curl http://localhost:8000/api/v1/health ``` --- ## ๐Ÿ”ง ๊ฐœ๋ฐœ ๋„๊ตฌ ### ์ฝ”๋“œ ํ’ˆ์งˆ - **Type Hints**: ์™„์ „ํ•œ ํƒ€์ž… ์ง€์› - **Pydantic Models**: ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ - **Error Handling**: ์ฒด๊ณ„์ ์ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ### ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ - **Hot Reload**: ๊ฐœ๋ฐœ ์ค‘ ์ž๋™ ์žฌ์‹œ์ž‘ - **์ž๋™ ๋ฌธ์„œํ™”**: API ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ - **ํ™˜๊ฒฝ ๋ถ„๋ฆฌ**: ๊ฐœ๋ฐœ/์Šคํ…Œ์ด์ง•/ํ”„๋กœ๋•์…˜ --- ## ๐Ÿ“Š ์„ฑ๊ณผ ์ง€ํ‘œ ### ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ - **์ฝ”๋“œ ๊ฐ€๋…์„ฑ**: 10๋ฐฐ ํ–ฅ์ƒ (๋ชจ๋“ˆํ™”) - **์œ ์ง€๋ณด์ˆ˜์„ฑ**: ๊ฐœ๋ณ„ ๋ชจ๋“ˆ ๋…๋ฆฝ ์ˆ˜์ • - **ํ™•์žฅ์„ฑ**: ์ƒˆ API ์ถ”๊ฐ€ ์šฉ์ด์„ฑ ### ์‹œ์Šคํ…œ ์„ฑ๋Šฅ - **์ฒ˜๋ฆฌ ์†๋„**: 10๋ฐฐ+ ํ–ฅ์ƒ (๋น„๋™๊ธฐ) - **๋™์‹œ ์ฒ˜๋ฆฌ**: 1๊ฐœ โ†’ 10๊ฐœ+ ์š”์ฒญ - **๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ**: ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์•ˆ์ „ ์ฒ˜๋ฆฌ ### ์šด์˜ ์•ˆ์ •์„ฑ - **๋ณด์•ˆ**: OAuth 2.0 ์ธ์ฆ - **๋ชจ๋‹ˆํ„ฐ๋ง**: ์‹ค์‹œ๊ฐ„ ์ƒํƒœ ์ถ”์  - **๋ฐฐํฌ**: ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๊ฐ€๋Šฅ --- ## ๐Ÿš€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ### 1. ๋น ๋ฅธ ์‹œ์ž‘ ```bash # ์ €์žฅ์†Œ ํด๋ก  git clone <repository> cd naramarket_server # ํ™˜๊ฒฝ ์„ค์ • cd deployments cp .env.example .env # .env์—์„œ NARAMARKET_SERVICE_KEY ์„ค์ • # ๋ฐฐํฌ ์‹คํ–‰ chmod +x deploy.sh ./deploy.sh deploy ``` ### 2. MCP ๋ชจ๋“œ ์‹คํ–‰ ```bash # ๊ธฐ์กด MCP ๋ฐฉ์‹ python src/main.py # ๋˜๋Š” ํŒจํ‚ค์ง€ ์„ค์น˜ ํ›„ pip install . naramarket-mcp ``` ### 3. HTTP API ๋ชจ๋“œ ์‹คํ–‰ ```bash # FastAPI ์„œ๋ฒ„ uvicorn src.api.app:app --host 0.0.0.0 --port 8000 # ๋˜๋Š” Docker docker-compose up -d ``` ### 4. API ์‚ฌ์šฉ ์˜ˆ์‹œ ```python import requests # ๋กœ๊ทธ์ธ response = requests.post("http://localhost:8000/auth/login", json={ "username": "admin", "password": "admin123" }) token = response.json()["access_token"] # API ํ˜ธ์ถœ headers = {"Authorization": f"Bearer {token}"} response = requests.post("http://localhost:8000/api/v1/crawl/list", json={"category": "๋ฐ์Šคํฌํ†ฑ์ปดํ“จํ„ฐ"}, headers=headers ) ``` --- ## ๐Ÿ”ฎ ํ–ฅํ›„ ๊ฐœ๋ฐœ ๊ณ„ํš ### ๋‹จ๊ธฐ ๋ชฉํ‘œ (1-2๊ฐœ์›”) - [ ] Context7 MCP ์„œ๋ฒ„ ์—ฐ๊ฒฐ - [ ] Redis ๊ธฐ๋ฐ˜ ์บ์‹ฑ ์‹œ์Šคํ…œ - [ ] ๋” ๋งŽ์€ ๊ณต๊ณต๋ฐ์ดํ„ฐ API ์ง€์› ### ์ค‘๊ธฐ ๋ชฉํ‘œ (3-6๊ฐœ์›”) - [ ] ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ - [ ] ๊ธฐ๊ณ„ํ•™์Šต ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ถ„์„ - [ ] ๋Œ€์‹œ๋ณด๋“œ ์›น UI ### ์žฅ๊ธฐ ๋ชฉํ‘œ (6๊ฐœ์›”+) - [ ] ๋ฉ€ํ‹ฐํ…Œ๋„ŒํŠธ ์ง€์› - [ ] ๊ธ€๋กœ๋ฒŒ ๋ฐฐํฌ (CDN) - [ ] ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ --- ## ๐Ÿ“ž ๋ฌธ์˜ ๋ฐ ์ง€์› ### ๊ธฐ์ˆ  ๋ฌธ์˜ - **์ด์Šˆ ๋“ฑ๋ก**: GitHub Issues ํ™œ์šฉ - **๋ฌธ์„œ**: `/docs` ์—”๋“œํฌ์ธํŠธ ์ฐธ์กฐ - **API ๋ฌธ์„œ**: http://localhost:8000/docs ### ๋ฐฐํฌ ๋ฌธ์ œ ```bash # ๋กœ๊ทธ ํ™•์ธ ./deployments/deploy.sh logs # ํ—ฌ์Šค ์ฒดํฌ ./deployments/deploy.sh health # ์„œ๋น„์Šค ์žฌ์‹œ์ž‘ ./deployments/deploy.sh restart ``` --- ## ๐Ÿ† ๊ฒฐ๋ก  ์ด๋ฒˆ ๊ณ ๋„ํ™” ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด **๋‹จ์ˆœํ•œ MVP**์—์„œ **์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ํ”„๋กœ๋•์…˜ ์„œ๋น„์Šค**๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ### ํ•ต์‹ฌ ์„ฑ๊ณผ โœ… **10๋ฐฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ** (๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ) โœ… **์™„์ „ํ•œ ๋ณด์•ˆ ์ฒด๊ณ„** (OAuth 2.0) โœ… **ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜** โœ… **์ž๋™ํ™”๋œ ๋ฐฐํฌ ํ™˜๊ฒฝ** โœ… **์™„์ „ํ•œ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€** ์ด์ œ **์ง„์งœ ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค**๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๐ŸŽฏ --- *ํ”„๋กœ์ ํŠธ ์™„๋ฃŒ์ผ: 2025๋…„ 1์›”* *๋‹ด๋‹น์ž: Claude Code Assistant*

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/alphago2580/naramarketmcp'

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