Post

๐Ÿงฉ Model Context Protocol (MCP) & Serena MCP ์ •๋ฆฌ

Claude์™€ Serena MCP ์—ฐ๋™ ๊ฐœ๋… ๋ฐ ์„ค์น˜/์„ค์ • ๊ฐ€์ด๋“œ

๐Ÿงฉ Model Context Protocol (MCP) & 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 ํด๋ž˜์Šค๊ฐ€ ์–ด๋””์„œ ์‚ฌ์šฉ๋˜๋‚˜์š”?โ€

  1. Claude Code๊ฐ€ MCP ์š”์ฒญ์„ ๋ณด๋ƒ„
  2. Serena MCP๊ฐ€ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํƒ์ƒ‰
  3. ํ˜ธ์ถœ ์œ„์น˜๋ฅผ ์ฐพ์•„ JSON ์‘๋‹ต
  4. 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๊ฐ€ โ€œ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ดํ•ดํ•˜๊ณ  ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ๋กœ์ปฌ ๋„๊ตฌ ์„œ๋ฒ„โ€์ด๋‹ค.

This post is licensed under CC BY 4.0 by the author.