๐งฉ Model Context Protocol (MCP) & Serena MCP ์ ๋ฆฌ
Claude์ Serena MCP ์ฐ๋ ๊ฐ๋ ๋ฐ ์ค์น/์ค์ ๊ฐ์ด๋
1. MCP๋?
MCP (Model Context Protocol) ์ Anthropic(Claude ๊ฐ๋ฐ์ฌ)์ด ์ ์ํ
AI ๋ชจ๋ธ๊ณผ ์ธ๋ถ ๋ฆฌ์์ค(ํ์ผ, DB, API ๋ฑ)๊ฐ ํ์คํ๋ ๋ฐฉ์์ผ๋ก ์ํธ์์ฉํ๋๋ก ํ๋ ์คํ ํ๋กํ ์ฝ์ด๋ค.
๐ก ํต์ฌ ๋ชฉ์
- AI ๋ชจ๋ธ์ด ์ธ๋ถ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ ์ ์๊ฒ ํจ
- ๊ธฐ์กด์ โ์ปค์คํ ํ๋ฌ๊ทธ์ธ/ํด ์ฐ๊ฒฐ ๋ฌธ์ (NรM)โ๋ฅผ ํ๋์ ํตํฉ ์ธํฐํ์ด์ค๋ก ๋จ์ํ
๐ง ์ฃผ์ ํน์ง
| ํญ๋ชฉ | ์ค๋ช | |โโ|โโ| | ํต์ ๋ฐฉ์ | JSON-RPC 2.0 ๊ธฐ๋ฐ ์๋ฐฉํฅ ํต์ | | ๊ตฌ์กฐ | ํด๋ผ์ด์ธํธ(๋ชจ๋ธ) โ MCP ์๋ฒ(๋ฆฌ์์ค ์ ๊ณต์) | | ๋ณด์ | ๋ช ์์ ๊ถํ ์์ฒญ / ์น์ธ ๊ธฐ๋ฐ ์ ๊ทผ | | ํ์ฉ ๋ฒ์ | ํ์ผ ์ฝ๊ธฐ, API ํธ์ถ, ๋ฐ์ดํฐ ์กฐํ, ์ฝ๋๋ฒ ์ด์ค ๋ถ์ ๋ฑ |
2. MCP์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+----------------+
| Claude / LLM | โ ํด๋ผ์ด์ธํธ
+--------+-------+
|
| JSON-RPC ์์ฒญ (MCP ํ๋กํ ์ฝ)
โ
+--------+-------+
| MCP Server | โ ์ธ๋ถ ๋ฆฌ์์ค ์ ๊ทผ ์๋ฒ
| (์: Serena) |
+--------+-------+
|
โ
+----------------+
| Files / DB / APIs |
+----------------+
3. Serena MCP๋?
Serena MCP๋ MCP ํ์ค์ ๊ตฌํํ ์ฝ๋๋ฒ ์ด์ค ๋ถ์์ฉ ์๋ฒ์ด๋ค.
Claude Code ๋๋ Claude Desktop ๋ฑ๊ณผ ์ฐ๋๋์ด,
AI๊ฐ ํ๋ก์ ํธ์ ์ ์ฒด ์ฝ๋๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ์ดํดํ ์ ์๊ฒ ๋๋๋ค.
๐งฐ Serena MCP์ ์ญํ
| ๊ธฐ๋ฅ | ์ค๋ช | |โโ|โโ| | ์ฝ๋ ์ธ๋ฑ์ฑ | ํ๋ก์ ํธ ์ ์ฒด ํ์ผ์ ์ค์บํ๊ณ , ํจ์/ํด๋์ค ๊ด๊ณ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์คํ | | ์ฐธ์กฐ ์ถ์ | ํจ์ ํธ์ถ ๊ด๊ณ, ํด๋์ค ์์, ๋ณ์ ์ฐธ์กฐ ๋ฑ์ ์ถ์ | | ๋น ๋ฅธ ๊ฒ์ | Claude์ ์์ฒญ์ ๋ง์ถฐ ๊ด๋ จ ์ฝ๋๋ ํ์ผ์ ์ฆ์ ๋ฐํ | | ๋ฌธ๋งฅ ๊ด๋ฆฌ | ๋๊ท๋ชจ ์ฝ๋์์ ๋ชจ๋ธ์ด ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๋ฒ์๋ฅผ ๊ด๋ฆฌ | | MCP ํต์ | Claude์ JSON-RPC๋ก ๋ช ๋ น/์๋ต ์ฒ๋ฆฌ |
4. Claude Code + Serena MCP ์ฐ๊ฒฐ ํ๋ฆ
1
2
3
4
5
6
7
8
9
10
11
์ฌ์ฉ์ ์์ฒญ
โ
Claude Code (ํด๋ผ์ด์ธํธ)
โ
[MCP ์์ฒญ]
โ
Serena MCP (์๋ฒ)
โ
์ฝ๋๋ฒ ์ด์ค / ํ์ผ ์์คํ
์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ฌป๋๋ค๋ฉด:
โ
UserServiceํด๋์ค๊ฐ ์ด๋์ ์ฌ์ฉ๋๋์?โ
- Claude Code๊ฐ MCP ์์ฒญ์ ๋ณด๋
- Serena MCP๊ฐ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํ์
- ํธ์ถ ์์น๋ฅผ ์ฐพ์ JSON ์๋ต
- Claude Code๊ฐ ์์ฐ์ด๋ก ๊ฒฐ๊ณผ๋ฅผ ์์ฝํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค
5. Serena MCP ์ค์น ์์ฝ (์์)
1
2
3
4
5
6
7
8
9
10
11
12
13
# 1๏ธโฃ ์ ์ฅ์ ํด๋ก
git clone https://github.com/oraios/serena
cd serena
# 2๏ธโฃ ์์กด์ฑ ์ค์น (uv ์ฌ์ฉ)
uv sync
# 3๏ธโฃ MCP ์๋ฒ ์คํ
uv run --directory /path/to/serena serena-mcp-server --context ide-assistant
# 4๏ธโฃ Claude Code์ ์๋ฒ ๋ฑ๋ก
claude mcp add serena -- \
uvx --from git+https://github.com/oraios/serena serena-mcp-server --context ide-assistant
โ๏ธ ์ค์ ํ์ผ: ~/.serena/serena_config.yml
1
2
web_dashboard: false
read_only: true
6. Claude โ Serena ์ฐ๋ ์ค์
๐งฉ ์ ์ญ ์ค์ (๊ถ์ฅ)
Claude Desktop์ MCP ์๋ฒ ๋ชฉ๋ก์ ์ ์ญ ํ์ผ(servers.json)๋ก ๊ด๋ฆฌํ๋ค.
Mac ์์ ๊ฒฝ๋ก:
1
~/Library/Application Support/Claude/servers.json
Linux ์์ ๊ฒฝ๋ก:
1
~/.config/Claude/servers.json
โ๏ธ ์์ ์ค์
1
2
3
4
5
6
7
8
9
10
11
12
{
"servers": [
{
"id": "serena",
"name": "Serena MCP Server",
"command": "uv",
"args": ["run", "--directory", "/Users/you/serena", "serena", "start-mcp-server"],
"env": {},
"autoStart": true
}
]
}
Claude๋ฅผ ์ฌ์์ํ๋ฉด ์๋์ผ๋ก Serena MCP ์๋ฒ๋ฅผ ๊ฐ์งํ๊ณ ์ฐ๊ฒฐํ๋ค.
โSerena MCP Server connectedโ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ์ฑ๊ณต ๐
7. ๊ณ ๊ธ ์ค์ (์ ํ ์ฌํญ)
๐ง ์ฌ๋ฌ ํ๋ก์ ํธ์์ ๋ค๋ฅธ Serena ์ธ์คํด์ค ์ฌ์ฉํ๊ธฐ
๊ธฐ๋ณธ์ ์ผ๋ก servers.json์ ์ ์ญ ์ค์ ์ด์ง๋ง, ์๋ก ๋ค๋ฅธ ํ๋ก์ ํธ๋ณ๋ก ๋ค๋ฅธ Serena ์๋ฒ๋ฅผ ๋ฑ๋กํ ์๋ ์๋ค.
์์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"servers": [
{
"id": "serena-dev",
"name": "Serena (Dev)",
"command": "uv",
"args": ["run", "--directory", "/Users/you/dev/serena", "serena", "start-mcp-server"]
},
{
"id": "serena-prod",
"name": "Serena (Prod)",
"command": "uv",
"args": ["run", "--directory", "/Users/you/prod/serena", "serena", "start-mcp-server"]
}
]
}
๋๋ ํ๊ฒฝ๋ณ์ ๊ธฐ๋ฐ์ผ๋ก๋ ์ง์ ๊ฐ๋ฅํ๋ค.
1
2
3
4
5
6
7
8
9
10
{
"servers": [
{
"id": "serena",
"name": "Serena (Dynamic)",
"command": "uv",
"args": ["run", "--directory", "$SERENA_PATH", "serena", "start-mcp-server"]
}
]
}
1
2
3
# ํ๋ก์ ํธ๋ณ๋ก ํ๊ฒฝ๋ณ์ ์ค์ ํ ์คํ
export SERENA_PATH=/Users/you/myproject/serena
claude &
8. ์ฅ์ ๋ฐ ์ฃผ์์ฌํญ
โ ์ฅ์
- ์ฝ๋ ์ดํด๋ ฅ ํฅ์ (ํจ์ ๊ด๊ณ, ํธ์ถ ์ถ์ ๋ฑ)
- ๋๊ท๋ชจ ํ๋ก์ ํธ ํ์ ์๋ ๊ฐ์
- Claude Code์ ๋งฅ๋ฝ ํ์ง ํฅ์
- uv ๊ธฐ๋ฐ ์ค์น๋ก ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์
- Claude์ ์๋ ํต์ (MCP ํ๋กํ ์ฝ ํ์ค)
โ ๏ธ ์ฃผ์์ฌํญ
- ํ๋ก์ ํธ์ ์ ๊ทผ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์คํ
read_only๋ชจ๋ ๊ถ์ฅ (์ฝ๋ ์์ ๋ฐฉ์ง)servers.json์ ์ ์ญ ์ ์ฉ์ด๋ฏ๋ก, ์๋ชป๋ ๊ฒฝ๋ก ์ค์ ์ Claude ์ ์ฒด์์ ์๋ฌ ๋ฐ์
9. ์์ฝ
| ๊ตฌ๋ถ | ์ค๋ช |
|---|---|
| MCP | ๋ชจ๋ธ์ด ์ธ๋ถ ๋ฆฌ์์ค์ ํต์ ํ๊ธฐ ์ํ ์คํ ํ๋กํ ์ฝ |
| Serena MCP | ์ฝ๋๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ Claude์ ์ ๊ณตํ๋ MCP ์๋ฒ |
| Claude Code | ์ฌ์ฉ์ ๋ช ๋ น์ ์ดํดํ๊ณ Serena MCP๋ก๋ถํฐ ๋ฐ์ดํฐ ์์ฒญ |
| ํต์ฌ ์ฅ์ | ์ฝ๋ ํ์ยท๋ฆฌํฉํ ๋งยท๋งฅ๋ฝ ์ดํด ํฅ์ |
| ํ์ ์กฐ๊ฑด | Python + uv ํ๊ฒฝ, ๋ก์ปฌ ์๋ฒ ์คํ ๊ถํ |
| ์ฐ๊ฒฐ ๋ฐฉ์ | Claude โ Serena ๊ฐ JSON-RPC ๊ธฐ๋ฐ ์๋ฐฉํฅ ํต์ |
| ์ค์ ์์น | ์ ์ญ: servers.json / ๋ก์ปฌ: ~/.serena/config.yml |
โจ ํ๋ง๋๋ก MCP๋ โAI ๋ชจ๋ธ์ ์ธ๋ถ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ๋ ํ์ค ์ธํฐํ์ด์คโ์ด๊ณ , Serena MCP๋ ๊ทธ ํ์ค์ ํ์ฉํด Claude๊ฐ โ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ดํดํ๊ณ ํ์ํ ์ ์๊ฒ ๋๋ ๋ก์ปฌ ๋๊ตฌ ์๋ฒโ์ด๋ค.