Skip to main content
Glama
JaeyunKim62

MCPfinder

by JaeyunKim62
README.md
# 🌐 MCPfinder β€” λͺ¨λ“  AI μ—μ΄μ „νŠΈλ₯Ό μœ„ν•œ MCP 톡합 디렉토리

**ν•œκ΅­μ–΄** | [English](README.en.md)

**πŸ‘‰ [mcpfinder-ashen.vercel.app](https://mcpfinder-ashen.vercel.app/)**

**34,000개 μ΄μƒμ˜ MCP(Model Context Protocol) μ„œλ²„**λ₯Ό κ²€μƒ‰ν•˜κ³ , Claude Desktop Β· Cursor Β· Windsurf Β· Zed Β· Claude Code 섀정을 λ°”λ‘œ λ§Œλ“€μ–΄ μ£ΌλŠ” μ˜€ν”ˆμ†ŒμŠ€ λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. 맀일 μžλ™μœΌλ‘œ μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€.

![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)
![Servers: 34,000+](https://img.shields.io/badge/Servers-34k%2B-emerald.svg)
![Auto Sync: Daily](https://img.shields.io/badge/Auto--Sync-Daily-sky.svg)

---

## ✨ μ£Όμš” κΈ°λŠ₯

- **⚑ 34,000개 μ΄μƒμ˜ μ„œλ²„**: 곡식 MCP λ ˆμ§€μŠ€νŠΈλ¦¬, `punkpeye/awesome-mcp-servers`, npm, GitHub ν† ν”½(`mcp-server`, `model-context-protocol`, star 3개 이상)을 λͺ¨μ•„μ„œ 쀑볡을 μ •λ¦¬ν•©λ‹ˆλ‹€.
- **πŸ”„ 맀일 μžλ™ 동기화**: GitHub Actionsκ°€ 맀일 μƒˆ μ„œλ²„μ™€ λ³€κ²½ 사항을 가져와 μ»€λ°‹ν•˜κ³ , Vercel이 μžλ™μœΌλ‘œ λ‹€μ‹œ λ°°ν¬ν•©λ‹ˆλ‹€.
- **πŸ› οΈ ν΄λΌμ΄μ–ΈνŠΈλ³„ μ„€μ • 생성**:
  - **Claude Desktop**, **Cursor**, **Windsurf**, **Zed**, **Claude Code CLI**(`claude mcp add`)용 섀정을 클릭 ν•œ 번으둜 λ§Œλ“­λ‹ˆλ‹€.
  - API ν‚€λ‚˜ DB μ£Όμ†Œλ₯Ό μž…λ ₯ν•˜λ©΄ μ„€μ • JSON에 λ°”λ‘œ λ°˜μ˜λ©λ‹ˆλ‹€.
- **πŸ” 검색과 ν•„ν„°**:
  - 50개 μ΄μƒμ˜ μΉ΄ν…Œκ³ λ¦¬(λ°μ΄ν„°λ² μ΄μŠ€, 개발 도ꡬ, 검색, μ½”λ”© μ—μ΄μ „νŠΈ, 금육 λ“±)
  - μ–Έμ–΄(TypeScript, Python, Go, Rust), μ‹€ν–‰ 방식(둜컬 stdio / ν΄λΌμš°λ“œ 원격), 곡식 μ—¬λΆ€, 졜근 μ—…λ°μ΄νŠΈλ‘œ ν•„ν„°
  - μΉ΄λ“œ 보기 / ν‘œ 보기, `⌘K`(`Ctrl+K`) 단좕킀
- **πŸ€– MCP μ„œλ²„λ‘œλ„ μ‚¬μš© κ°€λŠ₯**: Claudeκ°€ λŒ€ν™” 쀑에 직접 MCPλ₯Ό μ°Ύμ•„ μΆ”μ²œν•˜κ³  μ„€μΉ˜ μ„€μ •κΉŒμ§€ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€. (μ•„λž˜ μ°Έκ³ )

---

## πŸ€– MCP μ„œλ²„λ‘œ μ‚¬μš©ν•˜κΈ°

이 디렉토리 μžμ²΄κ°€ MCP μ„œλ²„μž…λ‹ˆλ‹€. μ—°κ²°ν•΄ 두면 *"이 ν”„λ‘œμ νŠΈμ— ν•„μš”ν•œ MCP μ°Ύμ•„μ€˜"* 처럼 λ¬Όμ–΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

```bash
claude mcp add --transport http mcpfinder https://mcpfinder-ashen.vercel.app/api/mcp
```

| 도ꡬ | ν•˜λŠ” 일 |
|---|---|
| `search_mcp_servers` | ν‚€μ›Œλ“œ 검색 (μΉ΄ν…Œκ³ λ¦¬ / λ‘œμ»¬Β·ν΄λΌμš°λ“œ / 곡식 μ—¬λΆ€ ν•„ν„°) |
| `get_install_config` | Claude Code, Claude Desktop, Cursor, Windsurf, Zed용 μ„€μ • 생성 |
| `list_categories` | μΉ΄ν…Œκ³ λ¦¬μ™€ μ„œλ²„ 수 |

λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•˜λ €λ©΄ (클둠 ν›„ `npm install && npm run build:data`):
```bash
claude mcp add mcpfinder -- npx tsx /path/to/mcpfinder/mcp/stdio.ts
```

---

## βž• MCP μΆ”κ°€ μš”μ²­

λͺ©λ‘μ— μ—†λŠ” MCPκ°€ μžˆλ‹€λ©΄ [`data/manual.json`](data/manual.json)에 μ €μž₯μ†Œ μ£Όμ†Œλ₯Ό μΆ”κ°€ν•˜λŠ” PR을 보내 μ£Όμ„Έμš”. λ‹€μŒ 동기화 λ•Œ λ°˜μ˜λ©λ‹ˆλ‹€.

```json
{ "url": "https://github.com/owner/repo", "install": "npx -y github:owner/repo" }
```
`install`은 npm/PyPI에 λ°°ν¬λ˜μ§€ μ•Šμ€ κ²½μš°μ—λ§Œ 적으면 λ©λ‹ˆλ‹€.

---

## πŸš€ 직접 μ‹€ν–‰ν•˜κΈ°

```bash
npm install
npm run dev          # http://localhost:3000 (데이터 λΉŒλ“œκ°€ λ¨Όμ € μžλ™ 싀행됨)
```

| λͺ…λ Ή | μ„€λͺ… |
|---|---|
| `npm run sync` | 데이터 μ†ŒμŠ€μ—μ„œ μƒˆ μ„œλ²„ κ°€μ Έμ˜€κΈ° (증뢄, μ•½ 30초) |
| `GITHUB_TOKEN=... npm run sync:github-search` | GitHub ν† ν”½ 검색 + manual.json μˆ˜μ§‘ |
| `GITHUB_TOKEN=... npm run sync:github` | GitHub μŠ€νƒ€Β·ν¬ν¬Β·μ•„μΉ΄μ΄λΈŒ 정보 μ±„μš°κΈ° |
| `npm run build:data` | μ›Ήμš© μΉ΄νƒˆλ‘œκ·Έ 데이터 생성 |
| `npm run typecheck && npm test` | νƒ€μž… 검사와 ν…ŒμŠ€νŠΈ |
| `npm run build` | 배포용 λΉŒλ“œ (`dist/`) |

---

## ☁️ Vercel 배포

1. [vercel.com/new](https://vercel.com/new)μ—μ„œ 이 μ €μž₯μ†Œλ₯Ό Importν•©λ‹ˆλ‹€.
2. **Vite**κ°€ μžλ™ κ°μ§€λ©λ‹ˆλ‹€ (Build: `npm run build`, Output: `dist`). ν™˜κ²½λ³€μˆ˜λŠ” ν•„μš” μ—†μŠ΅λ‹ˆλ‹€.
3. Deploy. 이후 `main`에 push될 λ•Œλ§ˆλ‹€(맀일 μžλ™ 데이터 동기화 포함) λ‹€μ‹œ λ°°ν¬λ©λ‹ˆλ‹€.

μžλ™ 동기화가 κ²°κ³Όλ₯Ό μ»€λ°‹ν•˜λ €λ©΄ μ €μž₯μ†Œ Settings β†’ Actions β†’ Workflow permissionsλ₯Ό **Read and write**둜 μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.
`dist/`와 `public/data/`λŠ” λΉŒλ“œ 결과물이라 μ»€λ°‹ν•˜μ§€ μ•Šκ³  `data/servers.json`μ—μ„œ λ‹€μ‹œ λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€.

---

## πŸ“‚ ν”„λ‘œμ νŠΈ ꡬ쑰

```
mcpfinder/
β”œβ”€β”€ .github/workflows/
β”‚   β”œβ”€β”€ update-mcp-data.yml    # 맀일 데이터 μžλ™ 동기화
β”‚   └── ci.yml                 # PRλ§ˆλ‹€ νƒ€μž… κ²€μ‚¬Β·ν…ŒμŠ€νŠΈΒ·λΉŒλ“œ
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ servers.json           # 원본 데이터셋 (34,000+ μ„œλ²„)
β”‚   β”œβ”€β”€ sync-state.json        # 증뢄 동기화 μ‹œμ κ³Ό 기둝
β”‚   └── raw/                   # μ†ŒμŠ€λ³„ μΊμ‹œ (컀밋 μ•ˆ 함)
β”œβ”€β”€ api/
β”‚   └── mcp.ts                 # Vercel ν•¨μˆ˜: 원격 MCP μ—”λ“œν¬μΈνŠΈ (/api/mcp)
β”œβ”€β”€ mcp/
β”‚   β”œβ”€β”€ server.ts              # MCP 도ꡬ: 검색, μ„€μΉ˜ μ„€μ •, μΉ΄ν…Œκ³ λ¦¬
β”‚   └── stdio.ts               # 둜컬 stdio μ‹€ν–‰
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ sync.ts                # 동기화 전체 흐름 (npm run sync)
β”‚   β”œβ”€β”€ merge.ts               # 쀑볡 μ œκ±°μ™€ μΉ΄ν…Œκ³ λ¦¬ λΆ„λ₯˜
β”‚   β”œβ”€β”€ build-catalog.ts       # μ›Ήμš© 데이터 생성 β†’ public/data/
β”‚   └── sources/               # λ ˆμ§€μŠ€νŠΈλ¦¬, awesome-list, npm, GitHub μˆ˜μ§‘κΈ°
└── src/
    β”œβ”€β”€ components/            # 헀더, ν•„ν„°, μΉ΄λ“œ, ν‘œ, μ„€μ • 생성 λͺ¨λ‹¬
    β”œβ”€β”€ i18n/                  # ν•œκ΅­μ–΄ / μ˜μ–΄ λ²ˆμ—­ (μ£Όμš” μ„œλ²„ μ„€λͺ…: npm run build:i18n)
    β”œβ”€β”€ utils/
    β”‚   β”œβ”€β”€ aiMatcher.ts       # μžμ—°μ–΄ 질문 β†’ μ„œλ²„ μΆ”μ²œ
    β”‚   └── configGenerator.ts # ν΄λΌμ΄μ–ΈνŠΈλ³„ μ„€μ • 생성
    └── App.tsx
```

---

## πŸ“œ λΌμ΄μ„ μŠ€

[MIT](LICENSE)