Skip to main content
Glama

MCP Atlassian Server

by dunz
README.mdโ€ข15.4 kB
# MCP Atlassian Server Atlassian ์ œํ’ˆ(Confluence, Jira)๊ณผ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•œ Model Context Protocol (MCP) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. AI ์–ด์‹œ์Šคํ„ดํŠธ๊ฐ€ Atlassian Cloud API์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์—ฌ ๋ฌธ์„œ ๊ด€๋ฆฌ, ๊ฒ€์ƒ‰, ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. > **๐ŸŽ‰ ์ตœ์‹  ์—…๋ฐ์ดํŠธ**: ์•ˆ์ •์„ฑ ๊ฐœ์„  ๋ฐ ๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€ ์™„๋ฃŒ! (2025-11-13) > > - 20๊ฐœ ํ•จ์ˆ˜์— ๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€๋กœ undefined ์˜ค๋ฅ˜ ์™„์ „ ์ฐจ๋‹จ > - Confluence API ๊ฒฝ๋กœ 11๊ณณ ์ˆ˜์ • (404 ์˜ค๋ฅ˜ ํ•ด๊ฒฐ) > - ๋ชจ๋“  ๋„๊ตฌ 100% ์ •์ƒ ์ž‘๋™ ํ™•์ธ ## ๐Ÿ“‹ ๋ชฉ์ฐจ - [์ฃผ์š” ๊ธฐ๋Šฅ](#์ฃผ์š”-๊ธฐ๋Šฅ) - [์„ค์น˜ ๋ฐฉ๋ฒ•](#์„ค์น˜-๋ฐฉ๋ฒ•) - [MCP ์„ค์ •](#mcp-์„ค์ •) - [API ํ† ํฐ ๋ฐœ๊ธ‰](#api-ํ† ํฐ-๋ฐœ๊ธ‰) - [์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ](#์‚ฌ์šฉ-๊ฐ€๋Šฅํ•œ-๋„๊ตฌ) - [์‚ฌ์šฉ ์˜ˆ์‹œ](#์‚ฌ์šฉ-์˜ˆ์‹œ) - [์ตœ๊ทผ ๊ฐœ์„  ์‚ฌํ•ญ](#์ตœ๊ทผ-๊ฐœ์„ -์‚ฌํ•ญ) - [๋ฌธ์ œ ํ•ด๊ฒฐ](#๋ฌธ์ œ-ํ•ด๊ฒฐ) ## ์ฃผ์š” ๊ธฐ๋Šฅ ### ๐Ÿ”ต Confluence ํ†ตํ•ฉ - **์ฝ๊ธฐ & ๊ฒ€์ƒ‰**: ํŽ˜์ด์ง€, ์ŠคํŽ˜์ด์Šค, ์ฝ˜ํ…์ธ  ์ ‘๊ทผ - **์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ**: ํŽ˜์ด์ง€ ์ƒ์„ฑ, ์ˆ˜์ •, ๋Œ“๊ธ€ ์ž‘์„ฑ - **ํŽ˜์ด์ง€ ๊ณ„์ธต**: ๋ถ€๋ชจ/์ž์‹ ํŽ˜์ด์ง€ ๊ด€๊ณ„ ํƒ์ƒ‰ - **๋‚ด๋ณด๋‚ด๊ธฐ**: ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ HTML ๋˜๋Š” Markdown์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ - **์ฒจ๋ถ€ํŒŒ์ผ**: ์ฒจ๋ถ€ํŒŒ์ผ ๋ชฉ๋ก, ๋‹ค์šด๋กœ๋“œ, ์—…๋กœ๋“œ - **๋ ˆ์ด๋ธ”**: ํŽ˜์ด์ง€ ๋ ˆ์ด๋ธ” ๊ด€๋ฆฌ - **์‚ฌ์šฉ์ž**: ์‚ฌ์šฉ์ž ๊ฒ€์ƒ‰ ๋ฐ ๊ฐœ์ธ ํ™œ๋™ ์ถ”์  - **๊ฐœ์ธ ๋Œ€์‹œ๋ณด๋“œ**: ์ตœ๊ทผ ํŽ˜์ด์ง€ ๋ฐ ๋ฉ˜์…˜ ํ™•์ธ ### ๐ŸŸข Jira ํ†ตํ•ฉ - **์ด์Šˆ**: ์ด์Šˆ ์ฝ๊ธฐ, ๊ฒ€์ƒ‰, ๊ฐœ์ธ ์ž‘์—… ์กฐํšŒ - **ํ”„๋กœ์ ํŠธ**: ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก ๋ฐ ํƒ์ƒ‰ - **๋ณด๋“œ & ์Šคํ”„๋ฆฐํŠธ**: ๋ณด๋“œ ๋ชฉ๋ก, ์Šคํ”„๋ฆฐํŠธ ๋ณด๊ธฐ, ํ™œ์„ฑ ์ž‘์—… ์ถ”์  - **๋Œ“๊ธ€**: ์ด์Šˆ์— ๋Œ“๊ธ€ ์ถ”๊ฐ€ - **์ด์Šˆ ์ƒ์„ฑ**: ์ปค์Šคํ…€ ํ•„๋“œ๋ฅผ ํฌํ•จํ•œ ์ƒˆ ์ด์Šˆ ์ƒ์„ฑ - **์‚ฌ์šฉ์ž ๊ด€๋ฆฌ**: ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ - **๊ฐœ์ธ ๋Œ€์‹œ๋ณด๋“œ**: ์—ด๋ฆฐ ์ด์Šˆ ๋ฐ ์Šคํ”„๋ฆฐํŠธ ์ž‘์—… ํ™•์ธ ## ์„ค์น˜ ๋ฐฉ๋ฒ• ### ์˜ต์…˜ 1: ๋กœ์ปฌ ํด๋ก  (๊ถŒ์žฅ) ```bash # ์ €์žฅ์†Œ ํด๋ก  git clone https://github.com/dunz/mcp-atlassian.git cd mcp-atlassian # ์˜์กด์„ฑ ์„ค์น˜ npm install ``` ### ์˜ต์…˜ 2: GitHub์—์„œ ์ง์ ‘ ์„ค์น˜ ```bash # GitHub์—์„œ ์ง์ ‘ ์„ค์น˜ npm install -g github:dunz/mcp-atlassian # ๋˜๋Š” ํ”„๋กœ์ ํŠธ์— ์„ค์น˜ npm install github:dunz/mcp-atlassian ``` ### ์˜ต์…˜ 3: NPM ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ```bash # ์ „์—ญ ์„ค์น˜ npm install -g mcp-atlassian # ๋˜๋Š” ๋กœ์ปฌ ์„ค์น˜ npm install mcp-atlassian ``` ## MCP ์„ค์ • ### 1. API ํ† ํฐ ๋ฐœ๊ธ‰ #### Atlassian API ํ† ํฐ ์ƒ์„ฑ 1. [Atlassian ๊ณ„์ • ์„ค์ •](https://id.atlassian.com/manage-profile/security/api-tokens)์— ๋กœ๊ทธ์ธ 2. "API ํ† ํฐ ๋งŒ๋“ค๊ธฐ" ํด๋ฆญ 3. ํ† ํฐ์— ๋ผ๋ฒจ์„ ์ง€์ •ํ•˜๊ณ  ๋ณต์‚ฌ 4. ์ด ํ† ํฐ์„ MCP ์„ค์ •์— ์‚ฌ์šฉ ### 2. MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ • #### Claude Desktop ์„ค์ • ํŒŒ์ผ ์œ„์น˜ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` - **Linux**: `~/.config/Claude/claude_desktop_config.json` #### Cursor ์„ค์ • ํŒŒ์ผ ์œ„์น˜ - **๋ชจ๋“  OS**: `~/.cursor/mcp.json` ### 3. ์„ค์ • ์˜ˆ์‹œ #### ์˜ต์…˜ A: Node๋กœ ์ง์ ‘ ์‹คํ–‰ (๊ถŒ์žฅ) ```json { "mcpServers": { "atlassian": { "command": "node", "args": [ "[Cloned Directory Absolute Path]/dist/index.js", "--transport", "stdio" ], "env": { "ATLASSIAN_BASE_URL": "https://your-company.atlassian.net", "ATLASSIAN_EMAIL": "your-email@company.com", "ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN_HERE" } } } } ``` #### ์˜ต์…˜ B: NPX๋กœ ์‹คํ–‰ ```json { "mcpServers": { "atlassian": { "command": "npx", "args": ["-y", "mcp-atlassian"], "env": { "ATLASSIAN_BASE_URL": "https://your-company.atlassian.net", "ATLASSIAN_EMAIL": "your-email@company.com", "ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN_HERE" } } } } ``` ### 4. ์„ค์ • ์ ์šฉ 1. ์„ค์ • ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค 2. **Claude Desktop**: ์•ฑ์„ ์™„์ „ํžˆ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ 3. **Cursor**: ์•ฑ์„ ์žฌ์‹œ์ž‘ (โŒ˜+Q ํ›„ ๋‹ค์‹œ ์‹คํ–‰) 4. ์—ฐ๊ฒฐ์ด ์„ฑ๊ณตํ•˜๋ฉด ๋„๊ตฌ ๋ชฉ๋ก์— Atlassian ๋„๊ตฌ๋“ค์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค ### 5. ์—ฐ๊ฒฐ ํ™•์ธ AI ์–ด์‹œ์Šคํ„ดํŠธ์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์ฒญํ•ด๋ณด์„ธ์š”: ``` "Atlassian MCP๊ฐ€ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค˜" ``` ## API ํ† ํฐ ๋ฐœ๊ธ‰ ### Atlassian API ํ† ํฐ 1. [Atlassian ๋ณด์•ˆ ์„ค์ •](https://id.atlassian.com/manage-profile/security/api-tokens)์œผ๋กœ ์ด๋™ 2. "API ํ† ํฐ ๋งŒ๋“ค๊ธฐ" ํด๋ฆญ 3. ํ† ํฐ ๋ผ๋ฒจ ์ž…๋ ฅ (์˜ˆ: "MCP Integration") 4. ํ† ํฐ ๋ณต์‚ฌ (ํ•œ ๋ฒˆ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค!) 5. MCP ์„ค์ •์— ๋ถ™์—ฌ๋„ฃ๊ธฐ > โš ๏ธ **์ค‘์š”**: API ํ† ํฐ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•˜์„ธ์š”. ์ ˆ๋Œ€ ์ฝ”๋“œ๋‚˜ ๊ณต๊ฐœ ์ €์žฅ์†Œ์— ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”. ## ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ### Confluence ๋„๊ตฌ (23๊ฐœ) | ๋„๊ตฌ | ์„ค๋ช… | | ------------------------------------ | ---------------------------------- | | `get_confluence_current_user` | ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ | | `get_confluence_user` | ํŠน์ • ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ | | `search_pages_by_user_involvement` | ์‚ฌ์šฉ์ž ํ™œ๋™์œผ๋กœ ํŽ˜์ด์ง€ ๊ฒ€์ƒ‰ | | `list_pages_created_by_user` | ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ํŽ˜์ด์ง€ ๋ชฉ๋ก | | `list_attachments_uploaded_by_user` | ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ์ฒจ๋ถ€ํŒŒ์ผ ๋ชฉ๋ก | | `read_confluence_page` | ID ๋˜๋Š” ์ œ๋ชฉ์œผ๋กœ ํŽ˜์ด์ง€ ์ฝ๊ธฐ | | `search_confluence_pages` | CQL๋กœ ํŽ˜์ด์ง€ ๊ฒ€์ƒ‰ | | `list_confluence_spaces` | ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก | | `get_confluence_space` | ํŠน์ • ์ŠคํŽ˜์ด์Šค ์ •๋ณด ์กฐํšŒ | | `create_confluence_page` | ์ƒˆ ํŽ˜์ด์ง€ ์ƒ์„ฑ | | `update_confluence_page` | ๊ธฐ์กด ํŽ˜์ด์ง€ ์ˆ˜์ • | | `list_confluence_page_children` | ํ•˜์œ„ ํŽ˜์ด์ง€ ๋ชฉ๋ก | | `list_confluence_page_ancestors` | ์ƒ์œ„ ํŽ˜์ด์ง€ ๊ณ„์ธต ์กฐํšŒ | | `export_confluence_page` | ์ด๋ฏธ์ง€ ํฌํ•จ HTML/Markdown ๋‚ด๋ณด๋‚ด๊ธฐ | | `list_attachments_on_page` | ํŽ˜์ด์ง€ ์ฒจ๋ถ€ํŒŒ์ผ ๋ชฉ๋ก | | `download_confluence_attachment` | ํŠน์ • ์ฒจ๋ถ€ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ | | `upload_confluence_attachment` | ํŽ˜์ด์ง€์— ํŒŒ์ผ ์—…๋กœ๋“œ | | `get_page_with_attachments` | ๋ชจ๋“  ์ฝ˜ํ…์ธ ์™€ ํ•จ๊ป˜ ํŽ˜์ด์ง€ ๋‹ค์šด๋กœ๋“œ | | `add_confluence_comment` | ํŽ˜์ด์ง€์— ๋Œ“๊ธ€ ์ถ”๊ฐ€ | | `list_confluence_page_labels` | ํŽ˜์ด์ง€ ๋ ˆ์ด๋ธ” ์กฐํšŒ | | `add_confluence_page_label` | ํŽ˜์ด์ง€์— ๋ ˆ์ด๋ธ” ์ถ”๊ฐ€ | | `find_confluence_users` | ์‚ฌ์šฉ์ž ๊ฒ€์ƒ‰ | | `get_my_recent_confluence_pages` | ๋‚ด ์ตœ๊ทผ ํŽ˜์ด์ง€ ๋ชฉ๋ก | | `get_confluence_pages_mentioning_me` | ๋‚˜๋ฅผ ๋ฉ˜์…˜ํ•œ ํŽ˜์ด์ง€ ์ฐพ๊ธฐ | ### Jira ๋„๊ตฌ (16๊ฐœ) | ๋„๊ตฌ | ์„ค๋ช… | | ----------------------------------- | --------------------------------------- | | `get_jira_current_user` | ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ | | `get_jira_user` | ํŠน์ • ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ | | `search_issues_by_user_involvement` | ์‚ฌ์šฉ์ž ๊ด€๋ จ ์ด์Šˆ ๊ฒ€์ƒ‰ | | `list_issues_by_user_role` | ์—ญํ• ๋ณ„ ์‚ฌ์šฉ์ž ์ด์Šˆ ๋ชฉ๋ก (๋‚ ์งœ ํ•„ํ„ฐ๋ง) | | `get_user_activity_history` | ๋Œ“๊ธ€ ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ ํฌํ•จ ์‚ฌ์šฉ์ž ํ™œ๋™ ์ถ”์  | | `get_user_time_tracking` | ์‹œ๊ฐ„ ์ถ”์  ํ•ญ๋ชฉ ๋ฐ ํ•ฉ๊ณ„ ์กฐํšŒ | | `read_jira_issue` | ํ‚ค๋กœ ์ด์Šˆ ์ƒ์„ธ ์ •๋ณด ์ฝ๊ธฐ | | `search_jira_issues` | JQL๋กœ ์ด์Šˆ ๊ฒ€์ƒ‰ | | `list_jira_projects` | ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก | | `create_jira_issue` | ์ƒˆ ์ด์Šˆ ์ƒ์„ฑ | | `add_jira_comment` | ์ด์Šˆ์— ๋Œ“๊ธ€ ์ถ”๊ฐ€ | | `list_agile_boards` | ์Šคํฌ๋Ÿผ/์นธ๋ฐ˜ ๋ณด๋“œ ๋ชฉ๋ก | | `list_sprints_for_board` | ๋ณด๋“œ์˜ ์Šคํ”„๋ฆฐํŠธ ๋ชฉ๋ก | | `get_sprint_details` | ์Šคํ”„๋ฆฐํŠธ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ | | `get_my_current_sprint_issues` | ํ™œ์„ฑ ์Šคํ”„๋ฆฐํŠธ์˜ ๋‚ด ์ž‘์—… ์กฐํšŒ | | `get_my_unresolved_issues` | ๋ชจ๋“  ๋ฏธํ•ด๊ฒฐ ์ด์Šˆ ์กฐํšŒ | ## ์‚ฌ์šฉ ์˜ˆ์‹œ ### Confluence ํŽ˜์ด์ง€ ๊ฒ€์ƒ‰ ``` "๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ Confluence ํŽ˜์ด์ง€ ์ค‘ ์ตœ๊ทผ 5๊ฐœ๋ฅผ ๋ณด์—ฌ์ค˜" ``` ``` "'API ๋ฌธ์„œ'๋ผ๋Š” ์ œ๋ชฉ์ด ํฌํ•จ๋œ ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•ด์ค˜" ``` ### Confluence ํŽ˜์ด์ง€ ์ฝ๊ธฐ ``` "ํŽ˜์ด์ง€ ID 882573681์˜ ๋‚ด์šฉ์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณด์—ฌ์ค˜" ``` ### Jira ์ด์Šˆ ์กฐํšŒ ``` "๋‚˜ํ•œํ…Œ ํ• ๋‹น๋œ ๋ฏธํ•ด๊ฒฐ ์ด์Šˆ๋ฅผ ๋ชจ๋‘ ๋ณด์—ฌ์ค˜" ``` ``` "ํ˜„์žฌ ์Šคํ”„๋ฆฐํŠธ์—์„œ ๋‚ด ์ž‘์—… ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค˜" ``` ### ํ”„๋กœ์ ํŠธ ๋ฐ ๋ณด๋“œ ํƒ์ƒ‰ ``` "์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ Jira ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค˜" ``` ``` "์Šคํฌ๋Ÿผ ๋ณด๋“œ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค˜" ``` ### CQL์„ ์‚ฌ์šฉํ•œ ๊ณ ๊ธ‰ ๊ฒ€์ƒ‰ ``` "type = page AND creator = currentUser() ์กฐ๊ฑด์œผ๋กœ Confluence ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•ด์ค˜" ``` ## ์ตœ๊ทผ ๊ฐœ์„  ์‚ฌํ•ญ ### ๐ŸŽ‰ 2025-11-13 ์—…๋ฐ์ดํŠธ #### 1. ์•ˆ์ •์„ฑ ๋Œ€ํญ ํ–ฅ์ƒ - **20๊ฐœ ํ•จ์ˆ˜์— ๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€** - ๋ชจ๋“  `.map()` ํ˜ธ์ถœ ์ „ undefined/null ์ฒดํฌ - `Cannot read properties of undefined` ์˜ค๋ฅ˜ ์™„์ „ ์ฐจ๋‹จ - ์ƒ์„ธํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋กœ ๋””๋ฒ„๊น… ์šฉ์ด #### 2. Confluence API ๊ฒฝ๋กœ ์ˆ˜์ • (11๊ณณ) - **๋ฌธ์ œ**: `/api/...` ๊ฒฝ๋กœ๋กœ 404 ์˜ค๋ฅ˜ ๋ฐœ์ƒ - **ํ•ด๊ฒฐ**: ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ `/wiki/rest/api/...`๋กœ ์ˆ˜์ • - **์˜ํ–ฅ๋ฐ›์€ ํ•จ์ˆ˜**: - `searchConfluencePages` - `getConfluenceSpace` - `listConfluencePageChildren` - `listConfluencePageAncestors` - `getConfluenceUser` - `findConfluenceUsers` - `uploadConfluenceAttachment` - ๊ธฐํƒ€ ์‚ฌ์šฉ์ž ๊ด€๋ จ ํ•จ์ˆ˜๋“ค #### 3. Jira API ๊ฐœ์„  (11๊ฐœ ํ•จ์ˆ˜) - **GET ๋ฉ”์„œ๋“œ ์œ ์ง€**: ์•ˆ์ •์ ์ธ `/rest/api/3/search` ์—”๋“œํฌ์ธํŠธ ์‚ฌ์šฉ - **๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€**: - `listJiraProjects` - ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก ๋ฐฐ์—ด ์ฒดํฌ - `listAgileBoards` - ๋ณด๋“œ ๋ชฉ๋ก values ์ฒดํฌ - `listJiraSprints` - ์Šคํ”„๋ฆฐํŠธ ๋ชฉ๋ก values ์ฒดํฌ - `getJiraSprintDetails` - ์ด์Šˆ ๋ชฉ๋ก ์กฐ๊ฑด๋ถ€ ์ฒ˜๋ฆฌ - ๊ธฐํƒ€ ๊ฒ€์ƒ‰ ํ•จ์ˆ˜ 7๊ฐœ #### 4. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ - โœ… **15๊ฐœ ์ฝ๊ธฐ ๋„๊ตฌ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ** - โœ… **์„ฑ๊ณต๋ฅ  100%** - โœ… **๋ชจ๋“  API ๊ฒฝ๋กœ ์ •์ƒ ์ž‘๋™** - โœ… **๋ฐฉ์–ด ๋กœ์ง ์™„๋ฒฝ ์ž‘๋™** ### ๋ณ€๊ฒฝ ์ „ํ›„ ๋น„๊ต #### Before (์˜ค๋ฅ˜ ๋ฐœ์ƒ) ```javascript // โŒ ๋ฐฉ์–ด ๋กœ์ง ์—†์Œ const results = response.data.results.map(page => ({...})); // โŒ ์ž˜๋ชป๋œ API ๊ฒฝ๋กœ await this.client.get('/api/content/search', {...}); ``` #### After (์•ˆ์ •์ ) ```javascript // โœ… ๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€ if (!response.data || !response.data.results) { console.error('Unexpected API response structure:', ...); return { content: [{ type: 'text', text: 'Error message' }], isError: true }; } const results = response.data.results.map(page => ({...})); // โœ… ์˜ฌ๋ฐ”๋ฅธ API ๊ฒฝ๋กœ await this.client.get('/wiki/rest/api/content/search', {...}); ``` ## ๋ฌธ์ œ ํ•ด๊ฒฐ ### ์—ฐ๊ฒฐ์ด ์•ˆ ๋  ๋•Œ 1. **API ํ† ํฐ ํ™•์ธ** ```bash # ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธ echo $ATLASSIAN_API_TOKEN ``` 2. **Base URL ํ™•์ธ** - `https://your-company.atlassian.net` ํ˜•์‹์ด์–ด์•ผ ํ•จ - ๋์— `/`๋ฅผ ๋ถ™์ด์ง€ ๋งˆ์„ธ์š” 3. **ํด๋ผ์ด์–ธํŠธ ์žฌ์‹œ์ž‘** - Claude Desktop: ์™„์ „ ์ข…๋ฃŒ ํ›„ ์žฌ์‹œ์ž‘ - Cursor: `โŒ˜+Q` ํ›„ ์žฌ์‹คํ–‰ ### 404 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ - **์ตœ์‹  ๋ฒ„์ „ ํ™•์ธ**: 2025-11-13 ์ดํ›„ ๋ฒ„์ „ ์‚ฌ์šฉ - **๊ฒฝ๋กœ ์ˆ˜์ • ํ™•์ธ**: ๋ชจ๋“  Confluence API๊ฐ€ `/wiki/rest/api/` ์‚ฌ์šฉ - **๋กœ๊ทธ ํ™•์ธ**: ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์—์„œ ์ƒ์„ธ ์ •๋ณด ํ™•์ธ ### undefined ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ - **์ตœ์‹  ๋ฒ„์ „ ํ™•์ธ**: ๋ชจ๋“  ๋ฐฉ์–ด ๋กœ์ง์ด ์ถ”๊ฐ€๋œ ๋ฒ„์ „ ์‚ฌ์šฉ - **์‘๋‹ต ๊ตฌ์กฐ ํ™•์ธ**: ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์— ์‘๋‹ต ๊ตฌ์กฐ๊ฐ€ ํ‘œ์‹œ๋จ ### ์„ฑ๋Šฅ์ด ๋А๋ฆด ๋•Œ 1. **ํŽ˜์ด์ง€ ํฌ๊ธฐ ์ œํ•œ** ``` "์ตœ๋Œ€ 10๊ฐœ์˜ ๊ฒฐ๊ณผ๋งŒ ๋ณด์—ฌ์ค˜" ``` 2. **ํŠน์ • ์ŠคํŽ˜์ด์Šค๋กœ ์ œํ•œ** ``` "bizgrowthservice ์ŠคํŽ˜์ด์Šค์—์„œ๋งŒ ๊ฒ€์ƒ‰ํ•ด์ค˜" ``` 3. **๋‚ ์งœ ๋ฒ”์œ„ ์ œํ•œ** ``` "์ตœ๊ทผ 1์ฃผ์ผ ์ด๋‚ด์˜ ์ด์Šˆ๋งŒ ๋ณด์—ฌ์ค˜" ``` ## ๊ฐœ๋ฐœ ```bash # TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ watch ๋ชจ๋“œ๋กœ ์‹คํ–‰ npm run dev # ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ npm run build # ๋ฆฐํ„ฐ ์‹คํ–‰ npm run lint # ํ…Œ์ŠคํŠธ ์‹คํ–‰ npm test ``` ## ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ``` mcp-atlassian/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ index.ts # ๋ฉ”์ธ ์„œ๋ฒ„ ์ง„์ž…์  โ”‚ โ”œโ”€โ”€ types/ # TypeScript ํƒ€์ž… ์ •์˜ โ”‚ โ”œโ”€โ”€ confluence/ โ”‚ โ”‚ โ”œโ”€โ”€ handlers.ts # Confluence API ํ•ธ๋“ค๋Ÿฌ โ”‚ โ”‚ โ””โ”€โ”€ tools.ts # ๋„๊ตฌ ์ •์˜ โ”‚ โ”œโ”€โ”€ jira/ โ”‚ โ”‚ โ”œโ”€โ”€ handlers.ts # Jira API ํ•ธ๋“ค๋Ÿฌ โ”‚ โ”‚ โ””โ”€โ”€ tools.ts # ๋„๊ตฌ ์ •์˜ โ”‚ โ””โ”€โ”€ utils/ โ”‚ โ”œโ”€โ”€ http-client.ts # Axios HTTP ํด๋ผ์ด์–ธํŠธ โ”‚ โ”œโ”€โ”€ content-converter.ts # Markdown โ†” Storage ๋ณ€ํ™˜ โ”‚ โ””โ”€โ”€ export-converter.ts # HTML/Markdown ๋‚ด๋ณด๋‚ด๊ธฐ โ”œโ”€โ”€ dist/ # ์ปดํŒŒ์ผ๋œ JavaScript โ”œโ”€โ”€ package.json โ””โ”€โ”€ tsconfig.json ``` ## ๋ณด์•ˆ ์ฃผ์˜์‚ฌํ•ญ - API ํ† ํฐ์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅ, ์ฝ”๋“œ์— ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š” - API ํ† ํฐ์„ ์‚ฌ์šฉํ•œ Basic Authentication ์‚ฌ์šฉ (๋น„๋ฐ€๋ฒˆํ˜ธ ์•„๋‹˜) - ๋ชจ๋“  ์š”์ฒญ์€ HTTPS๋กœ ์ „์†ก - Atlassian Cloud๋งŒ ์ง€์› (Server/Data Center ๋ฏธ์ง€์›) ## ์ œํ•œ์‚ฌํ•ญ - ์•ˆ์ „์„ ์œ„ํ•ด ์‚ญ์ œ ์ž‘์—…์€ ๊ตฌํ˜„๋˜์ง€ ์•Š์Œ - PDF ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ณ€ํ™˜ ํ•„์š” (HTML โ†’ ์ธ์‡„ โ†’ PDF) - ์ผ๋ถ€ Confluence ๋งคํฌ๋กœ๋Š” Markdown์œผ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณ€ํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ - Atlassian Cloud API ์†๋„ ์ œํ•œ ์ ์šฉ ## ๊ธฐ์—ฌํ•˜๊ธฐ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! Pull Request๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ œ์ถœํ•ด์ฃผ์„ธ์š”. ### ๊ธฐ์—ฌ ๋ฐฉ๋ฒ• 1. ์ด ์ €์žฅ์†Œ๋ฅผ Fork 2. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (`git checkout -b feature/amazing-feature`) 3. ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹ (`git commit -m 'feat: Add amazing feature'`) 4. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ (`git push origin feature/amazing-feature`) 5. Pull Request ์ƒ์„ฑ ## ๋ผ์ด์„ ์Šค MIT License - ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ ์ฐธ์กฐ ## ์ง€์› ๋ฌธ์ œ ๋ฐ ์งˆ๋ฌธ: - GitHub ์ €์žฅ์†Œ์— ์ด์Šˆ ์ƒ์„ฑ - API ๊ด€๋ จ ์งˆ๋ฌธ์€ Atlassian API ๋ฌธ์„œ ์ฐธ์กฐ - ํ”„๋กœํ† ์ฝœ ๊ด€๋ จ ์งˆ๋ฌธ์€ MCP ๋ฌธ์„œ ๊ฒ€ํ†  ## ๊ฐ์‚ฌ์˜ ๋ง ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•: - [Model Context Protocol (MCP)](https://modelcontextprotocol.io) - [Atlassian REST APIs](https://developer.atlassian.com/cloud/) - TypeScript, Node.js, Axios ## ๋ณ€๊ฒฝ ๋กœ๊ทธ ### v1.1.0 (2025-11-13) - ๐ŸŽ‰ ์•ˆ์ •์„ฑ ๋Œ€ํญ ํ–ฅ์ƒ - โœ… 20๊ฐœ ํ•จ์ˆ˜์— ๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€ - ๐Ÿ”ง Confluence API ๊ฒฝ๋กœ 11๊ณณ ์ˆ˜์ • - ๐Ÿ”ง Jira API ๋ฐฉ์–ด ๋กœ์ง ์ถ”๊ฐ€ - โœ… ๋ชจ๋“  ๋„๊ตฌ 100% ํ…Œ์ŠคํŠธ ์™„๋ฃŒ --- **Made with โค๏ธ for better Atlassian integration**

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dunz/mcp-atlassian'

If you have feedback or need assistance with the MCP directory API, please join our Discord server