confluence-mcp-server

minhoyooDEV/confluence-mcp-server

3.2

If you are the rightful owner of confluence-mcp-server 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.

Confluence MCP Server is a Model Context Protocol server system designed to access the Confluence API using a Personal Access Token, acting as an intermediary server within a VPN area.

Confluence MCP Server

Confluence API์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ Model Context Protocol ์„œ๋ฒ„ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Personal Access Token์„ ์‚ฌ์šฉํ•˜์—ฌ Confluence์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. VPN ์˜์—ญ ๋‚ด์—์„œ Confluence API์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ค‘๊ฐœ ์„œ๋ฒ„ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ตฌ์„ฑ

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‘ ๊ฐ€์ง€ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. MCP ์„œ๋ฒ„ (server.ts): Confluence API์™€ ํ†ต์‹ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

    • ๊ธฐ๋ณธ ํฌํŠธ: 3000
    • RESTful API ์ œ๊ณต
    • MCP ํ”„๋กœํ† ์ฝœ ์ฒ˜๋ฆฌ
  2. ํ”„๋ก์‹œ ์„œ๋ฒ„ (proxyServer.ts): MCP ํด๋ผ์ด์–ธํŠธ์™€ MCP ์„œ๋ฒ„ ์‚ฌ์ด์˜ ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ๋ณธ ํฌํŠธ: 3001
    • MCP ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฃผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ

์ด ๊ตฌ์กฐ๋Š” VPN ์˜์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MCP ์„œ๋ฒ„๋Š” VPN ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜์–ด Confluence API์— ์ ‘๊ทผํ•˜๊ณ , ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ

  • ๋ชจ๋“  Confluence ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก ์กฐํšŒ
  • ํŠน์ • ์ŠคํŽ˜์ด์Šค ๋‚ด์˜ ๋ชจ๋“  ํŽ˜์ด์ง€ ์กฐํšŒ
  • ํŽ˜์ด์ง€ ID๋กœ ํŠน์ • ํŽ˜์ด์ง€ ์ •๋ณด ์กฐํšŒ
  • ์ƒˆ ํŽ˜์ด์ง€ ์ƒ์„ฑ
  • ๊ธฐ์กด ํŽ˜์ด์ง€ ์—…๋ฐ์ดํŠธ

์„ค์น˜ ๋ฐ ์„ค์ •

ํ•„์ˆ˜ ์กฐ๊ฑด

  • Node.js 16.x ์ด์ƒ
  • Bun 1.0.0 ์ด์ƒ

์„ค์น˜

# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/yourusername/confluence-mcp-server.git
cd confluence-mcp-server

# ์˜์กด์„ฑ ์„ค์น˜
bun install

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

.env ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

PORT=3000
PROXY_PORT=3001
MCP_SERVER_URL=http://localhost:3000
CONFLUENCE_BASE_URL=https://wiki.musinsa.com
PERSONAL_ACCESS_TOKEN=your_personal_access_token
NODE_ENV=development

์‹คํ–‰

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

# MCP ์„œ๋ฒ„ ์‹คํ–‰ (Confluence API์™€ ํ†ต์‹ )
bun run dev

# ํ”„๋ก์‹œ ์„œ๋ฒ„ ์‹คํ–‰ (MCP ํด๋ผ์ด์–ธํŠธ์™€ ํ†ต์‹ )
bun run dev:proxy

# MCP ์„œ๋ฒ„ Stdio ๋ชจ๋“œ ์‹คํ–‰ (์„ ํƒ ์‚ฌํ•ญ)
bun run dev:stdio

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ

# ๋นŒ๋“œ
bun run build

# MCP ์„œ๋ฒ„ ์‹คํ–‰
bun run serve

# ํ”„๋ก์‹œ ์„œ๋ฒ„ ์‹คํ–‰
bun run serve:proxy

์—”๋“œํฌ์ธํŠธ

MCP ์„œ๋ฒ„ ์—”๋“œํฌ์ธํŠธ (๊ธฐ๋ณธ ํฌํŠธ: 3000)

  • POST /mcp - MCP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์ธ ์—”๋“œํฌ์ธํŠธ
  • GET /mcp/tools - ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ๋ชฉ๋ก ์กฐํšŒ
  • GET /api/spaces - ๋ชจ๋“  ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก ์กฐํšŒ
  • GET /api/spaces/:spaceKey/pages - ํŠน์ • ์ŠคํŽ˜์ด์Šค์˜ ํŽ˜์ด์ง€ ๋ชฉ๋ก ์กฐํšŒ
  • GET /api/pages/:pageId - ํŠน์ • ํŽ˜์ด์ง€ ์ •๋ณด ์กฐํšŒ
  • POST /api/pages - ์ƒˆ ํŽ˜์ด์ง€ ์ƒ์„ฑ
  • PUT /api/pages/:pageId - ํŽ˜์ด์ง€ ์—…๋ฐ์ดํŠธ
  • GET /health - ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ

ํ”„๋ก์‹œ ์„œ๋ฒ„ ์—”๋“œํฌ์ธํŠธ (๊ธฐ๋ณธ ํฌํŠธ: 3001)

  • POST /mcp - MCP ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›์•„ MCP ์„œ๋ฒ„๋กœ ์ „๋‹ฌ
  • GET /tools - ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ๋ชฉ๋ก ์กฐํšŒ
  • GET /health - ํ”„๋ก์‹œ ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ

๋ฌธ์ œ ํ•ด๊ฒฐ

VPN ์˜์—ญ ๋ฌธ์ œ ํ•ด๊ฒฐ

์ด ํ”„๋กœ์ ํŠธ๋Š” VPN ์˜์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ์„œ๋ฒ„๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

  1. MCP ์„œ๋ฒ„๋Š” VPN ๋‚ด๋ถ€์—์„œ ์‹คํ–‰ํ•˜์—ฌ Confluence API์— ์ง์ ‘ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  2. ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜์—ฌ MCP ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ด ๊ตฌ์„ฑ์€ MCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ Confluence API์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์—์„œ ์ค‘๊ฐœ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

"Error fetching spaces: Unable to connect" ์˜ค๋ฅ˜

์ด ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. HTTPS ์ธ์ฆ์„œ ๋ฌธ์ œ: ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” SSL ์ธ์ฆ์„œ ๊ฒ€์ฆ์ด ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ธ์ฆ์„œ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฌธ์ œ: ๋ฐฉํ™”๋ฒฝ์ด๋‚˜ ํ”„๋ก์‹œ ์„ค์ •์œผ๋กœ ์ธํ•ด Confluence ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

  3. Personal Access Token ๋ฌธ์ œ: ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์—ˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ํ˜•์‹์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. .env ํŒŒ์ผ์˜ CONFLUENCE_BASE_URL์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. Personal Access Token์ด ์œ ํšจํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฐฉํ™”๋ฒฝ ์„ค์ •์„ ํ™•์ธํ•˜์—ฌ Confluence ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ํ•˜์—ฌ ์ ‘๊ทผ ๊ถŒํ•œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  5. MCP ์„œ๋ฒ„์™€ ํ”„๋ก์‹œ ์„œ๋ฒ„ ๊ฐ„์˜ ์—ฐ๊ฒฐ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค (MCP_SERVER_URL ์„ค์ •).

ํ…Œ์ŠคํŠธ

# ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‹คํ–‰
bun test

# ํŠน์ • ํ…Œ์ŠคํŠธ ์‹คํ–‰
bun test src/test/getSpaces.test.ts

๋ฐฐํฌ ๊ตฌ์„ฑ

๊ถŒ์žฅ ๋ฐฐํฌ ๊ตฌ์„ฑ

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฐํฌ ๊ตฌ์„ฑ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค:

  1. MCP ์„œ๋ฒ„: VPN ๋‚ด๋ถ€ ๋˜๋Š” Confluence ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ์— ๋ฐฐํฌ
  2. ํ”„๋ก์‹œ ์„œ๋ฒ„: MCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ์— ๋ฐฐํฌ

๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ

  • ํ”„๋ก์‹œ ์„œ๋ฒ„์™€ MCP ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์€ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • Personal Access Token์€ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ์ •๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ํ•˜์„ธ์š”.
  • ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์ ์ ˆํ•œ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋ก์‹œ ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์ ‘๊ทผ์„ ๋ฐฉ์ง€ํ•˜์„ธ์š”.

๋ผ์ด์„ผ์Šค

MIT