kakao-mcp-ccomajeon
by ccomajeon
README.md
<div align="center">
# ๐ฌ kakao-mcp-ccomajeon
**์นด์นด์คํก ๊ณ์ ํ๋๋ฅผ ์๋ฒ ๋ฐ๋ชฌ์ ์ฐ๊ฒฐํด AIยทํฐ๋ฏธ๋ยท์น์์ ์ฐ๋ ๋น๊ณต์ MCP ์๋ฒ**
AI๋ ํ์ฉ๋ ๋ํ๋ฅผ ์ฝ๊ณ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๊ณ , ์ฌ๋์ ๋ฐฉ๋ณ ๊ถํ๊ณผ ์น์ธ ์ ์ฐจ๋ก ๊ทธ ๋ฒ์๋ฅผ ์ ํฉ๋๋ค.






**๊ฐ๋ฐยท๊ด๋ฆฌ: [ccomajeon](https://github.com/ccomajeon)**
[ํ๋์ ๋ณด๊ธฐ](#ํ๋์-๋ณด๊ธฐ) ยท
[์ ์ฒด ๊ตฌ์กฐ](#์ ์ฒด-๊ตฌ์กฐ) ยท
[ํต์ ๊ตฌ๊ฐ](#ํต์ -๊ตฌ๊ฐ๋ณ-์ ๋ฆฌ) ยท
[๋์ ํ๋ฆ](#๋์-ํ๋ฆ) ยท
[๊ถํ ๊ฒ์ฌ](#๊ถํ์-์ด๋ป๊ฒ-๊ฒ์ฌํ๋์) ยท
[๊ธฐ๋ฅ](#์ด๋ค-๊ธฐ๋ฅ์ด-์๋์) ยท
[์ค์น](#์ค์น์-์ฌ์ฉ๋ฒ) ยท
[๊ฐ๋ฐ](#์์ค-๊ฐ๋ฐ๊ณผ-ํจํค์ง-๋น๋)
</div>
---
## ํ๋์ ๋ณด๊ธฐ
| | |
|---|---|
| **๋ฌด์์ธ๊ฐ์?** | ์นด์นด์คํก ๊ธฐ๋ฅ์ MCP ๋๊ตฌ๋ก ์ ๊ณตํ๋ ์๋ฒ์
๋๋ค. AI ๋ชจ๋ธ ์์ฒด๊ฐ ์๋๋ฉฐ, ์์ฝยท๋ต์ฅ ์์ฑ์ ์ฐ๊ฒฐํ AI๊ฐ ํฉ๋๋ค. |
| **์ด๋์ ๋์๊ฐ๋์?** | Linux ์๋ฒ์ `systemd` ์๋น์ค(`kakao-mcp.service`) ํ๋๊ฐ ๊ณ์ ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํฉ๋๋ค. |
| **๋๊ฐ ์ฐ๋์?** | ClaudeยทCodex ๊ฐ์ AI ํด๋ผ์ด์ธํธ, ํฐ๋ฏธ๋ CLI, ๋ก์ปฌ ์น ํ๋ฉด์ด ๋ชจ๋ ๊ฐ์ ๋ฐ๋ชฌ์ ๋ถ์ต๋๋ค. |
| **์ด๋ป๊ฒ ์งํค๋์?** | ์ฒ์ ์ฐ๋ ๋ฐฉ์ ์ฝ๊ธฐยท์ ์ก์ ์ฌ๋์ด ์น์ธํฉ๋๋ค. ์ด์์ ์ํยท์๋ ์ ํ์ ์ฌ๋ ์น์ธ์ผ๋ก๋ ๋์ ์ ์์ต๋๋ค. |
| **ํ์ฌ ์ํ** | ๋ฒ์ `0.2.0-rebuild.3` ยท ๊ธฐ๋ณธ ๋๊ตฌ 16๊ฐ ยท ์ ์ฒด ๋๊ตฌ 41๊ฐ ยท ์ค์ ๊ณ์ ์ก์์ ์ ์์ง ๋ฏธ๊ฒ์ฆ |
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/quick-start-dark.png">
<img alt="์ค์น๋ถํฐ ๋ต๋ณ๊น์ง 5๋จ๊ณ: โ ์๋ฒ์ ์ค์นยทํด๋ํฐ์ผ๋ก ๋ก๊ทธ์ธ ์น์ธ โ โก AI ํด๋ผ์ด์ธํธ์ MCP ๋ฑ๋ก โ โข ์์ฐ์ด๋ก ์์ฒญ โ โฃ ์ฒ์ ์ฐ๋ ๋ฐฉ์ ์ฌ๋์ด ์น์ธ โ โค ๊ฒฐ๊ณผ๋ฅผ AI๊ฐ ์ ๋ฆฌํด์ ๋ต๋ณ" src="docs/diagrams/quick-start-light.png">
</picture>
---
## ์ ์ฒด ๊ตฌ์กฐ
๋ฐ๋ชฌ **ํ๋**๊ฐ ์นด์นด์คํก ์ฐ๊ฒฐ์ ์ฅ๊ณ ์๊ณ , AIยทCLIยท์น์ ๋ชจ๋ ๊ทธ ๋ฐ๋ชฌ์ **MCP ํด๋ผ์ด์ธํธ**์
๋๋ค. ํด๋ผ์ด์ธํธ ์ชฝ์ ์นด์นด์ค ๊ณ์ ์ ๋ณด๋ฅผ ์ฝ์ง ์๊ณ , ์๊ธฐ ์ธ์
์ ๋ฐ๋ก ์ด์ง๋ ์์ต๋๋ค.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/architecture-dark.png">
<img alt="kakao-mcp ์ ์ฒด ๊ตฌ์กฐ: ์ฌ์ฉ์ โ AI ํด๋ผ์ด์ธํธ โ MCP ์ปค๋ฅํฐ โ SSH ํฐ๋ โ ์๋ฒ์ MCP ์๋ฒ โ core โ protocol โ ์นด์นด์คํก ์๋ฒ. core๋ SQLite์ ์ ์ฅํ๊ณ , ์น ํ๋ฉด๊ณผ ํฐ๋ฏธ๋ CLI๋ ๊ฐ์ MCP ์๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค." src="docs/diagrams/architecture-light.png">
</picture>
<sub>[archify](https://github.com/tt-a1i/archify)๋ก ์ฝ๋ ๊ทผ๊ฑฐ๋ฅผ ๋ถ์ฌ ๊ทธ๋ฆฐ ๊ตฌ์กฐ๋์
๋๋ค. ๋
ธ๋๋ง๋ค ๊ทผ๊ฑฐ ์ฝ๋ ๋งํฌ๊ฐ ๋ฌ๋ฆฐ ์ธํฐ๋ํฐ๋ธ ๋ฒ์ ์ [`docs/diagrams/architecture.html`](docs/diagrams/architecture.html)์ ๋ด๋ ค๋ฐ์ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ด ๋ณด์ธ์. ์ด README์ ๋ค๋ฅธ ๋ค์ด์ด๊ทธ๋จ๋ ๋ชจ๋ archify๋ก ๊ทธ๋ ธ๊ณ , ์๋ณธ ์ ์(`*.archify.json`)๋ [`docs/diagrams`](docs/diagrams)์ ์์ต๋๋ค.</sub>
> ๐ก AI๊ฐ ๊ฐ์ ์๋ฒ์ ์์ผ๋ฉด SSH ์์ด `127.0.0.1:8787`๋ก ๋ฐ๋ก ์ฐ๊ฒฐํฉ๋๋ค. MCP ํฌํธ๋ ์๋ฒ ๋ฐ์ผ๋ก ์ด์ง ์์ต๋๋ค.
### ๋ชจ๋ ๊ตฌ์ฑ
TypeScript์ Node.js๋ก ๋ง๋ npm workspaces ๋ชจ๋
ธ๋ ํฌ์
๋๋ค. ์๋์ชฝ ํจํค์ง์ผ์๋ก ์นด์นด์ค ์๋ฒ์ ๊ฐ๊น์ต๋๋ค.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/modules-dark.png">
<img alt="๋ชจ๋ ๊ตฌ์ฑ: apps/cli๋ packages/client๋ฅผ importํ๊ณ apps/mcp ๋ฐ๋ชฌ์ MCP๋ก ์ ์, apps/web๋ MCP๋ก ๋ฐ๋ชฌ์ ์ ์, apps/mcp๋ packages/core๋ฅผ ๊ฑฐ์ณ packages/protocol์ ์ฐ๊ณ setup ๋ ๊ธฐ๊ธฐ ๋ฑ๋ก์ protocol์ ์ง์ ์ฌ์ฉ, protocol์ bson์ ์์กด" src="docs/diagrams/modules-light.png">
</picture>
| ๋๋ ํฐ๋ฆฌ | ์ญํ |
|---|---|
| `packages/protocol` | LOCO/BSON, ์ํธํ, ๊ธฐ๊ธฐ ๋ฑ๋กยท์ธ์ฆ, ํต์ ๊ณผ ๋ฏธ๋์ด ์ก์์ |
| `packages/core` | ๋จ์ผ ๊ณ์ ์ธ์
, SQLite, ์ ๊ทผ ์ ์ฑ
, ์น์ธ๊ณผ ์ฐ๊ธฐ ์์
, ์ด๋ฒคํธยท๊ธฐ๋ก ๊ด๋ฆฌ |
| `packages/client` | ๋ฐ๋ชฌ์ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ SDK |
| `apps/mcp` | MCP ๋๊ตฌ, ์น์ธ ์ฐ๊ฒฐ, ์ค์นยท์ง๋จยท์
๋ฐ์ดํธ, SSH ์ปค๋ฅํฐ |
| `apps/cli` | ํฐ๋ฏธ๋ ๋ฉ์ ์ ์ ๋ช
๋ นํ ์์
|
| `apps/web` | ๋ก์ปฌ ์น ํ๋ฉด, API, ์ค์๊ฐ ํ๋ฉด ๊ฐฑ์ |
| `scripts` | ํจํค์ง ๋น๋ยท์ค์น ๊ฒ์ฆ, ์ ์ฅ์ ๊ณต๊ฐ ์ ๊ฒ์ฌ |
<details>
<summary><b>๊ตฌํ ํฌ์ธํธ ์์ธํ ๋ณด๊ธฐ</b></summary>
- **TypeScript ๋ชจ๋
ธ๋ ํฌ:** npm workspaces๋ก ํต์ ยท๊ณ์ ์ฒ๋ฆฌยทํด๋ผ์ด์ธํธยท์คํ ์ฑ์ ๋๋๋๋ค.
- **ํ๋กํ ์ฝ ์ฒ๋ฆฌ:** LOCO ํจํท์ ํค๋ยท๊ธธ์ดยท์ ์ ๋ฒ์๋ฅผ ๊ฒ์ฌํ๊ณ BSON ๋ณธ๋ฌธ์ ์ง๋ ฌํยท์ญ์ง๋ ฌํํฉ๋๋ค. ์๋ฆฐ ํจํท๊ณผ ์๋ชป๋ ์
๋ ฅ์ ์ค๋ฅ๋ก ๊ฑฐ๋ถํฉ๋๋ค.
- **์ค์๊ฐ ๋ฉ์์ง:** ์ฉ๋์ด ์ ํ๋ ์ํ ๋ฒํผ์ ์์ ์ด๋ฒคํธ๋ฅผ ๋ฃ๊ณ ์ปค์๋ก ์ ํญ๋ชฉ์ ์กฐํํฉ๋๋ค. ์ปค์๋ ๋ฉ๋ชจ๋ฆฌ์์ ์์น์ด๋ฉฐ ์ฌ์์ ํ ๋ณด์กด๋๋ ์ฒดํฌํฌ์ธํธ๊ฐ ์๋๋๋ค.
- **๊ถํ๊ณผ ์ ์ฅ:** ๊ณ์ ์ธ์
ยทSQLite ์ ์ฅ์ยท๋ฐฉ๋ณ ์ฝ๊ธฐ/์ ์ก ์ ์ฑ
ยท์น์ธยท์ค๋ณต ์์ฒญ ์ฒ๋ฆฌ๋ฅผ core์ ๋ชจ์๋๋ค.
- **๋ณด์ ๊ฐ์ :** ์น์ธ ์๋ต ์ฌ์ฌ์ฉ, ๋ฐฉ ์ฝ๊ธฐ ์ํ, ์น ์ฌ์ง ํ์, ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ฃผ์ ๊ฒ์ฆ์ ๊ฐํํ์ต๋๋ค.
- **๋ฐฐํฌ:** esbuild๋ก ์คํ ํ๋ก๊ทธ๋จ 10๊ฐ๋ฅผ ESM ํ์ผ์ ๋ฒ๋ค๋งํฉ๋๋ค. ๋ฐฐํฌ ํจํค์ง๋ ๋ณ๋์ ๋ฐํ์ ์์กด์ฑ ๋ค์ด๋ก๋ ์์ด ์ค์นํ ์ ์์ผ๋ฉฐ, ์น ์ ์ ํ์ผ๊ณผ ์์กด์ฑ ๋ผ์ด์ ์ค ๊ณ ์ง๋ฅผ ํฌํจํฉ๋๋ค.
- **๊ฒ์ฆ:** Node ํ
์คํธ ๋ฌ๋๋ก ๋จ์ยท๊ฒฉ๋ฆฌ ํตํฉ ํ
์คํธ๋ฅผ ์คํํ๊ณ , TypeScript ๊ฒ์ฌ์ ์ค์ ํจํค์ง ์ค์นยท๋ช
๋ น ์คํ ๊ฒ์ฌ๋ก ํ์ธํฉ๋๋ค.
</details>
---
## ํต์ ๊ตฌ๊ฐ๋ณ ์ ๋ฆฌ
์์ฒญ ํ๋๊ฐ AI์์ ์นด์นด์ค ์๋ฒ๊น์ง ๊ฐ๋ ๋์ ๊ฑฐ์น๋ ๊ตฌ๊ฐ์
๋๋ค.
| # | ๊ตฌ๊ฐ | ๋ฐฉ์ | ๋ณดํธ ์ฅ์น |
|:-:|---|---|---|
| 1 | AI ํด๋ผ์ด์ธํธ โ MCP ์ปค๋ฅํฐ | **stdio**, ์ค ๋จ์ JSON-RPC 2.0 (MCP) | AI ํด๋ผ์ด์ธํธ๊ฐ ์ปค๋ฅํฐ๋ฅผ ์ง์ ์คํํ๋ฏ๋ก ์ธ๋ถ ๋
ธ์ถ์ด ์์ต๋๋ค |
| 2 | ์ปค๋ฅํฐ โ ์๋ฒ ๋ฐ๋ชฌ | **SSH ํฐ๋**(`ssh -T -W 127.0.0.1:8787`) ๋๋ ๊ฐ์ ์ปดํจํฐ์ loopback TCP | SSH ํค ์ธ์ฆ. ๋ฐ๋ชฌ์ด ์ฌ์์๋ผ๋ ์ปค๋ฅํฐ๊ฐ SSH/TCP ์ฐ๊ฒฐ๋ง ๋ค์ ์๊ณ AI ์ชฝ stdio๋ ์ ์งํฉ๋๋ค |
| 3 | ๋ฐ๋ชฌ์ MCP ์์ผ | **TCP `127.0.0.1:8787`** ๋๋ Unix ์์ผ. stdio์ ๊ฐ์ JSON-RPC ํ์ | loopback๋ง ํ์ฉํฉ๋๋ค. Linux์์๋ ํ์ฉํ OS ์ฌ์ฉ์(`KAKAO_MCP_ALLOWED_UIDS`)์ ์ฐ๊ฒฐ๋ง ๋ฐ์ต๋๋ค |
| 4 | ๋ธ๋ผ์ฐ์ โ ์น ํ๋ฉด | **HTTP `127.0.0.1:8899`**, REST + Server-Sent Events | ์คํํ ๋๋ง๋ค ๋ฐ๋๋ launch ๋งํฌ๋ก ์ธ์
์ฟ ํค๋ฅผ ๋ฐ์ต๋๋ค. ์น์ ๊ณ์ ์ ๋ณด๋ฅผ ์ฝ์ง ์์ต๋๋ค |
| 5 | core โ ์นด์นด์คํก ์๋ฒ | **LOCO** ๋ฐ์ด๋๋ฆฌ ํ๋กํ ์ฝ + BSON ๋ณธ๋ฌธ | RSA-OAEP๋ก AES-128-GCM ํค๋ฅผ ๊ตํํ ์ํธํ ์ฑ๋์ ์๋๋ค. ๊ณ์ ๋น ์ฐ๊ฒฐ์ ํ๋๋ง ์ฝ๋๋ค |
<details>
<summary><b>MCP ๋ฉ์์ง ํ์ ์์</b></summary>
AI ํด๋ผ์ด์ธํธ์ ๋ฐ๋ชฌ์ ํ ์ค์ JSON ํ๋์ฉ ์ฃผ๊ณ ๋ฐ์ต๋๋ค. ๋ก๊ทธ๋ stderr๋ก๋ง ๋ด๋ณด๋ด๊ณ stdout์ ํต์ ์ ์ฉ์
๋๋ค.
```jsonc
// AI โ ๋ฐ๋ชฌ: ๋๊ตฌ ํธ์ถ
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"read_messages","arguments":{"chatId":"โฆ","mode":"recent"}}}
// ๋ฐ๋ชฌ โ AI: ๊ฒฐ๊ณผ (๋ฐ์ ๋ฉ์์ง๋ ํญ์ untrusted ๋ฐ์ดํฐ๋ก ํ์)
{"jsonrpc":"2.0","id":7,"result":{"content":[{"type":"text","text":"โฆ"}]}}
```
์ง์ ๋ฉ์๋: `initialize`, `tools/list`, `tools/call`, `ping`, `resources/subscribe` ๋ฑ. ์์ฒญ์ 64KiB, ์๋ต์ 1MiB, ๋์ ๋๊ตฌ ์คํ์ 16๊ฐ๊น์ง ๋ฐ์ต๋๋ค.
</details>
---
## ๋์ ํ๋ฆ
### 1. ์ฒ์ ์ค์นํ๊ณ ๋ก๊ทธ์ธํ ๋
์ฌ๋์ด ์ค์น ๋ง๋ฒ์ฌ์์ ๊ณ์ ์ ๋ณด๋ฅผ ์
๋ ฅํ๊ณ , **ํด๋ํฐ์์ ๊ธฐ๊ธฐ ์ธ์ฆ์ ์ง์ ์น์ธ**ํฉ๋๋ค. ์ดํ๋ก๋ ๋ฐ๋ชฌ์ด ์ฐ๊ฒฐ์ ๊ณ์ ์ ์งํฉ๋๋ค.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/login-flow-dark.png">
<img alt="์ค์นยท๋ก๊ทธ์ธ ์ํ์ค: ์ฌ์ฉ์๊ฐ ์ค์น ๋ง๋ฒ์ฌ์ ๊ณ์ ์
๋ ฅ โ protocol์ด ์นด์นด์ค ์๋ฒ์ ๋ก๊ทธ์ธยท๊ธฐ๊ธฐ ๋ฑ๋ก โ ํด๋ํฐ์์ ์ง์ ์น์ธ โ ํ ํฐยท๊ธฐ๊ธฐ ํค ์์ โ systemd ์๋น์ค ์์ โ ๋ฐ๋ชฌ์ด GETCONF, CHECKIN, ์ํธํ ํธ๋์
ฐ์ดํฌ, LOGINLIST๋ก ์ธ์
์ฐ๊ฒฐ" src="docs/diagrams/login-flow-light.png">
</picture>
- ๋ค๋ฅธ PC๊ฐ ์ด๋ฏธ ์ฐ๊ณ ์์ผ๋ฉด ๊ธฐ๋ณธ์ผ๋ก **์ค๋จ**ํ๊ณ , ์๋์ผ๋ก ๋ก๊ทธ์์์ํค์ง ์์ต๋๋ค.
- ์๋ ์ฌ๋ก๊ทธ์ธ ์ ๋ณด ์ ์ฅ์ ์ ํ์
๋๋ค. ์ ์ฅํ๋๋ผ๋ ์ต๋ 24์๊ฐ์ 3ํ๋ก ์ ํํ๊ณ , ์ถ๊ฐ ์ธ์ฆ์ด ํ์ํ๋ฉด ๋ฉ์ถฅ๋๋ค.
### 2. AI๊ฐ ๋ํ๋ฅผ ์ฝ์ ๋
์ฒ์ ์ฌ๋ ๋ฐฉ(๋ซํ ๋ฐฉ)์ด๋ฉด **๊ฐ์ ํธ์ถ ์์์** ์ฌ๋์๊ฒ ํ์ธ ์ฐฝ์ ๋์๋๋ค.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/read-flow-dark.png">
<img alt="๋ํ ์ฝ๊ธฐ ์ํ์ค: AI๊ฐ find_chat๊ณผ read_messages ํธ์ถ โ core๊ฐ ์ฝ๊ธฐ ๊ถํ ํ์ธ โ ๋ซํ ๋ฐฉ์ด๋ฉด ๊ฐ์ ํธ์ถ ์์์ ํ์ธ ์ฐฝ์ผ๋ก ์ฌ๋ ์น์ธ โ ํ์ํ๋ฉด MCHATLOGS๋ก ๊ธฐ๋ก ๋๊ธฐํ โ untrusted ํ์๋ ๋ฉ์์ง ๋ฐํ, ์ฝ์ ํ์๋ ๋ณด๋ด์ง ์์" src="docs/diagrams/read-flow-light.png">
</picture>
### 3. AI๊ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋
๋ชจ๋ ์ฐ๊ธฐ ์์
์๋ AI๊ฐ ์ ํ <b>UUID <code>requestId</code></b>๊ฐ ๋ถ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋ถํ์คํ ๋ ๊ฐ์ ID๋ก ํ์ธํ๋ฏ๋ก **์ค๋ณต ์ ์ก์ด ์ผ์ด๋์ง ์์ต๋๋ค.**
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/send-flow-dark.png">
<img alt="๋ฉ์์ง ์ ์ก ์ํ์ค: AI๊ฐ send_message(requestId) ํธ์ถ โ ์ ์ก ํ๊ฐ๊ฐ ์์ผ๋ฉด ํ์ธ ์ฐฝ์ผ๋ก ์น์ธ โ core๊ฐ WRITE ํ ๋ฒ ์ ์ก โ ์ฑ๊ณต์ด๋ฉด sent, ์๋ฒ ๊ฑฐ์ ์ด๋ฉด ๋ณด๋ด์ง ์์, ์๋ต๋ง ์ ์ค๋๋ฉด ์ฌ์ฐ๊ฒฐ ํ ๋ฐฉ ๊ธฐ๋ก์์ msgId๋ฅผ ์ฐพ์ sent ๋๋ SEND_NOT_DELIVERED" src="docs/diagrams/send-flow-light.png">
</picture>
### 4. ์ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/receive-flow-dark.png">
<img alt="์์ ๋ฐ์ดํฐ ํ๋ฆ: ์นด์นด์ค ์๋ฒ MSG ํธ์ โ protocol โ core โ SQLite ์ ์ฅ๊ณผ ์ํ ๋ฒํผ โ AI๋ read_messages wait์ claim/ack ์ด๋ฒคํธ๋ก, ํฐ๋ฏธ๋ ๋ฉ์ ์ ๋ recent ์ด๋ฒคํธ๋ก ๋ฐ๊ณ , ์น ํ๋ฉด์ SSE ์ํ ์๋ฆผ๋ง ๋ฐ์, AI์๋ ๋ณธ๋ฌธ ์๋ resources/updated ์๋ฆผ" src="docs/diagrams/receive-flow-light.png">
</picture>
- **์ ์ฅ๊ณผ ์ด๋์ ๋ณ๊ฐ์
๋๋ค.** ์์ ๋ฉ์์ง๋ ๋ชจ๋ ๋ก์ปฌ SQLite์ ์ ์ฅ๋์ง๋ง, AI๊ฐ ์ฝ์ผ๋ ค๋ฉด ์ฝ๊ธฐ ๊ถํ์ ๋ค์ ํต๊ณผํด์ผ ํฉ๋๋ค.
- ๋ณ๊ฒฝ ์๋ฆผ(`kakao://rooms/{chatId}/messages` ๊ตฌ๋
)์๋ ๋ณธ๋ฌธยท์์ฑ์๋ฅผ ๋ด์ง ์์ต๋๋ค. ๋ณธ๋ฌธ์ ํญ์ `read_messages`๋ก ์ฝ์ต๋๋ค.
- ์น ํ๋ฉด์ SSE๋ ์ฐ๊ฒฐยท๋ฐฉ ๋ชฉ๋ก ๊ฐ์ ์ํ ์๋ฆผ๋ง ๋ณด๋ด๊ณ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ณด๋ด์ง ์์ต๋๋ค. ๋ณธ๋ฌธ์ ๋ฐฉ ๊ธฐ๋ก์ ์กฐํํด ์ฝ์ต๋๋ค.
- `claim/ack_message_events`๋ ์ฌ์์์๋ ๋จ๋ SQLite ์ด๋ฒคํธ ํ๋ฅผ, `read_messages`์ waitยทrecent๋ ๋ฉ๋ชจ๋ฆฌ์ ์ํ ๋ฒํผ๋ฅผ ์ฝ์ต๋๋ค.
---
## ๊ถํ์ ์ด๋ป๊ฒ ๊ฒ์ฌํ๋์?
์์ฒญ์ ์๋ ์์๋ก ๊ฒ์ฌํ๊ณ , **ํ๋๋ผ๋ ๊ฑฐ์ ํ๋ฉด ๋ฉ์ถฅ๋๋ค.**
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/permission-check-dark.png">
<img alt="๊ถํ ๊ฒ์ฌ ์์: ๋ ์ด์ด 0 ๊ณ ์ ๋ฐ๋ฅ์ โ ๋ ์ด์ด 2 ๋๊ตฌ ๋ฌถ์ โ ๋ ์ด์ด 1ยท4 ๋ชจ๋์ ์ด์์ ์ํ โ ๋ ์ด์ด 5 ์ฌ๋์ ํ๊ฐ, ํ๊ฐ๊ฐ ์์ผ๋ฉด ํ์ธ ์ฐฝยทํจ์คํค๋ก ์ง๋ฌธ, ์ด๋ ๋จ๊ณ๋ ๊ฑฐ์ ์ด๋ฉด ๋ฉ์ถค" src="docs/diagrams/permission-check-light.png">
</picture>
| ๋ ์ด์ด | ์ง๋ฌธ | ์ค์ |
|---|---|---|
| 0. ๊ณ ์ ๋ฐ๋ฅ์ | ๋ฌด์์ด๋ ์ ๋ ์ ๋๋ ๊ฒ (AI๊ฐ ๋ชจ๋ยท์ํ์ ๋ฐ๊พธ๋ ๊ฒ ๋ฑ) | ์ฝ๋ ๊ณ ์ |
| 1. ์์ด์ ํธ ๋ชจ๋ | AI๊ฐ ๋ฌป์ง ์๊ณ ์ด๋๊น์ง ํด๋ ๋๋ | `KAKAO_AGENT_MODE=ask`(๊ธฐ๋ณธ) \| `trust` |
| 2. ๋๊ตฌ ๋ฌถ์ | ์ด๋ค ๋๊ตฌ๊ฐ ๋ณด์ด๋ | `KAKAO_MCP_TOOL_GROUPS` |
| 4. ์ด์์ ์ํ | ๋ชจ๋ ์์์ ๋ ์ขํ ๊ณณ | `KAKAO_ROOM_CEILING`, `KAKAO_RECIPIENT_DAILY_LIMIT`, `KAKAO_RATE_*` |
| 5. ์ฌ๋์ ํ๊ฐ | ์ด ๋ฐฉยท์ด ์์
์ ์ฌ๋์ด ๋ญ๋ผ๊ณ ํ๋ | ์คํ ์ค ํ์ธ ์ฐฝ์ผ๋ก ๊ธฐ๋ก |
> ๋ ์ด์ด 3(๊ธฐ๋ฅ ํ๋๊ทธ)์ ๋ฐ๋ชฌ์ด ํผ์ ํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ค์ ์ด๋ผ ์ด ๊ฒ์ฌ ์์์๋ ๋ค์ด๊ฐ์ง ์์ต๋๋ค. ์์ธํ ์ค๊ณ๋ [์์ด์ ํธ ๋ชจ๋์ ์ค์ ๋ ์ด์ด](docs/designs/agent-mode-and-layers.md)๋ฅผ ๋ณด์ธ์.
---
## ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์?
| ์์ญ | ๊ธฐ๋ฅ |
|---|---|
| ๐ฌ ๋ํ ์กฐํ | ๋ฐฉยท์น๊ตฌ ๊ฒ์, ๊ณผ๊ฑฐ/์ต๊ทผ ๋ฉ์์ง, ํค์๋ ๊ฒ์, ์ ๋ฉ์์ง ๋๊ธฐ, ์ ํ๋ ์ ์ฝ์ ๋ด์ฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ |
| ๐ ๋ฉ์์งยท๋ฏธ๋์ด | ํ
์คํธยท๋ต์ฅยท๋ฉ์
, ์ฌ์งยท๋ฌถ์ ์ฌ์งยทํ์ผ ์ ์ก, ์ฒจ๋ถ ๋ค์ด๋ก๋, ๋ณธ์ธ ๋ฉ์์ง ์์ ยท์ญ์ |
| ๐ ๋ํ๋ฐฉ | 1:1 ๋ํ ์ด๊ธฐยท๋ฐฉ ์์ฑ, ์ฐธ์ฌ์ยท๋ฐฉ ์ ๋ณด, ์ ๋ฌยท์ด๋ชจํฐ์ฝ, ๋๊ฐ๊ธฐยท์ฝ์ ํ์ |
| ๐ฅ ์น๊ตฌยทํ๋กํ | ์น๊ตฌ ๋๊ธฐํยท์ถ๊ฐ, ์ฐจ๋จยทํด์ , ํ๋กํ ์กฐํยท๋ณ๊ฒฝ |
| ๐ ์ด๋ฒคํธยท๊ธฐ๋ก | ๋ฉ์์ง ์ด๋ฒคํธ ์๋ น/์ฒ๋ฆฌ ํ์ธ, JSON/HTML ๋ด๋ณด๋ด๊ธฐ, ๋งํฌ ์์ง, ์ผ์ ยทํ ์ผ ํ๋ณด ์ถ์ถ, ๋ณด๊ด ๊ธฐ๋ก ๊ฒ์ |
| ๐ ํต์ | ๋ฐฉ๋ณ ์ฝ๊ธฐ/์ ์ก ๊ถํ, ์ผํ์ฑ ์น์ธ, ํ์ธ ์ฐฝยทํจ์คํค, ๊ถํ ์ฒ ํ, ๋ฐ์ ยท๋ณ๊ฒฝ ์ผ์์ ์ง |
| ๐ฅ ์ฌ์ฉ์ ํ๋ฉด | ํฐ๋ฏธ๋ ๋ฉ์ ์ , ๋ช
๋ นํ ๋๊ตฌ, ๋ก์ปฌ ์น ๋ฉ์ ์ ์ ์น์ธยท๊ถํ ์ ์ดํ |
| โ๏ธ ์ด์ | Linux/systemd ์ค์น, SSH ์ฐ๊ฒฐ, ์ง๋จยท์ธ์ฆ ๋ณต๊ตฌ, ๊ด๋ฆฌํ ์
๋ฐ์ดํธ |
### MCP ๋๊ตฌ ๋ชฉ๋ก
๊ธฐ๋ณธ 16๊ฐ์ ์ ํ ๋ฌถ์ 25๊ฐ๋ฅผ ๋ํ๋ฉด ์ด 41๊ฐ์
๋๋ค. **๋ฌถ์์ ์ผ๋ ๊ฒ๊ณผ ๋ฐฉ ์ ๊ทผ ๊ถํ์ ์ฃผ๋ ๊ฒ์ ๋ณ๊ฐ์
๋๋ค.**
| ๋ฌถ์ | ๋๊ตฌ |
|---|---|
| **๊ธฐ๋ณธ (16)** | `get_status`, `list_chats`, `find_chat`, `list_friends`, `read_messages`, `preview_unread`, `download_attachment`, `send_message`, `send_photos`, `edit_or_delete_message`, `list_permissions`, `revoke_permission`, `request_permission`, `pause`, `wait_for_approval`, `get_operation` |
| `chats` (10) | `open_direct_chat`, `create_direct_chat`, `get_members`, `get_chat_meta`, `self_delete_messages`, `forward_message`, `send_emoticon`, `leave_chat`, `set_chat_meta`, `mark_read` |
| `friends` (8) | `sync_friends`, `list_blocked_users`, `get_my_profile`, `get_friend_profile`, `update_my_profile`, `block_user`, `unblock_user`, `add_friend` |
| `events` (2) | `claim_message_events`, `ack_message_events` |
| `vault` (5) | `export_chat_history`, `collect_shared_links`, `extract_schedule_and_todos`, `search_vault`, `get_vault_stats` |
๋๊ตฌ๋ณ ์์ธ ๊ณ์ฝ์ [MCP ๋๊ตฌ์ ๊ถํ ๊ณ์ฝ](docs/tool-contract.md)์ ์์ต๋๋ค.
---
## ์ค์น์ ์ฌ์ฉ๋ฒ
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/diagrams/install-steps-dark.png">
<img alt="์ค์น 4๋จ๊ณ: ์๋ฒ์ ํจํค์ง ์ค์น โ ํด๋ํฐ์ผ๋ก ๋ก๊ทธ์ธ ์น์ธ โ AI ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ โ ์นยทํฐ๋ฏธ๋์์ ์ฌ์ฉ" src="docs/diagrams/install-steps-light.png">
</picture>
> [!NOTE]
> ์ด ๋ฒ์ ์ npm ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ์ง ์์์ต๋๋ค. ์๋ ๋ช
๋ น์ ๋ก์ปฌ ํจํค์ง `kakao-mcp-ccomajeon-0.2.0-rebuild.3.tgz`๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ผ์ด ์๋ค๋ฉด ๋จผ์ [์์ค ๊ฐ๋ฐ๊ณผ ํจํค์ง ๋น๋](#์์ค-๊ฐ๋ฐ๊ณผ-ํจํค์ง-๋น๋)์ ๋ช
๋ น์ผ๋ก ๋ง๋์ธ์.
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ํจํค์ง๋ช
| `kakao-mcp-ccomajeon` |
| ์คํ ๋ช
๋ น | `kakao-mcp` (๊ฐ์ ๋์์ `kakao-mcp-ccomajeon`๋ ์ฌ์ฉ ๊ฐ๋ฅ) |
| ์๋ฒ ๋ฐ์ดํฐ ๊ฒฝ๋ก | `/var/lib/kakao-mcp` |
| ์๋น์ค | `kakao-mcp.service` |
| ํด๋ผ์ด์ธํธ ์ค์ | `~/.config/kakao-mcp/mcp.json` |
| MCP ๋ฑ๋ก ํค | `kakao-mcp` |
| ๊ธฐ๋ณธ ํฌํธ | ๋ฐ๋ชฌ `8787` ยท ์น `8899` (๋ชจ๋ loopback) |
> [!WARNING]
> ์ด๋ฒ ๋ฒ์ ์ ์๋น์คยท์ค์ ยท๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ์ด๋ฆ์ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๋ฏธ ์ค์นํ ์๋ฒ๋ ๊ธฐ์กด ์๋น์ค๋ฅผ ๊ทธ๋๋ก ๋ ์ฑ ์ ์ค์น๋ฅผ ์คํํ์ง ๋ง์ธ์. ๋ฐ์ดํฐ ๊ฒฝ๋ก์ ์๋น์ค ๊ณ์ ์ ํ์ธํ ๋ค ์ด์์๊ฐ ์ด์ ํด์ผ ํ๋ฉฐ, ์ด ํจํค์ง๋ ๊ธฐ์กด ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์๋ ์ด๋ํ๊ฑฐ๋ ์๋น์ค๋ฅผ ์๋ ์ค์งํ์ง ์์ต๋๋ค.
### 1. ์๋ฒ ์ค๋น์ ์ค์น
์๋ฒ์๋ Linux/systemd, Git, sudo, Node.js 22.18 ์ด์๊ณผ npm์ด ํ์ํฉ๋๋ค. Node๋ ์๋น์ค ๊ณ์ ์์๋ ์คํํ ์ ์๋ ์์คํ
๊ฒฝ๋ก์ ์ค์นํ์ธ์. ์ฌ์ฉ์ ํ์ nvm ์ค์น๋ systemd ์๋น์ค์์ ์ ๊ทผ์ด ๋งํ ์ ์์ต๋๋ค. Windows/macOS์์๋ ๊ธฐ์กด Linux ์๋ฒ์ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ๋ก ์ฌ์ฉํฉ๋๋ค.
ํจํค์ง ํ์ผ์ ์๋ฒ๋ก ์ฎ๊ธฐ๊ณ , ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ์์ ์คํํฉ๋๋ค.
```bash
node --version
npm --version
sudo npm install --global --prefix /usr/local ./kakao-mcp-ccomajeon-0.2.0-rebuild.3.tgz
/usr/local/bin/kakao-mcp --version
/usr/local/bin/kakao-mcp setup
```
๋ฒ์ ์ `0.2.0-rebuild.3`์ด์ด์ผ ํฉ๋๋ค. `setup`์ ์ผ๋ฐ ์ฌ์ฉ์๋ก ์์ํ๊ณ , ์ค์น ๊ณผ์ ์์ ํ์ํ sudo ์์ฒญ์ ์๋ตํ์ธ์.
๋ง๋ฒ์ฌ์์ ๋ค์ ์์๋ก ์งํํฉ๋๋ค.
1. <b>์ Linux ์๋ฒ ์ค์น(2)</b>๋ฅผ ์ ํํฉ๋๋ค.
2. ํฌํธ๋ ๊ธฐ๋ณธ๊ฐ `8787`์ ์ฌ์ฉํ๊ฑฐ๋ ์ํ๋ ํฌํธ๋ฅผ ์ง์ ํฉ๋๋ค.
3. ์นด์นด์ค ๊ณ์ ์ ๋ณด๋ฅผ ํฐ๋ฏธ๋์ ์
๋ ฅํ๊ณ ํด๋ํฐ์ ๋ก๊ทธ์ธยท๊ธฐ๊ธฐ ์ธ์ฆ ์์ฒญ์ ์ง์ ์น์ธํฉ๋๋ค.
4. ์๋ ์ฌ๋ก๊ทธ์ธ ์ ๋ณด ์ ์ฅ ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค. ์์ด์ ํธ ๋ชจ๋๋ ์ฒ์์๋ ๊ธฐ๋ณธ **ask**๋ฅผ ์ ์งํฉ๋๋ค.
5. ํ์๋ ์ค์น ๋ด์ฉ์ ํ์ธํ๊ณ ์๋น์ค ๋ฑ๋กยท์์์ ์น์ธํฉ๋๋ค.
์ค์น ๊ฒฝ๋ก๋ `/var/lib/kakao-mcp`, ์๋น์ค๋ `kakao-mcp.service`์
๋๋ค. ๊ณ์ ํ๋์ ์ฐ๊ฒฐ์ ์ด ์๋น์ค ํ๋๊ฐ ์ ์งํฉ๋๋ค. ์ค์น ํ ๊ฐ์ ๊ณ์ ์ผ๋ก `kakao-mcp-mcp`๋ฅผ ๋ณ๋๋ก ์คํํ์ง ๋ง์ธ์.
```bash
systemctl status kakao-mcp --no-pager
kakao-mcp setup --doctor
```
ํ์ฌ ๋ฒ์ ์ ์ค์ ๊ณ์ ๋ก๊ทธ์ธยท์ก์์ ์ ์์ง ๊ฒ์ฆํ์ง ์์์ต๋๋ค. ์์คํ
์ค์นยท๋ก๊ทธ์ธ ๊ณผ์ ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์๋ ์ง๋จ ๋ช
๋ น์ผ๋ก ํ์ธํ์ธ์.
### 2. CodexยทClaude ๋ฑ AI์ ์ฐ๊ฒฐ
| ์ํฉ | ํ ์ผ |
|---|---|
| **AI๋ ๊ฐ์ ์๋ฒ์์ ์คํ** | ์ค์น ๋ง๋ฒ์ฌ๊ฐ ์ถ๋ ฅํ `codex mcp add ...` ๋๋ `claude mcp add ...` ๋ช
๋ น์ AI๋ฅผ ์ฐ๋ ์ฌ์ฉ์ ๊ณ์ ์์ ์คํํ๊ณ AI ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ์์ํฉ๋๋ค. |
| **AI๊ฐ ๋ค๋ฅธ ์ปดํจํฐ์์ ์คํ** | ๊ทธ ์ปดํจํฐ์๋ ๊ฐ์ `.tgz` ํ์ผ์ ์ค์นํฉ๋๋ค. ๋จผ์ SSH ํค ๋๋ SSH ์์ด์ ํธ๋ก ์๋ฒ์ ๋น๋ฐ๋ฒํธ ์ง๋ฌธ ์์ด ์ ์ํ ์ ์์ด์ผ ํฉ๋๋ค. |
```bash
npm install --global ./kakao-mcp-ccomajeon-0.2.0-rebuild.3.tgz
kakao-mcp setup
```
๋ง๋ฒ์ฌ์์ <b>๊ธฐ์กด ๋ฐ๋ชฌ ์ฐ๊ฒฐ(1)</b>์ ์ ํํ๊ณ `user@server` ๋๋ SSH ๋ณ์นญ๊ณผ ๋ฐ๋ชฌ ํฌํธ๋ฅผ ์
๋ ฅํฉ๋๋ค. ์ฌ๊ธฐ์ `user@server`๋ ์ค์ SSH ์ฌ์ฉ์ยท์๋ฒ ์ฃผ์๋ก ๋ฐ๊พธ์ธ์. ๋ง๋ฒ์ฌ๊ฐ ๋ง๋ `~/.config/kakao-mcp/mcp.json`๊ณผ ์ถ๋ ฅํ AI๋ณ ๋ฑ๋ก ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค. ์ ์ญ ์ค์น ์์น์ ์ฐ๊ธฐ ๊ถํ์ด ์๋ค๋ฉด ์์คํ
์ ์ญ ์ค์น ๊ถํ์ ์ฌ์ฉํ๊ฑฐ๋ ์ฐ๊ธฐ ๊ฐ๋ฅํ npm prefix๋ฅผ ์ค์ ํ์ธ์.
์ค์ JSON๋ง ํ์ํ๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค. `--config`๋ JSON์ ์ถ๋ ฅํ๋ฉฐ, ์ค์ ์ ์ฅ์ด๋ Codex ๋ฑ๋ก์ ์๋ ์ํํ์ง ์์ต๋๋ค.
```bash
# ๊ฐ์ ์ปดํจํฐ์ ๋ฐ๋ชฌ
kakao-mcp setup --config --listen 127.0.0.1:8787
# ๋ค๋ฅธ ์๋ฒ์ ๋ฐ๋ชฌ
kakao-mcp setup --config --ssh user@server --listen 127.0.0.1:8787
```
AI ํด๋ผ์ด์ธํธ ์ฌ์์ ํ ๋ค์๊ณผ ๊ฐ์ด ์์ฒญํ ์ ์์ต๋๋ค.
- ๐ฌ โ์นด์นด์คํก ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธํด ์ค.โ
- ๐ฌ โ๋ํ๋ฐฉ ๋ชฉ๋ก์ ๋ณด์ฌ ์ค.โ
- ๐ฌ โ๊ฐ๋ฐํ ๋ฐฉ์ ์ต๊ทผ ๋ํ๋ฅผ ์ฝ๊ณ ์์ฝํด ์ค.โ
- ๐ฌ โ๋์์ ์ฑํ
์ ํ
์คํธ ๋ฉ๋ชจ๋ฅผ ๋ณด๋ด ์ค.โ
์ฒ์ ์ ๊ทผํ๋ ๋ฐฉ์ ์ฝ๊ธฐยท์ ์ก์ ์ฌ๋์ด ์น์ธํฉ๋๋ค. ์ฝ์ ํ์๋ ๋ณ๋ ๊ถํ์
๋๋ค. ํ์ธ ์ฐฝ์ ์ง์ํ์ง ์๋ AI ํด๋ผ์ด์ธํธ๋ ํจ์คํค ์น์ธ ์ค์ ์ด ํ์ํ ์ ์์ต๋๋ค.
> [!TIP]
> ๋ด ์ปดํจํฐ์ Docker์์ ๋จผ์ ์ํํด ๋ณด๋ ค๋ฉด [Docker๋ก ๋ก์ปฌ์์ ์ํํ๊ธฐ](docs/runbooks/docker.md)๋ฅผ ๋ณด์ธ์. `docker compose -f docker/compose.yaml up -d --build`๋ก ๋์ฐ๊ณ ์ปจํ
์ด๋ ์์์ ๊ณ์ ์ ์ฐ๊ฒฐํฉ๋๋ค.
### 3. ์น ํ๋ฉด ๋๋ ํฐ๋ฏธ๋ ์ฌ์ฉ
์น ํ๋ฉด์ ์๋ ๋ช
๋ น์ **๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ ์ปดํจํฐ**์์ ์คํํฉ๋๋ค.
```bash
# ๊ฐ์ ์ปดํจํฐ์์ ์คํ ์ค์ธ ๋ฐ๋ชฌ ์ฌ์ฉ
kakao-mcp web
# ์๋ฒ์ ๋ฐ๋ชฌ์ SSH๋ก ์ฐ๊ฒฐ
kakao-mcp web --ssh user@server
```
ํฐ๋ฏธ๋์ ํ์๋ `http://127.0.0.1:8899/launch?t=...` ๋งํฌ๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์ฝ๋๋ค. ์คํ ๋งํฌ๋ ๋งค๋ฒ ๋ฐ๋๋ฉฐ ๋ก๊ทธ์ธ ๊ถํ์ ํฌํจํ๋ฏ๋ก ๊ณต์ ํ์ง ๋ง์ธ์. ํ๋ฉด์ ์คํ ๋งํฌ๋ก ์ฐ ํญ์์๋ง ๋์ํ๋ฏ๋ก, ์ ํญ์ด๋ ํ๋ฉด์ ๋ค์ ์์ํ ๋ค์๋ ๋งํฌ๋ฅผ ๋ค์ ์ฌ์ธ์. ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์ธ๋ถ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค์ง ์๊ณ ์ ๋ชฉยท์ค๋ช
๋ง ๋ณด์ฌ ์ค๋๋ค. ๋ฐ๋ชฌ ํฌํธ๊ฐ ๋ค๋ฅด๋ฉด `--listen 127.0.0.1:ํฌํธ`๋ฅผ ์ถ๊ฐํฉ๋๋ค.
ํฐ๋ฏธ๋ ๋ช
๋ น์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํํ ์ปดํจํฐ์ `127.0.0.1:8787` ๋ฐ๋ชฌ์ ์ฌ์ฉํฉ๋๋ค. ์๊ฒฉ ์๋ฒ๋ผ๋ฉด SSH๋ก ์๋ฒ์ ๋ก๊ทธ์ธํ ํ ์คํํ์ธ์.
```bash
kakao-mcp status # ์ฐ๊ฒฐ ์ํ
kakao-mcp list # ๋ํ๋ฐฉ ๋ชฉ๋ก
kakao-mcp chat # ํฐ๋ฏธ๋ ๋ฉ์ ์
kakao-mcp history "๋ํ๋ฐฉ ์ด๋ฆ" 20 # ์ต๊ทผ ๊ธฐ๋ก
kakao-mcp send self "ํ
์คํธ ๋ฉ๋ชจ" # ๋์์ ์ฑํ
์ ์ค์ ์ ์ก
kakao-mcp help # ์ ์ฒด ๋ช
๋ น ํ์ธ
```
์ผ๋ฐ ๋ฐฉ์์ ์น์ธ ํ์ ์ค๋ฅ๊ฐ ๋๋ฉด ์๋ด๋ ์น์ธ ์ ์ฐจ๋ฅผ ์งํํฉ๋๋ค. ์ ์ก ๊ฒฐ๊ณผ๊ฐ ๋ถ๋ช
ํํ๋ฉด ์ ์์ฒญ์ผ๋ก ๋ค์ ๋ณด๋ด์ง ๋ง๊ณ ๊ธฐ์กด `requestId`์ ์ํ๋ฅผ ํ์ธํ์ธ์.
### AI๊ฐ ํ ์ ์๋ ์ผ๊ณผ ์น์ธ ๋ฒ์
์ด ํ๋ก๊ทธ๋จ์ AI ๋ชจ๋ธ ์์ฒด๊ฐ ์๋๋ผ ์นด์นด์คํก ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ MCP ์๋ฒ์
๋๋ค. ์์ฝยท๋ต์ฅ ์์ฑยท์ผ์ ํ๋จ์ ์ฐ๊ฒฐํ AI๊ฐ ์ํํฉ๋๋ค. ๊ธฐ๋ณธ ๋๊ตฌ 16๊ฐ, ์ ํ ๋ฌถ์๊น์ง ์ผ๋ฉด ์ด 41๊ฐ์
๋๋ค.
| ๋ฒ์ | AI๊ฐ ํ ์ ์๋ ์ผ | ๊ธฐ๋ณธ `ask` ๋ชจ๋์ ์กฐ๊ฑด |
|---|---|---|
| ์ํยท๋ชฉ๋ก | ์ฐ๊ฒฐ ์ํ, ๋ํ๋ฐฉ ์ฐพ๊ธฐ, ์น๊ตฌยท๊ถํ ๋ชฉ๋ก ์กฐํ | ๋ณธ๋ฌธ ์ด๋๊ณผ ๋ณ๊ฐ์ด๋ฉฐ ๋ฐฉ ์ด๋ฆยท์น๊ตฌ ์ ๋ณด ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋
ธ์ถ๋ ์ ์์ |
| ๋ํ ์กฐํ | ๊ณผ๊ฑฐยท์ต๊ทผยท์ ๋ฉ์์ง ๋๊ธฐยท๊ฒ์, ์ ํ๋ ์ ์ฝ์ ๋ด์ฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ์ฒจ๋ถ ๋ค์ด๋ก๋ | ๋ฐฉ ์ฝ๊ธฐ ๊ท์น ๋๋ ์ผํ์ฑ ์ฌ๋ ์น์ธ. ์ฝ์ด๋ ์๋์ผ๋ก ์ฝ์ ์ฒ๋ฆฌํ์ง ์์ |
| ๋ฉ์์ง ์ ์ก | ํ
์คํธยท๋ต์ฅยท๋ฉ์
, ์ฌ์งยท๋ฌถ์ ์ฌ์งยทํ์ผ | ํด๋น ์์
๋๋ ๋ฐฉ์ ์ ์ก ํ๊ฐ ํ์. ๋ฐฉ ํ๊ฐ๋ฅผ ์ฃผ๋ฉด ์ดํ ๋ด์ฉ์ ์ผ์ผ ํ๋ ์์์ ๋ค์ ๋ฌป์ง ์๊ณ ๋ณด๋ผ ์ ์์ |
| ๋ฉ์์งยท๋ฐฉ ๋ณ๊ฒฝ (`chats` ํฌํจ) | ๋ณธ์ธ ๋ฉ์์ง ์์ ยท์ญ์ , ์ ๋ฌยท์ด๋ชจํฐ์ฝ, ๋ฐฉ ์ ๋ณด ๋ณ๊ฒฝ, ๋๊ฐ๊ธฐ, ์ฝ์ ํ์, ๋ํ๋ฐฉ ์ด๊ธฐยท์์ฑ | ์์
๋ณ ์น์ธ ๊ท์น ์ ์ฉ. ์ผ๋ฐ ๋ฉ์์ง ์ ์ก ํ๊ฐ๊ฐ ์ญ์ ยท๋๊ฐ๊ธฐ๊น์ง ํ์ฉํ์ง๋ ์์ |
| ์น๊ตฌยทํ๋กํ (`friends`) | ํ๋กํ ์กฐํยท๋ณ๊ฒฝ, ์น๊ตฌ ์ถ๊ฐ, ์ฐจ๋จยทํด์ | ๋ณ๊ฒฝ ์์
์ ์ฌ๋ ์น์ธ. ์น๊ตฌ ์ถ๊ฐ๋ ๊ธฐ๋ณธ ํ๋ฃจ 10ํ ์ํ |
| ์ด๋ฒคํธ (`events`) | ์ ๋ฉ์์ง ์ด๋ฒคํธ ์๋ นยท์ฒ๋ฆฌ ํ์ธ | ์ ๊ทผ ์ ์ฑ
์ ์ฉ. ์์ ์๋์๋ตยท์์ฝ์ ๋ณ๋ ์์ด์ ํธ ์คํ๊ธฐ ํ์ |
| ๊ธฐ๋ก ์ ๋ฆฌ (`vault`) | JSON/HTML ๋ด๋ณด๋ด๊ธฐ, ๋งํฌ ์์ง, ์ผ์ ยทํ ์ผ ํ๋ณด ์ถ์ถ, ์ง์ ํ ๋ฐฉ ๊ธฐ๋ก ๊ฒ์ | ๊ฐ ๋ฐฉ์ ์ฝ๊ธฐ ํ๊ฐ ํ์. ๋ด๋ณด๋ด๊ธฐ๋ ์๋ฒ์ ์ ํด์ง ๊ฒฝ๋ก์ ์ ์ฅ. ๋ณ๋ ์บ๋ฆฐ๋ ๋ฑ๋ก ๋๊ตฌ๋ ํฌํจํ์ง ์์ |
| ํต์ | ๊ถํ ์กฐํยท์ฒ ํ, ์์
์ํ ํ์ธ, ๋ฐ์ ยท๋ณ๊ฒฝ ์ผ์์ ์ง | ๊ถํ ์ถ์ยท์ ์ง๋ ์ฆ์, ๊ถํ ํ๋ยท์ ์ง ํด์ ๋ ์ฌ๋ ํ์ธ |
#### `ask`์ `trust` ๋น๊ต
| ํญ๋ชฉ | `ask` (๊ธฐ๋ณธ, ๊ถ์ฅ) | `trust` |
|---|---|---|
| ๋ฐฉ ๋ด์ฉ ์ฝ๊ธฐ | ๋ฐฉ๋ง๋ค ํ๊ฐ ๋๋ ์ผํ์ฑ ์น์ธ | ๋ช
์ํ `deny` ์ธ ๋ชจ๋ ํ์ฉ |
| ํ
์คํธยท์ฌ์ง ์ ์ก | ๋ฐฉ๋ง๋ค ์ฒ์ ํ ๋ฒ ์น์ธ | ๋ฐ๋ก |
| ๋ฌด์น์ธ ์ ์ก ํ๋ฃจ ํ๋ | ๊ธฐ๋ณธ 50ํ | ๋ช
์ํ์ง ์์ผ๋ฉด ์์ (์๋ ์ ํ์ ์ ์ง) |
| ์์ ยท์ญ์ ยท๋๊ฐ๊ธฐยท์ฐจ๋จยทํ๋กํ | ๋งค๋ฒ ํ์ธ | ๋ฐ๋ก |
| ๋ฐฉ ์์ฑยท๊ถํ ํ๋ยท์ ์ง ํด์ | ์ฌ๋ ํ์ธ | ์ฌ๋ ํ์ธ |
> [!CAUTION]
> `trust`์์๋ AI๊ฐ ๋ชจ๋ ๋ํ๋ฐฉ์ ์ฝ๊ณ ๋ฌป์ง ์๊ณ ๋ณด๋
๋๋ค. ๋ํ๋ฐฉ์ ๋ค๋ฅธ ์ฌ๋์ด ์ด ๋ฉ์์ง๊ฐ AI๋ฅผ ์กฐ์ข
ํ ์ ์์ต๋๋ค(ํ๋กฌํํธ ์ธ์ ์
). ๋ณธ์ธ ์ ์ฉ ๊ณ์ ์ด๋ ๊ฐ๋ฐ์ฉ์ผ๋ก๋ง ๊ถ์ฅํฉ๋๋ค.
<details>
<summary><b>์์๋ ๊ถํ ์์ธ์ ํ๊ณ</b></summary>
- ๋์์ ์ฑํ
์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๊ธฐยท์ ์กยท๋ณธ์ธ ๋ฉ์์ง ์์ /์ญ์ ์ ๋ณ๋ ์น์ธ์ด ์์ต๋๋ค. ๋ช
์ํ ์ฝ๊ธฐ ๊ท์น๊ณผ ์ด์์ ์ํ์ ์ ์ฉ๋ฉ๋๋ค.
- `trust` ๋ชจ๋๋ ๊ธฐ๋ณธ ์ฝ๊ธฐยท๋ฐ์ ๋ฟ ์๋๋ผ ์ ๋ฌ, ์์ ยท์ญ์ , ์ฝ์ ํ์, ๋ฐฉ ๋๊ฐ๊ธฐยท์ ๋ณด ๋ณ๊ฒฝ, ํ๋กํ ๋ณ๊ฒฝ, ์น๊ตฌ ์ถ๊ฐยท์ฐจ๋จยทํด์ ๋ ๊ฐ๋ณ ํ์ธ ์์ด ํ์ฉํฉ๋๋ค. ๋ฐฉ ์์ฑยท๊ถํ ํ๋ยท์ ์ง ํด์ ๋ฑ์ ๊ณ์ ์ฌ๋ ํ์ธ์ด ํ์ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ `ask`์ด๋ฉฐ ์ด๋ฒ ๊ฒ์ฌ์์ ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.
- `ask`์ ๋ฐฉ ์ ์ก ํ๊ฐ๋ ๊ธฐ๋ณธ ํ๋ฃจ 50ํ์ด๊ณ `trust`๋ ๋ช
์ํ์ง ์์ผ๋ฉด ์ผ์ผ ์ํ์ด ์์ต๋๋ค. ๋ ๋ชจ๋ ๋ชจ๋ ๋ณ๋ ์๋ ์ ํ์ ์ ์ฉ๋ฉ๋๋ค. ํ์ํ ํ๋๋ ์ด์์๊ฐ ๋ช
์ํ์ธ์.
- `KAKAO_ROOM_CEILING`์ ํ์ฉํ ๋ฐฉ ID๋ฅผ ์ ํํฉ๋๋ค. ๋ณด์ ์์ ๋ณธ์์๋ ๋ณธ๋ฌธ ์ด๋๊ณผ ๋ฐ์ ์ ์ ์ฉ๋๋ฉฐ, ๋ํ๋ฐฉยท์น๊ตฌ ๋ชฉ๋ก ์ ์ฒด๋ฅผ ์จ๊ธฐ๋ ๊ธฐ๋ฅ์ ์๋๋๋ค. `pause`๋ ๋ฐ์ ยท๊ณ์ ๋ณ๊ฒฝ์ ๋ฉ์ถ๋ ์ฉ๋์ด๋ฉฐ ๋ชจ๋ ์กฐํยท๋ก์ปฌ ์ ์ฅ์ ์ฐจ๋จํ๋ ์ค์์น๊ฐ ์๋๋๋ค.
- MCP ๋๊ตฌ๋ก ์ด์ ๋ชจ๋ยท์ํยท๊ธฐ๋ฅ ์ค์ ์ ์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋ฒ์ ์์ ํ์ผยท์
ธ์ ์คํํ๋ ๊ธฐ๋ฅ์ ์์ต๋๋ค. ๋ค๋ง AI์๊ฒ ๋ณ๋์ ์
ธ/SSH/ํ์ผ ๋๊ตฌ๋ ์ฃผ์๋ค๋ฉด ๊ทธ ๊ถํ์ ๋ณ๋๋ก ์ ํํด์ผ ํฉ๋๋ค.
- ํ์ฉ๋ ๋ํ ์กฐํ ๊ฒฐ๊ณผ๋ AI ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌ๋ฉ๋๋ค. ์ธ๋ถ ๋ชจ๋ธ์ ์ฐ๋ฉด ๊ทธ ์ ๊ณต์์๊ฒ ์ ๋ฌ๋ ์ ์์ผ๋ฏ๋ก ์ฐ๊ฒฐํ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ ์ค์ ์ ํ์ธํ์ธ์.
</details>
### 4. ์ ํ ๋๊ตฌ ๋ฌถ์๊ณผ ์ง๋จ
๊ธฐ๋ณธ MCP ๋๊ตฌ๋ 16๊ฐ์
๋๋ค. ์ ์ฒด 41๊ฐ ๋๊ตฌ๋ฅผ ๋
ธ์ถํ๋ ค๋ฉด ์๋ฒ์ `/var/lib/kakao-mcp/app/.env.local`์ ๋ค์ ์ค์ ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๊ฐ์ ์์ ํฉ๋๋ค. ํ์ผ ์์ ์์ ๋น๊ณต๊ฐ ๊ถํ์ ์ ์งํ์ธ์.
```dotenv
KAKAO_MCP_TOOL_GROUPS=chats,friends,events,vault
```
์ค์ ์ ์ฉ์๋ ๋ฐ๋ชฌ ์ฌ์์๊ณผ AI ์ฌ์ฐ๊ฒฐ์ด ํ์ํฉ๋๋ค. ์ฌ์์ํ๋ฉด ์คํ ์ค ์ผ์์ ์ง๊ฐ ํด์ ๋๋ฏ๋ก, ์์
์ํ๋ฅผ ํ์ธํ ๋ค ์ด์์๊ฐ ์คํํฉ๋๋ค.
```bash
sudo systemctl restart kakao-mcp
```
๋๊ตฌ ๋
ธ์ถ์ ๋ฐฉ ์ ๊ทผ ๊ถํ์ด๋ ์๋ ๋ณด๊ด ํ์ฉ์ ๋์ ํ์ง ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ค์ ๋ช
๋ น์ผ๋ก ํ์ธํฉ๋๋ค.
```bash
kakao-mcp setup --doctor
systemctl status kakao-mcp --no-pager
sudo journalctl -u kakao-mcp -n 80 --no-pager
```
์ธ์ฆ ์ ๋ณด ๋ณต๊ตฌ๊ฐ ํ์ํ๋ค๋ ์ง๋จ์ด ๋์ค๋ฉด ์๋ฒ์์ `kakao-mcp setup --repair`๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋น๋ฐ๋ฒํธยท์ธ์ฆ ์ฝ๋ยทํ ํฐ์ ์ฑํ
์ ๋ถ์ฌ ๋ฃ์ง ๋ง๊ณ ํด๋น ํฐ๋ฏธ๋์ด๋ ํด๋ํฐ์์ ์
๋ ฅํ์ธ์.
---
## ๋ณด์ ๊ฒ์ฌ ์์ฝ (2026-11-01, 2026-11-02 ์ถ๊ฐ)
๊ฒ์ฌ ๋์์ ์ ํ๋ฆฌ์ผ์ด์
์์คยท๊ฒฉ๋ฆฌ ํ
์คํธยท์์กด์ฑ์ด๋ฉฐ ์ค์ ๊ณ์ ๊ณผ ์ด์ ์๋ฒ ์นจํฌ ์ํ์ ํฌํจํ์ง ์์์ต๋๋ค. ํ์ธํ ์น์ธ ์ฌ์ฌ์ฉ, ๋ฐฉ ์ฝ๊ธฐ ์ํ ์ฐํ, ์ฌ์ง ํ์ ์ฝ๋ ์ฝ์
, ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ DNS ์ฌ๋ฐ์ธ๋ฉ ๋ฌธ์ ๋ฅผ ์์ ํ ๋ฒ์ ์ <b><code>0.2.0-rebuild.2</code></b>์
๋๋ค. ํ์ฌ ๋ฐฐํฌ์ธ `0.2.0-rebuild.3`์๋ ์ด ์์ ์ด ํฌํจ๋์ด ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ ํ์ธ ์ฐฝ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋์๊ฒ ์ค์ ๋ก ๋ฌผ์๋ค๋ ์ ์ ์ ์์กดํฉ๋๋ค. AI์ ์
ธ/SSH ์ ๊ทผ๊ณผ ์ฌ๋ ์น์ธ์ ๋ถ๋ฆฌํด์ผ ํ๋ค๋ฉด `KAKAO_APPROVAL_CLIENT_CONFIRM=off`์ ํจ์คํค ์น์ธ์ ๊ตฌ์ฑํ์ธ์. ํจ์คํค๊ฐ ์ค๋น๋๊ธฐ ์ ์ ๋๋ฉด ์น์ธ์ด ํ์ํ ์์
์ด ๋งํ๋๋ค. ๊ฐ์ OS ์ฌ์ฉ์๋ root์ ํ์ผ ์ ๊ทผ๊น์ง ๋ง์ง๋ ์์ต๋๋ค.
์ฑ ์์กด์ฑ์ `npm audit`์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ๊ฒ์ฌ ๋น์ 0๊ฑด์ด์์ต๋๋ค. ๊ฒ์ฌ ํต๊ณผ๊ฐ ๋ชจ๋ ๋ณด์ ๋ฌธ์ ์ ๋ถ์ฌ๋ฅผ ๋ณด์ฅํ์ง๋ ์์ต๋๋ค. ์์ ๋ด์ฉ๊ณผ ์ด์์ ๊ฒฝ๊ณ๋ [๋ณด์ ๊ฒ์ฌ ๋ฌธ์](docs/security-review.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
2026-11-02์ ๋ ํฌ ์ ์ฒด๋ฅผ ๋ค์ ๊ฒ์ฌํด ์น์ธ ํ๋ฉด์ ๋์ ๋ฐฉ ํ์, Linux ์ ์ ์ฌ์ฉ์ ํ์ธ, ์น์ธ ์ ๋ฉ์์ง ๋
ธ์ถ, ์น ํ๋ฉด ์ธ์
๋ณดํธ์ ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์, CLI ์ถ๋ ฅ์ ํฐ๋ฏธ๋ ์ ์ด๋ฌธ์, ์ผ์ ์ถ์ถ ์ง์ฐ, 1ํ ์ฝ๊ธฐ ํ๊ฐ ๊ฐ์, ์ฒจ๋ถ ๋ค์ด๋ก๋ ํฌ๊ธฐ ๋ฌธ์ ๋ฅผ ์ถ๊ฐ๋ก ์์ ํ์ต๋๋ค. ์ด ์์ ์ `main`์ ๋ฐ์๋์ด ์์ผ๋ฉฐ `0.2.0-rebuild.3` ํจํค์ง ํ์ผ์๋ ๋ค์ด ์์ง ์์ผ๋, ์์ค์์ ์๋ก `npm pack`ํ ํจํค์ง๋ฅผ ์ฐ์ธ์.
---
## ์์ค ๊ฐ๋ฐ๊ณผ ํจํค์ง ๋น๋
```bash
git clone https://github.com/ccomajeon/kakao-mcp-demon-ccomajeon.git
cd kakao-mcp-demon-ccomajeon
npm ci
npm test
npm run typecheck
npm run check:package
npm pack
```
`npm pack`์ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ `kakao-mcp-ccomajeon-0.2.0-rebuild.3.tgz`๋ฅผ ๋ง๋ญ๋๋ค. ์์ฑ๋ ํ์ผ์ ์๋ฒ๋ก ์ฎ๊ธด ํ ์ 1๋จ๊ณ์ ํจํค์ง ์ค์น ๋ช
๋ น์ ์ฌ์ฉํ์ธ์. GitHub์์ ์์ค ZIP/TAR ํ์ผ์ ๋ฐ์๋ค๋ฉด ๋จผ์ ์์ถ์ ํ๊ณ ๊ฐ์ npm ๋ช
๋ น์ ์คํํฉ๋๋ค. ์์ค ์์ถ๋ณธ์๋ `.git`์ด ์๊ณ , ๊ด๋ฆฌํ ์์ค ์ค์น๋ ๊นจ๋ํ `origin/main` ์ฒดํฌ์์๋ง ํ์ฉํ๋ฏ๋ก ์์ถ๋ณธ์์ `npm run setup`์ผ๋ก ์ ์๋ฒ๋ฅผ ์ค์นํ๋ ๋ฐฉ์์ ์ง์๋์ง ์์ต๋๋ค.
์ด๋ฏธ ์คํ ์ค์ธ ๋ฐ๋ชฌ์ ๊ฐ๋ฐ์ฉ ํด๋ผ์ด์ธํธ๋ฅผ ์ฐ๊ฒฐํ ๋๋ `npm run build --workspace=@kakao-mcp/protocol` ํ `npm run kakao -- status`, `npm run kakao -- chat`, `npm run web`์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
## ๊ฒ์ฆ ์ํ์ ์ง์ ๋ฒ์
| ํจํค์ง | ํ
์คํธ | ํต๊ณผ | ์คํจ | ๊ฑด๋๋ |
|---|--:|--:|--:|--:|
| ๋ฃจํธ (๊ณต๊ฐ ๊ธ์ง์ด ๊ฒ์ฌ) | 4 | 4 | 0 | 0 |
| `@kakao-mcp/protocol` | 78 | 78 | 0 | 0 |
| `@kakao-mcp/core` | 308 | 307 | 0 | 1 |
| `@kakao-mcp/client` | 25 | 25 | 0 | 0 |
| `@kakao-mcp/mcp` | 198 | 194 | 0 | 4 |
| `@kakao-mcp/cli` | 48 | 48 | 0 | 0 |
| `@kakao-mcp/web` | 73 | 73 | 0 | 0 |
| **ํฉ๊ณ** | **734** | **729** | **0** | **5** |
2026-11-02 ๋ณด์ ์์ ๋ฐ์ ํ Linux(Node 22) ์ปจํ
์ด๋์์ ์ธก์ ํ ๊ฒฐ๊ณผ์ด๋ฉฐ `npm run typecheck`์ `npm run check:package`๋ ํต๊ณผํ์ต๋๋ค. ๊ฑด๋๋ด ๊ฒ์ฌ๋ ์คํ ํ๊ฒฝ์ด ๋ง์ง ์์ ์๋์ผ๋ก ๋น ์ง ๊ฒ์ผ๋ก, systemd ๊ฒฉ๋ฆฌ, ์ค์ ์๋น์ค ๊ณ์ ์ค์น, SSH ๋์ ์ฐ๊ฒฐ, Windows ์ ์ฉ ๋์ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
> [!IMPORTANT]
> ์ค์ ๊ณ์ ๋ก๊ทธ์ธยทํด๋ํฐ ์ธ์ฆยท์ค์๋น์ค ์ก์์ ์ ์์ง ๊ฒ์ฆํ์ง ์์์ต๋๋ค. ์๋ ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ํด๋น ํ๊ฒฝ์ ์ค์ ์ด์ ๊ฒ์ฆ์ผ๋ก ํด์ํ์ง ๋ง์ธ์.
ํ์ฌ ๋ฒ์ ์ npm ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ์ง ์์์ต๋๋ค. ์์ ์๋ดํ ๋ก์ปฌ `.tgz` ํ์ผ๋ก ์ค์นํฉ๋๋ค.
GitHub Actions๋ ๋จ์ยทํ์
ยทํจํค์งยท๊ณต๊ฐ ํ์ผ ๊ฒ์ฌ๋ฅผ ์คํํฉ๋๋ค. `KAKAO_MCP_DENYLIST` ์ ์ฅ์ Secret์ ์ค์ ํ๋ฉด ๋น๊ณต๊ฐ ๊ธ์ง์ด ๋ชฉ๋ก๋ ๊ฒ์ฌํ๋ฉฐ, ๋ฏธ์ค์ ์ ๊ณต๊ฐ ํจํด๋ง ๊ฒ์ฌํฉ๋๋ค. npm ๊ฒ์ ์ํฌํ๋ก๋ ๋ณ๋ ํ๊ฒฝ ์น์ธยทtrusted publishing ๊ตฌ์ฑ์ด ํ์ํ๋ฉฐ ์์ค ์
๋ก๋๋ง์ผ๋ก npm์ ๊ฒ์๋์ง ์์ต๋๋ค.
## ๋ ์ฝ์๊ฑฐ๋ฆฌ
| ๋ฌธ์ | ๋ด์ฉ |
|---|---|
| [์์ํ๊ธฐ](docs/QUICKSTART.md) | ์ค์น๋ถํฐ AI ์ฐ๊ฒฐ๊น์ง ๋จ๊ณ๋ณ ์๋ด, AI ํด๋ผ์ด์ธํธ ํธํ ๋ชฉ๋ก |
| [MCP ๋๊ตฌ์ ๊ถํ ๊ณ์ฝ](docs/tool-contract.md) | ๋๊ตฌ๋ณ ๋์, ์น์ธยท์ฌ์๋ ๊ท์น, ๋ฆฌ์์ค ๊ตฌ๋
|
| [์์ด์ ํธ ๋ชจ๋์ ์ค์ ๋ ์ด์ด](docs/designs/agent-mode-and-layers.md) | `ask`/`trust` ์ค๊ณ, ๋ ์ด์ด ๊ตฌ์กฐ, ๋ฐฑ์
์์น |
| [๊ธฐ๋ฅ ๋งคํธ๋ฆญ์ค](docs/agent-capability-matrix.md) | ๊ธฐ๋ฅ๋ณ ๊ฒ์ฆ ์์ค (์ค๊ณ์ โ
/ ๋จ์ ๐ก / ๋ฏธ๊ฒ์ฆ โ) |
| [๋ณด์ ๊ฒ์ฌ](docs/security-review.md) | ์์ ํ ์ทจ์ฝ์ ๊ณผ ์ด์์ ๊ฒฝ๊ณ |
## ๋ผ์ด์ ์ค
MIT ๋ผ์ด์ ์ค์
๋๋ค. ์์ธํ ๋ด์ฉ์ [LICENSE](LICENSE)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Kakao์ ๊ณต์ ์ ํ์ด ์๋๋ฉฐ Kakao์ ์ ํดํ๊ฑฐ๋ ์น์ธ์ ๋ฐ์ ํ๋ก์ ํธ๊ฐ ์๋๋๋ค. KakaoTalk ๋ฐ ๊ด๋ จ ์ํ์ ๊ถ๋ฆฌ๋ ๊ฐ ๊ถ๋ฆฌ์์๊ฒ ์์ต๋๋ค.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessOutdated data