miridev-mcp
Version:
Model Context Protocol server and CLI for deploying websites to miri.dev using natural language
397 lines (291 loc) โข 9.42 kB
Markdown
# miri.dev MCP Server ์ฌ์ฉ๋ฒ
## ๐ ๋น ๋ฅธ ์์
### 1๋จ๊ณ: ์ค์น
```bash
cd mcp
./install.sh
```
### 2๋จ๊ณ: Claude Desktop ์ฌ์์
์ค์น ํ Claude Desktop์ ์์ ํ ์ข
๋ฃํ๊ณ ๋ค์ ์์ํ์ธ์.
### 3๋จ๊ณ: ํ
์คํธ
Claude์์ ๋ค์๊ณผ ๊ฐ์ด ๋งํด๋ณด์ธ์:
```
ํํ์ด์ง๋ฅผ miri.dev์ ๋ฐฐํฌํ๋ผ
```
## ๐ฏ ์ฌ์ฉ ์์
### ๊ธฐ๋ณธ ๋ฐฐํฌ
**๊ฐ๋จํ ๋ช
๋ น:**
```
ํ์ฌ ํด๋๋ฅผ miri.dev์ ๋ฐฐํฌํด์ค
```
**๊ฒฐ๊ณผ:**
- ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ์น ํ์ผ์ ์ค์บ
- ์๋์ผ๋ก ๋ก๊ทธ์ธ ์ฒ๋ฆฌ (ํ์ํ ๊ฒฝ์ฐ)
- ํ์ผ ์
๋ก๋ ๋ฐ ๋ฐฐํฌ URL ์ ๊ณต
### ํน์ ํด๋ ๋ฐฐํฌ
**๋ช
๋ น:**
```
./my-website ํด๋๋ฅผ miri.dev์ ์ฌ๋ ค์ค
```
**๊ฒฐ๊ณผ:**
- `./my-website` ํด๋ ๋ด์ฉ์ ๋ฐฐํฌ
- ์๋ ๊ฒฝ๋ก์ ์ ๋ ๊ฒฝ๋ก ๋ชจ๋ ์ง์
### ์ฌ์ดํธ ์ด๋ฆ ์ง์
**๋ช
๋ น:**
```
ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ฐฐํฌํ๊ณ ์ฌ์ดํธ๋ช
์ portfolio๋ก ํด์ค
```
**๊ฒฐ๊ณผ:**
- ์ฌ์ดํธ ์ด๋ฆ์ด "portfolio"๋ก ์ค์ ๋จ
- URL์ ์ฌ์ดํธ๋ช
์ด ๋ฐ์๋ ์ ์์
## ๐ฏ Current Artifact ์ง์ ์ฐ๊ฒฐ (ํ ํฐ ์๋น ์์)
### 1. ํ์ฌ Artifact ๋ฑ๋ก
```javascript
// Claude Desktop์์ artifact ์์ฑ ํ ๋ฑ๋ก
register_current_artifact({
artifactId: "artifact_1234567890",
projectName: "Interactive Todo App",
description: "React๋ก ๋ง๋ ํ ์ผ ๊ด๋ฆฌ ์ฑ"
})
```
### 2. ๋ฑ๋ก๋ Artifact ์ง์ ๋ฐฐํฌ
```javascript
// HTML ๋ด์ฉ์ ์ง์ ์ ๋ฌํด์ ํ ํฐ ์๋น ์์ด ๋ฐฐํฌ
deploy_current_artifact({
artifactId: "artifact_1234567890"
})
```
### 3. MCP Resource๋ก ์ ๊ทผ
```javascript
// ๋ฑ๋ก๋ artifact๋ค์ด ์๋์ผ๋ก Resource๋ก ๋
ธ์ถ๋จ
// URI: artifact://artifact_1234567890
// ๋ค๋ฅธ ๋๊ตฌ์์ ํ ํฐ ์๋น ์์ด ์ฐธ์กฐ ๊ฐ๋ฅ
```
## ๐ ์ํฌํ๋ก์ฐ ์์
### A. ์ค์๊ฐ ๊ฐ๋ฐ & ๋ฐฐํฌ
```javascript
// 1. Claude์์ ์น์ฑ artifact ์์ฑ
// 2. artifact ID ํ์ธ (์: artifact_1234567890)
// 3. MCP์ ๋ฑ๋ก
register_current_artifact({
artifactId: "artifact_1234567890",
projectName: "My Web App"
})
// 4. ์ฆ์ ๋ฐฐํฌ (ํ ํฐ ์๋น ์์)
deploy_current_artifact({
artifactId: "artifact_1234567890"})
```
### B. Resource ๊ธฐ๋ฐ ์ฐธ์กฐ
```javascript
// 1. Resource ๋ชฉ๋ก ํ์ธ
// โ artifact://artifact_1234567890 ๋ฐ๊ฒฌ
// 2. ๋ฉํ๋ฐ์ดํฐ ์ฝ๊ธฐ (ํ ํฐ ์๋น ์์)
// โ ํ๋ก์ ํธ๋ช
, ์ค๋ช
, ๋ฑ๋ก์๊ฐ ๋ฑ ํ์ธ
// 3. ๋ค๋ฅธ ๋๊ตฌ์์ ์ฐธ์กฐ
// โ URI๋ก ์ง์ ์ฐ๊ฒฐ ๊ฐ๋ฅ
```
## ๐ ํต์ฌ ์ฅ์
- **ํ ํฐ ์์ ์ ์ฝ**: Resource ๋ฑ๋ก/์ฝ๊ธฐ๋ ํ ํฐ ์๋น ์์
- **์ค์๊ฐ ๋๊ธฐํ**: ํ์ฌ ์ธ์
artifact์ ์ง์ ์ฐ๊ฒฐ
- **์๋ ๊ฐ์ง**: artifact ์์ฑ ์ ์ฆ์ ๋ฑ๋ก ๊ฐ๋ฅ
- **ํฌ๋ช
ํ ์ ๊ทผ**: ์ผ๋ฐ MCP Resource๋ก ํ์ฉ ๊ฐ๋ฅ
## ๐ง ์ง์ํ๋ ๋ช
๋ น์ด
### ๋ฐฐํฌ ๊ด๋ จ
| ์์ฐ์ด ๋ช
๋ น | ๊ธฐ๋ฅ |
|------------|------|
| "ํํ์ด์ง๋ฅผ miri.dev์ ๋ฐฐํฌํ๋ผ" | ๊ธฐ๋ณธ ๋ฐฐํฌ |
| "ํ์ฌ ํด๋๋ฅผ ๋ฐฐํฌํด์ค" | ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ฐฐํฌ |
| "./docs ํด๋๋ฅผ ์ฌ๋ ค์ค" | ํน์ ํด๋ ๋ฐฐํฌ |
| "์ฌ์ดํธ๋ช
์ blog๋ก ํด์ ๋ฐฐํฌํด์ค" | ์ด๋ฆ ์ง์ ๋ฐฐํฌ |
| **"์ด ํํ์ด์ง๋ฅผ ๋ฐฐํฌํด์ค"** ๐จ | **Artifact ์ง์ ๋ฐฐํฌ** |
| **"์์ ์ฝ๋๋ฅผ miri.dev์ ์ฌ๋ ค์ค"** ๐ | **HTML ์ฆ์ ๋ฐฐํฌ** |
### ์ํ ํ์ธ
| ์์ฐ์ด ๋ช
๋ น | ๊ธฐ๋ฅ |
|------------|------|
| "miri.dev ์ํ๋ฅผ ํ์ธํด์ค" | ์ ์ฒด ์ํ ํ์ธ |
| "๋ก๊ทธ์ธ ์ํ ์๋ ค์ค" | ์ธ์ฆ ์ํ๋ง ํ์ธ |
| "๋ฐฐํฌ ๊ธฐ๋ก์ ๋ณด์ฌ์ค" | ์ต๊ทผ ๋ฐฐํฌ ์ ๋ณด |
### ์ธ์ฆ ๊ด๋ฆฌ
| ์์ฐ์ด ๋ช
๋ น | ๊ธฐ๋ฅ |
|------------|------|
| "miri.dev์ ๋ก๊ทธ์ธํด์ค" | ๋ก๊ทธ์ธ |
| "๋ค์ ๋ก๊ทธ์ธ ํด์ค" | ๊ฐ์ ์ฌ๋ก๊ทธ์ธ |
## ๐ ๋ฐฐํฌ ๊ณผ์ ์์ธ
### ๐จ Artifact ์ง์ ๋ฐฐํฌ (NEW!)
Claude๊ฐ ๋ง๋ ์ฝ๋๋ฅผ ์ฆ์ ๋ฐฐํฌํ๋ ์๋ก์ด ๋ฐฉ์:
```
๐ Artifact "my-website"๋ฅผ ์ง์ ๋ฐฐํฌ์ค์
๋๋ค...
โ
CSS ๋ด์ฉ์ HTML์ ์๋ฒ ๋ํ์ต๋๋ค
โ
JavaScript ๋ด์ฉ์ HTML์ ์๋ฒ ๋ํ์ต๋๋ค
๐ฆ ์์ถ๋ ๋ฐ์ดํฐ ์ค๋น: ์๋ณธ 15284B -> ์์ถ 2847B (81.4% ์ ์ฝ)
๐ Artifact ๋ฐฐํฌ ์ฑ๊ณต!
๐ ์ฌ์ดํธ URL: https://a1b2c3d4.miri.dev
๐ ํ๋ก์ ํธ๋ช
: my-website
๐ ์ฌ์ดํธ ID: a1b2c3d4
โฐ ๋ฐฐํฌ ์๊ฐ: 2024๋
12์ 24์ผ ์คํ 11:30:00
๐ ํ์ผ ์: 1๊ฐ
โณ ๋ง๋ฃ์ผ: 2024๋
12์ 27์ผ ์คํ 11:30:00
โจ Claude Artifact๊ฐ ์ฑ๊ณต์ ์ผ๋ก miri.dev์ ๋ฐฐํฌ๋์์ต๋๋ค!
๐ฏ ๋ฐ๋ก ์ ์ํด์ ํ์ธํด๋ณด์ธ์: https://a1b2c3d4.miri.dev
```
#### ๐๏ธ ๊ณ ๊ธ ์์ถ ๊ธฐ๋ฅ
- **gzip ์์ถ**: ๋์ฉ๋ HTML/CSS/JS๋ 3์ด ๋ด ๋ฐฐํฌ
- **์๋ ์ต์ ํ**: ํ๊ท 80% ์ด์ ๋ฐ์ดํฐ ์ ์ฝ
- **FormData ํ๊ณ ํด๊ฒฐ**: ๋ณต์กํ Artifact๋ ๋ฌธ์ ์์ด ์ฒ๋ฆฌ
- **Base64 ์ธ์ฝ๋ฉ**: ์์ ํ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ ์ก
### ๐ ์ผ๋ฐ ํ์ผ ๋ฐฐํฌ
### 1. ์ธ์ฆ ํ์ธ
```
๐ ์ธ์ฆ ์ํ๋ฅผ ํ์ธํฉ๋๋ค...
โ
์ด๋ฏธ ๋ก๊ทธ์ธ๋์ด ์์ต๋๋ค.
```
### 2. ํ์ผ ์ค์บ
```
๐ ํ์ผ์ ์ค์บ์ค์
๋๋ค...
๐ ๋ฐ๊ฒฌ๋ ํ์ผ: 15๊ฐ
```
### 3. ์์ ์ฑ ๊ฒ์ฌ
```
โ ๏ธ ์์ ํ์ง ์์ ํ์ผ๋ช
์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค:
โ ํ๊ธํ์ผ.txt โ โ
1703123456789abc.txt
โ
ํ์ผ๋ช
์ด ์์ ํ๊ฒ ๋ณ๊ฒฝ๋์์ต๋๋ค.
```
### 4. ์
๋ก๋
```
๐ค ํ์ผ์ ์
๋ก๋์ค์
๋๋ค...
โ
์
๋ก๋ ์๋ฃ!
```
### 5. ๊ฒฐ๊ณผ
```
๐ ๋ฐฐํฌ ์ฑ๊ณต!
๐ ์ฌ์ดํธ URL: https://a7b8c9d0.miri.dev
โฐ ๋ฐฐํฌ ์๊ฐ: 2024๋
1์ 15์ผ ์คํ 3:30:00
๐ ๋ฐฐํฌ๋ ํ์ผ: 15๊ฐ
์น์ฌ์ดํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ฐฐํฌ๋์์ต๋๋ค! ๐
```
## ๐ ์ธ์ฆ ๊ณผ์
### ์๋ ๋ก๊ทธ์ธ
์ธ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋ก๊ทธ์ธ ํ๋ก์ธ์ค๊ฐ ์์๋ฉ๋๋ค:
```
๐ miri.dev ๋ก๊ทธ์ธ
๊ฐ๋ฐ์ฉ ๊ณ์ :
- hongbuzz@gmail.com / 123
- test@miri.dev / 123
- admin@miri.dev / admin123
? ์ด๋ฉ์ผ: hongbuzz@gmail.com
? ๋น๋ฐ๋ฒํธ: [์
๋ ฅ]
โ
๋ก๊ทธ์ธ ์ฑ๊ณต!
Hong Buzz(hongbuzz@gmail.com)๋ก ์ฑ๊ณต์ ์ผ๋ก ๋ก๊ทธ์ธ๋์์ต๋๋ค.
ํ๋: basic
ํ ํฐ ๋ง๋ฃ์ผ: 2024๋
2์ 14์ผ
```
### ํ ํฐ ๊ด๋ฆฌ
- ํ ํฐ์ 30์ผ๊ฐ ์ ํจํฉ๋๋ค
- ๋ง๋ฃ๋ ํ ํฐ์ ์๋์ผ๋ก ๊ฐ์ง๋์ด ์ฌ๋ก๊ทธ์ธ์ ์์ฒญํฉ๋๋ค
- ์ธ์ฆ ์ ๋ณด๋ `~/.miridev/auth.json`์ ์์ ํ๊ฒ ์ ์ฅ๋ฉ๋๋ค
## ๐ ํ์ผ ์ฒ๋ฆฌ
### ์ง์ํ๋ ํ์ผ ํ์
- **HTML**: `*.html`
- **์คํ์ผ**: `*.css`
- **์คํฌ๋ฆฝํธ**: `*.js`
- **๋ฐ์ดํฐ**: `*.json`, `*.txt`, `*.md`
- **์ด๋ฏธ์ง**: `*.png`, `*.jpg`, `*.jpeg`, `*.gif`, `*.svg`, `*.ico`
- **ํฐํธ**: `*.woff`, `*.woff2`, `*.ttf`, `*.eot`
### ์๋ ์ ์ธ ํ์ผ
- `node_modules/` ํด๋
- `.git/` ํด๋
- ์จ๊น ํ์ผ (`.`์ผ๋ก ์์)
- `.DS_Store`, `Thumbs.db`
### ํ์ผ๋ช
์์ ํ
์์ ํ์ง ์์ ํ์ผ๋ช
์ ์๋์ผ๋ก ๋ณํ๋ฉ๋๋ค:
| ์๋ณธ ํ์ผ๋ช
| ๋ณํ๋ ํ์ผ๋ช
|
|------------|-------------|
| `ํ๊ธํ์ผ.txt` | `1703123456789abc.txt` |
| `file with space.css` | `1703123456790def.css` |
| `ํน์๋ฌธ์!@#.js` | `1703123456791ghi.js` |
## ๐ ๋ฌธ์ ํด๊ฒฐ
### ์ผ๋ฐ์ ์ธ ์ค๋ฅ
#### 1. index.html ์์
```
โ ๋ฐฐํฌ ์คํจ
์ค๋ฅ ๋ด์ฉ: index.html ํ์ผ์ด ํ์ํฉ๋๋ค. ํ๋ก์ ํธ ๋ฃจํธ์ index.html์ ๋ง๋ค์ด์ฃผ์ธ์.
```
**ํด๊ฒฐ์ฑ
:** ํ๋ก์ ํธ ๋ฃจํธ์ `index.html` ํ์ผ์ ์์ฑํ์ธ์.
#### 2. ๋ก๊ทธ์ธ ์คํจ
```
โ ๋ก๊ทธ์ธ ์คํจ: ์ด๋ฉ์ผ ๋๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.
```
**ํด๊ฒฐ์ฑ
:** ๊ฐ๋ฐ์ฉ ๊ณ์ ์ ๋ณด๋ฅผ ํ์ธํ์ธ์:
- hongbuzz@gmail.com / 123
- test@miri.dev / 123
- admin@miri.dev / admin123
#### 3. ํ์ผ์ ์ฐพ์ ์ ์์
```
โ ๋ฐฐํฌ ์คํจ
์ค๋ฅ ๋ด์ฉ: ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค: ./nonexistent
```
**ํด๊ฒฐ์ฑ
:** ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ธ์.
### ๊ณ ๊ธ ๋ฌธ์ ํด๊ฒฐ
#### ์ธ์ฆ ์ ๋ณด ์ด๊ธฐํ
```bash
rm ~/.miridev/auth.json
```
#### ์ค์ ํ์ผ ํ์ธ
```bash
# macOS
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Windows
type %APPDATA%\Claude\claude_desktop_config.json
```
#### MCP ์๋ฒ ์ง์ ํ
์คํธ
```bash
cd mcp
node src/index.js
```
## ๐ ์ํ ํ์ธ ๋ช
๋ น
### ์ ์ฒด ์ํ
```
๐ miri.dev ์ํ ํํฉ
๐ ์ธ์ฆ ์ํ: โ
๋ก๊ทธ์ธ๋จ
๐ค ์ฌ์ฉ์: Hong Buzz (hongbuzz@gmail.com)
๐ ํ๋: basic
๐ ์ต๊ทผ ๋ฐฐํฌ ์ ๋ณด
๐ URL: https://a7b8c9d0.miri.dev
๐ ์ฌ์ดํธ ID: a7b8c9d0
โฐ ๋ฐฐํฌ ์๊ฐ: 2024๋
1์ 15์ผ ์คํ 3:30:00
๐ ํ์ผ ์: 15๊ฐ
๐ฅ miri.dev ์๋น์ค ์ํ: ๐ข ์ ์
๐ง ์๋น์ค ๋ฒ์ : 1.0.0
```
## ๐จ ๊ณ ๊ธ ์ฌ์ฉ๋ฒ
### ํ๋ก์ ํธ๋ณ ์ค์
๊ฐ ํ๋ก์ ํธ์ `.miridev.json` ํ์ผ์ ๋ง๋ค์ด ์ค์ ์ ์ ์ฅํ ์ ์์ต๋๋ค:
```json
{
"siteName": "my-awesome-site",
"ignore": [
"*.log",
"temp/*"
],
"build": {
"command": "npm run build",
"directory": "dist"
}
}
```
### ๋ฐฐ์น ๋ฐฐํฌ
์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค:
```
./project1, ./project2, ./project3 ํด๋๋ค์ ๋ชจ๋ miri.dev์ ๋ฐฐํฌํด์ค
```
## ๐ ์ฐธ๊ณ ์๋ฃ
- [miri.dev CLI ๋ฌธ์](../cli/USAGE.md)
- [Model Context Protocol ๊ณต์ ๋ฌธ์](https://modelcontextprotocol.io/)
- [Claude Desktop ์ค์ ๊ฐ์ด๋](https://claude.ai/docs/desktop)
## ๐ ์ง์
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด:
1. ์ด ๋ฌธ์์ ๋ฌธ์ ํด๊ฒฐ ์น์
์ ํ์ธํ์ธ์
2. [miri.dev](https://www.miri.dev)์์ ์ง์์ ์์ฒญํ์ธ์
3. GitHub Issues์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ์ธ์
---
๐ ์ฆ๊ฑฐ์ด ๋ฐฐํฌ ๋์ธ์!