PM Agent MCP(Model Context Protocol) ์๋ฒ๋ ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฐ ๋ค์ํ AI ์์ด์ ํธ ์กฐ์ ์ ์ํ JSON-RPC 2.0 ๊ธฐ๋ฐ ์๋ฒ์ ๋๋ค.
- ํ๋ก์ ํธ ๋ฐ ํ์คํฌ ๊ด๋ฆฌ
- ๋ค์ํ AI ์์ด์ ํธ ๊ด๋ฆฌ (PM, ๋์์ด๋, ํ๋ก ํธ์๋, ๋ฐฑ์๋, AI ์์ง๋์ด)
- ๋ฐ์ดํฐ ์ง์์ฑ (๋ก์ปฌ ํ์ผ ์ ์ฅ)
- Cursor ํธ์ง๊ธฐ์์ ํตํฉ
# ์ ์ฅ์ ๋ณต์
git clone https://github.com/your-username/pmagent-mcp-server.git
cd pmagent-mcp-server
# ์์กด์ฑ ์ค์น
pip install -r requirements.txt# ์๋ฒ ์คํ
python server.py์๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก http://localhost:8082์์ ์คํ๋ฉ๋๋ค.
- ๋ฉ์ธ API:
/api- JSON-RPC 2.0 ์์ฒญ ์ฒ๋ฆฌ - ๋ฃจํธ:
/- ์๋ฒ ์ํ ํ์ธ
request_planning: ์ ์์ฒญ ๋ฑ๋ก ๋ฐ ํ์คํฌ ๊ณํget_next_task: ๋ค์ ๋๊ธฐ ์ค์ธ ํ์คํฌ ๊ฐ์ ธ์ค๊ธฐmark_task_done: ํ์คํฌ ์๋ฃ ์ฒ๋ฆฌapprove_task_completion: ํ์คํฌ ์๋ฃ ์น์ธapprove_request_completion: ์ ์ฒด ์์ฒญ ์๋ฃ ์น์ธ
create_session: ์ ์ธ์ ์์ฑexport_data: ์ธ์ ๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ (JSON ํ์)import_data: ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
create_agent: ์ ์์ด์ ํธ ์์ฑget_agent: ์์ด์ ํธ ์ ๋ณด ์กฐํlist_agents: ์์ด์ ํธ ๋ชฉ๋ก ์กฐํassign_task_to_agent: ์์ด์ ํธ์ ํ์คํฌ ํ ๋นget_agent_result: ์์ด์ ํธ ํ์คํฌ ๊ฒฐ๊ณผ ์กฐํ
PMAgent MCP ์๋ฒ๋ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ ํ์ผ ์์คํ ์ JSON ํ์์ผ๋ก ์ ์ฅํฉ๋๋ค.
- ์ธ์
๋ฐ์ดํฐ:
api/data/sessions/{session_id}.json
export_data: ํ์ฌ ์ธ์ ๋ฐ์ดํฐ๋ฅผ JSON์ผ๋ก ๋ด๋ณด๋ด๊ณ ํ์ผ๋ก ์ ์ฅimport_data: ํ์ผ์์ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ (ํ๋ผ๋ฏธํฐ: "fromFile": true)
์์ธํ ๋ด์ฉ์ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
PMAgent MCP ์๋ฒ๋ Cursor ํธ์ง๊ธฐ์์ ํตํฉ์ ์ง์ํฉ๋๋ค. Cursor์ ๋ด์ฅ MCP ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ์๋ฒ์ ์ฐ๊ฒฐํ๊ณ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- PMAgent MCP ์๋ฒ ์คํ
- Cursor์์
MCP: Add Server๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์๋ฒ ๋ฑ๋ก (http://localhost:8082) - ๋ฉ์๋ ํธ์ถ ๋ฐ ์์ด์ ํธ ํ์ฉ
์์ธํ ๋ด์ฉ์ ํตํฉ ๊ณํ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฐ ์กฐ์ ์ ๋ด๋นํฉ๋๋ค. ์๊ตฌ์ฌํญ์ ๋ถ์ํ๊ณ ํ์คํฌ๋ฅผ ๊ณํํฉ๋๋ค.
UI/UX ๋์์ธ์ ์์ฑํฉ๋๋ค. ์ปดํฌ๋ํธ, ํ๋ฉด, ํ ๋ง ๋ฑ์ ๋์์ธํฉ๋๋ค.
์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌํ์ ๋ด๋นํฉ๋๋ค. ๋์์ด๋์ ๊ฒฐ๊ณผ๋ฌผ์ ์ฝ๋๋ก ๊ตฌํํฉ๋๋ค.
์๋ฒ ์ธก ๋ก์ง ๋ฐ API๋ฅผ ๊ตฌํํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ๋ฐํฉ๋๋ค.
AI ๊ธฐ๋ฅ ๋ฐ ๋ชจ๋ธ์ ํตํฉํฉ๋๋ค.
- API ๋ฌธ์
- ์์ด์ ํธ ์์คํ
- ๋ฐ์ดํฐ ์ ์ฅ์
- Cursor ํตํฉ ๊ณํ
- CLI ์ฌ์ฉ๋ฒ
- ์ค์น ๊ฐ์ด๋
- ๋ก๋๋งต
MIT
ํ๋ก์ ํธ์ ๋ชจ๋ ์ค์ ์ config.json ํ์ผ์ ํตํฉ๋์ด ์์ต๋๋ค:
{
"url": "https://successive-glenn-contentscoin-34b6608c.koyeb.app",
"apiKey": "0c8f6386-e443-4b8b-95ba-22a40d5f5e38",
"mcpUrl": "https://successive-glenn-contentscoin-34b6608c.koyeb.app/mcp",
"localUrl": "http://localhost:4000/api/mcp",
"environments": {
"production": "https://successive-glenn-contentscoin-34b6608c.koyeb.app",
"local": "http://localhost:4000/api/mcp"
},
"client": {
// MCP ํด๋ผ์ด์ธํธ ์ค์ ...
}
}MCP ์๋ฒ๋ฅผ ํ ์คํธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ธ์:
# ํ๋ก๋์
์๋ฒ ํ
์คํธ
npm run test:mcp
# ๋ก์ปฌ ์๋ฒ ํ
์คํธ
npm run test:mcp:local์ด ์คํฌ๋ฆฝํธ๋ MCP ์๋ฒ์ ์ฐ๊ฒฐํ์ฌ ๋ค์ ์์ ์ ์ํํฉ๋๋ค:
- ์๋ฒ ์ ๋ณด ํ์ธ
- ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
- ํ๋ก์ ํธ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
- ํ ์คํธ ํ๋ก์ ํธ ๋ฐ ํ์คํฌ ์์ฑ
PMAgent MCP Server๋ฅผ Cursor์ ๋ฑ๋กํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ธ์:
# ๊ฐ๋จํ ์ค๋ฏธ๋๋ฆฌ ๋ฑ๋ก (๊ถ์ฅ)
npm run smithery:simple
# ๊ธฐ์กด ๋ฐฉ์์ ๋ฑ๋ก
npm run smithery:register
# ๋ก์ปฌ ์๋ฒ ๋ชจ๋๋ก ๋ฑ๋ก
npm run smithery:local
# ๊ธฐ์กด ์ค์น ์ ๊ฑฐ ํ ์ฌ์ค์น
npm run smithery:reinstall
# ์ค๋ฏธ๋๋ฆฌ ์ค์ ํ์ผ ์ ๊ฑฐ (๋ฌธ์ ํด๊ฒฐ์)
npm run smithery:clean๋ง์ฝ ์คํฌ๋ฆฝํธ๋ฅผ ํตํ ๋ฐฉ๋ฒ์ด ์คํจํ๋ค๋ฉด, smithery_install_commands.txt ํ์ผ์ ์๋ ๋ช
๋ น์ด๋ฅผ ํฐ๋ฏธ๋์์ ์ง์ ์คํํด๋ณด์ธ์.
์ถ๊ฐ ์ต์ ์ ๋ค์ ๋ช ๋ น์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค:
node register_smithery.js --helpconfig.json: ๋ฉ์ธ ์ค์ ํ์ผ๋ก URL๊ณผ API ํค ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.smithery-simple.json: Smithery ์๋ฒ ์์ธ ์ค์ ์ ํฌํจํฉ๋๋ค.
์ค๋ฏธ๋๋ฆฌ ๋ฑ๋ก ์ค "No connection configuration found" ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์๋ํ์ธ์:
- ์ค๋ฏธ๋๋ฆฌ ์ค์ ์ด๊ธฐํ:
npm run smithery:clean - ๊ฐ๋จํ ๋ฑ๋ก ์คํฌ๋ฆฝํธ ์ฌ์ฉ:
npm run smithery:simple - Cursor๋ฅผ ์ฌ์์ํ ํ ์ค๋ฏธ๋๋ฆฌ๊ฐ ์ ์์ ์ผ๋ก ํ์๋๋์ง ํ์ธ