tallpizza/dooray-mcp
3.2
If you are the rightful owner of dooray-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Dooray MCP Server integrates Dooray API with Claude Code using the Model Context Protocol (MCP) server.
Tools
5
Resources
0
Prompts
0
Dooray MCP Server
Dooray API๋ฅผ Claude Code์ ์ฐ๋ํ๊ธฐ ์ํ MCP (Model Context Protocol) ์๋ฒ์ ๋๋ค.
๊ธฐ๋ฅ
์ด MCP ์๋ฒ๋ Dooray์ ์ฃผ์ ๊ธฐ๋ฅ์ 6๊ฐ์ ํตํฉ ๋๊ตฌ๋ก ์ ๊ณตํฉ๋๋ค:
- dooray_tasks - ์ ๋ฌด ๊ด๋ฆฌ (๋ชฉ๋ก ์กฐํ, ์์ธ ์กฐํ, ์์ฑ, ์์ , ์ญ์ , ์ํ ๋ณ๊ฒฝ, ๋ด๋น์ ์ง์ )
- dooray_comments - ๋๊ธ ๊ด๋ฆฌ (๋ชฉ๋ก ์กฐํ, ์์ฑ, ์์ , ์ญ์ , ๋ฉ์ ์ง์)
- dooray_tags - ํ๊ทธ ๊ด๋ฆฌ (๋ชฉ๋ก ์กฐํ, ์์ฑ, ์ ๋ฌด์ ํ๊ทธ ์ถ๊ฐ/์ ๊ฑฐ)
- dooray_search - ๊ฒ์ ๊ธฐ๋ฅ (์ ๋ฌด ๊ฒ์, ๋ด๋น์๋ณ/์ํ๋ณ/ํ๊ทธ๋ณ/๊ธฐ๊ฐ๋ณ ๊ฒ์)
- dooray_members - ์ฌ์ฉ์ ๊ด๋ฆฌ (์ด๋ฉ์ผ/ID ๊ฒ์, ์ฌ์ฉ์ ์ ๋ณด ์กฐํ, ํ๋ก์ ํธ ๋ฉค๋ฒ ๋ชฉ๋ก)
- dooray_files - ํ์ผ ๋ฐ ์ด๋ฏธ์ง ๊ด๋ฆฌ (์ ๋ฌด ํ์ผ ๋ชฉ๋ก, ํ์ผ ๋ฉํ๋ฐ์ดํฐ, ํ์ผ ์ฝํ ์ธ ๋ค์ด๋ก๋, Content ID๋ก ์ง์ ์ ๊ทผ)
๋น ๋ฅธ ์ค์น
GitHub์์ ์๋ ์ค์น
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/tallpizza/dooray-mcp.git
cd dooray-mcp
# 2. ์๋ ์ค์น ์คํฌ๋ฆฝํธ ์คํ
./install.sh
# 3. ํ๊ฒฝ ๋ณ์ ์ค์ (.env ํ์ผ ์์ )
# DOORAY_API_TOKEN๊ณผ DOORAY_DEFAULT_PROJECT_ID๋ฅผ ์ค์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ
# 4. Claude Code์ ์ถ๊ฐ
claude mcp add-json dooray "$(cat .mcp.json | jq -c .dooray)"
์์ธ ์ค์น ๋ฐ ์ค์
1. GitHub์์ ์ค์น
# GitHub์์ ํ๋ก์ ํธ ํด๋ก
git clone https://github.com/tallpizza/dooray-mcp.git
cd dooray-mcp
# ์ข
์์ฑ ์ค์น
uv sync
2. ํ๊ฒฝ ๋ณ์ ์ค์
.env
ํ์ผ์ ์์ฑํ๊ณ ๋ค์ ๋ด์ฉ์ ์ค์ ํฉ๋๋ค:
# .env.example์ ๋ณต์ฌ
cp .env.example .env
# .env ํ์ผ ๋ด์ฉ
DOORAY_API_TOKEN=your-actual-dooray-api-token
DOORAY_BASE_URL=https://api.dooray.com
DOORAY_DEFAULT_PROJECT_ID=your-default-project-id
LOG_LEVEL=INFO
3. Claude Code MCP ์๋ฒ ์ถ๊ฐ
๋ฐฉ๋ฒ 1: JSON์ผ๋ก ์ถ๊ฐ (๊ถ์ฅ)
# ํ๊ฒฝ ๋ณ์๋ฅผ ํฌํจํ ์์ ํ ์ค์
claude mcp add-json dooray '{
"type": "stdio",
"command": "uv",
"args": ["run", "python", "-m", "dooray_mcp.server"],
"env": {
"DOORAY_API_TOKEN": "your-actual-dooray-api-token",
"DOORAY_BASE_URL": "https://api.dooray.com",
"DOORAY_DEFAULT_PROJECT_ID": "your-default-project-id"
}
}'
๋ฐฉ๋ฒ 2: ์ค์ ํ์ผ ์ฌ์ฉ
# .mcp.json ์ค์ ํ์ผ ์ค๋น
cp .mcp.json.example .mcp.json
# ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ๊ฐ์ผ๋ก ์์
# Claude Code์์ ์ฌ์ฉ
claude --mcp-config .mcp.json
4. ์ฐ๊ฒฐ ํ์ธ
# MCP ์๋ฒ ๋ชฉ๋ก ํ์ธ
claude mcp list
# Dooray ์๋ฒ๊ฐ โ Connected๋ก ํ์๋๋์ง ํ์ธ
5. ๋๊ตฌ ํ ์คํธ
# ์
๋ฌด ๋ชฉ๋ก ์กฐํ ํ
์คํธ
claude --print "dooray_tasks๋ฅผ ์ฌ์ฉํด์ ์
๋ฌด ๋ชฉ๋ก์ ์กฐํํด์ฃผ์ธ์."
# ๋๊ธ ์์ฑ ํ
์คํธ
claude --print "dooray_comments๋ฅผ ์ฌ์ฉํด์ ๋๊ธ์ ์์ฑํด์ฃผ์ธ์."
์ฌ์ฉ๋ฒ
๋๊ตฌ๋ณ ์ฌ์ฉ ์์
1. dooray_tasks (์ ๋ฌด ๊ด๋ฆฌ)
// ์
๋ฌด ๋ชฉ๋ก ์กฐํ
{
"action": "list",
"projectId": "project-123" // ์ ํ์ฌํญ (ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ ๊ฐ๋ฅ)
}
// ์
๋ฌด ์์ฑ
{
"action": "create",
"projectId": "project-123",
"title": "์ ์
๋ฌด",
"description": "์
๋ฌด ์ค๋ช
",
"priority": "normal"
}
2. dooray_comments (๋๊ธ ๊ด๋ฆฌ)
// ๋๊ธ ์์ฑ (๋ฉ์
ํฌํจ)
{
"action": "create",
"taskId": "task-456",
"content": "๋๊ธ ๋ด์ฉ",
"mentions": ["user1", "user2"] // ์ ํ์ฌํญ
}
3. dooray_tags (ํ๊ทธ ๊ด๋ฆฌ)
// ์ ํ๊ทธ ์์ฑ
{
"action": "create",
"projectId": "project-123",
"tagName": "๊ธด๊ธ",
"tagColor": "#FF0000" // # ํฌํจ ๊ฐ๋ฅ, ์๋์ผ๋ก ์ ๊ฑฐ๋จ
}
// ์
๋ฌด์ ํ๊ทธ ์ถ๊ฐ
{
"action": "add_to_task",
"taskId": "task-456",
"tagName": "๊ธด๊ธ"
}
4. dooray_search (๊ฒ์ ๊ธฐ๋ฅ)
// ์
๋ฌด ํ
์คํธ ๊ฒ์
{
"searchType": "tasks",
"projectId": "project-123",
"query": "๋ฒ๊ทธ ์์ "
}
// ์ํ๋ณ ๊ฒ์
{
"searchType": "by_status",
"projectId": "project-123",
"status": "์๋ฃ"
}
5. dooray_members (์ฌ์ฉ์ ๊ด๋ฆฌ)
// ์ด๋ฉ์ผ๋ก ์ฌ์ฉ์ ๊ฒ์
{
"action": "search_by_email",
"email": "user@company.com"
}
// ํ๋ก์ ํธ ๋ฉค๋ฒ ๋ชฉ๋ก
{
"action": "list_project_members",
"projectId": "project-123"
}
6. dooray_files (ํ์ผ ๋ฐ ์ด๋ฏธ์ง ๊ด๋ฆฌ)
// ์
๋ฌด ํ์ผ ๋ชฉ๋ก ์กฐํ
{
"action": "list_task_files",
"taskId": "task-456",
"projectId": "project-123" // ์ ํ์ฌํญ (ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ ๊ฐ๋ฅ)
}
// ์
๋ฌด ํ์ผ ๋ฉํ๋ฐ์ดํฐ ์กฐํ
{
"action": "get_task_file_metadata",
"taskId": "task-456",
"fileId": "file-789",
"projectId": "project-123"
}
// ์
๋ฌด ํ์ผ ์ฝํ
์ธ ๋ค์ด๋ก๋ (base64 ์ธ์ฝ๋ฉ)
{
"action": "get_task_file_content",
"taskId": "task-456",
"fileId": "file-789",
"projectId": "project-123"
}
// Content ID๋ก ์ง์ ํ์ผ ๋ฉํ๋ฐ์ดํฐ ์กฐํ (Drive API)
{
"action": "get_drive_file_metadata",
"fileId": "content-id-xyz"
}
// Content ID๋ก ์ง์ ํ์ผ ์ฝํ
์ธ ๋ค์ด๋ก๋ (Drive API)
{
"action": "get_drive_file_content",
"fileId": "content-id-xyz"
}
API ์ ๋ณด
- Base URL:
https://api.dooray.com
- ์ธ์ฆ:
Authorization: dooray-api {TOKEN}
- ์
๋ฌด ๊ด๋ฆฌ:
/project/v1/projects/{projectId}/posts
- ๋๊ธ ๊ด๋ฆฌ:
/project/v1/projects/{projectId}/posts/{taskId}/logs
- ํ๊ทธ ๊ด๋ฆฌ:
/project/v1/projects/{projectId}/tags
- ์ฌ์ฉ์ ๊ด๋ฆฌ:
/common/v1/members
- ํ์ผ ๊ด๋ฆฌ:
/project/v1/projects/{projectId}/posts/{taskId}/files
- Drive ํ์ผ:
/drive/v1/files/{fileId}
๋ฌธ์ ํด๊ฒฐ
์ฐ๊ฒฐ ๋ฌธ์
- ์ธ์ฆ ์ค๋ฅ:
DOORAY_API_TOKEN
์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธ - ํ๋ก์ ํธ ID ์ค๋ฅ:
DOORAY_DEFAULT_PROJECT_ID
๊ฐ ์กด์ฌํ๋ ํ๋ก์ ํธ์ธ์ง ํ์ธ - ๊ถํ ์ค๋ฅ: API ํ ํฐ์ด ํด๋น ํ๋ก์ ํธ์ ๋ํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธ
MCP ์ฐ๊ฒฐ ๋ฌธ์
- ์๋ฒ ์ฐ๊ฒฐ ์คํจ:
claude mcp list
์์ ์ํ ํ์ธ - ๋๊ตฌ ์ธ์ ์คํจ: MCP ์๋ฒ ์ฌ์์ ๋๋ Claude Code ์ฌ์์
- ๊ถํ ๋ฌธ์ :
--dangerously-skip-permissions
ํ๋๊ทธ ์ฌ์ฉ (๊ฐ๋ฐ ํ๊ฒฝ์์๋ง)
๊ฐ๋ฐ ๋ฐ ๊ธฐ์ฌ
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ผ์ค ํ์ ๋ฐฐํฌ๋๋ฉฐ, ๋ฒ๊ทธ ๋ฆฌํฌํธ์ ๊ธฐ๋ฅ ์์ฒญ์ ํ์ํฉ๋๋ค.
๋ฒ์ ์ ๋ณด
- ๋ฒ์ : 1.0.0
- Python: 3.8+
- MCP: 1.0.0+
- HTTP ํด๋ผ์ด์ธํธ: httpx 0.25.0+