JIRA MCP Server ð
ããŒã«ã«JIRA MCP Server ð ã«ã€ããŠ
JIRA MCP Serverã¯ãJIRA Cloud REST APIãéããŠJIRAãããžã§ã¯ããæäœããGo補ã®MCPãµãŒããŒã§ããMCPã¯ã©ã€ã¢ã³ããã課é¡ã®äœæãæ€çŽ¢ãååŸããEpicå ã®èª²é¡ååŸãã§ããç°å¢å€æ°ãŸãã¯èšå®ãã¡ã€ã«ã§æ§æã§ããŸãã
äž»ãªæ©èœ
- 01JIRA課é¡ã®äœæ
- 02JQLã«ããèª²é¡æ€çŽ¢
- 03課é¡è©³çްã®ååŸ
- 04Epicå ã®èª²é¡ååŸ
- 05ç°å¢å€æ°ãšèšå®ãã¡ã€ã«ã§æ§æ
掻çšã·ãŒã³
- 01MCPã¯ã©ã€ã¢ã³ãããJIRA課é¡ãäœæ
- 02JQLã§ãããžã§ã¯ãã®èª²é¡ãæ€çŽ¢
- 03課é¡ãŸãã¯Epicã«å±ãã課é¡ã確èª
MCP 察å¿
課é¡ã®äœæãJQLæ€çŽ¢ã課é¡è©³çްã®ååŸãEpicå ã®èª²é¡ååŸãªã©ã®JIRAæäœãMCPã€ã³ã¿ãŒãã§ãŒã¹ã§å ¬éããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
JIRA MCP Server ð
JIRA Cloud REST API ãšé£æºãã Model Context ProtocolïŒMCPïŒãå®è£ ããæè»ãª Go ãµãŒããŒã§ããLLMïŒããŒã«ãš JIRA ãããžã§ã¯ããã·ãŒã ã¬ã¹ã«çµ±åã§ããŸãã
ããã¯äœã§ããïŒ ð€
ãã®ãããžã§ã¯ãã¯ãModel Context ProtocolïŒç¹å®ã® AI ã¢ã·ã¹ã¿ã³ããéçºããŒã«ãªã©ïŒãå©çšããã·ã¹ãã ãšã匷å㪠JIRA Cloud API ã®æ©æž¡ããããŸããæšæºåããã MCP ã€ã³ã¿ãŒãã§ãŒã¹ãéããŠãäžè¬ç㪠JIRA æäœïŒèª²é¡ã®äœæãæ€çŽ¢ã詳现ã®ååŸïŒãããã°ã©ã ããå®è¡ã§ããŸããããã«ãããJIRA API ãçŽæ¥åŒã³åºãè€éããæœè±¡åããŸãã
âš ç¹é·
- MCP ã€ã³ã¿ãŒãã§ãŒã¹ïŒ æšæºã® MCP ãšã³ããã€ã³ããéã㊠JIRA æäœãæäŸããŸãã
- JIRA Cloud 飿ºïŒ 課é¡ã®äœæãJQL ã«ããæ€çŽ¢ã課é¡ã®è©³çްååŸããšããã¯å ã®èª²é¡ã®ååŸãã§ããŸãã
- æè»ãªèšå®ïŒ Viper ã䜿çšããç°å¢å€æ°ãèšå®ãã¡ã€ã«ããŸãã¯ããã©ã«ãå€ããèšå®ã§ããŸãã
- Docker ãµããŒãïŒ Docker ãš Docker Compose ã䜿çšããã³ã³ãããŒãããã€ã«å¯Ÿå¿ããŠããŸãã
- å ç¢ãªãã¹ãïŒ å æ¬çãªåäœãã¹ããšçµ±åãã¹ããå«ãŸããŠããŸãã
- æ§é åãã°ïŒ
slogã䜿çšããŠãæç¢ºãªæ§é åãã°ãåºåããŸãã - äŸåæ§æ³šå
¥ïŒ
wireã䜿çšããäŸåæ§æ³šå ¥ãªã©ãã¯ãªãŒã³ã¢ãŒããã¯ãã£ã®ååã«åºã¥ããŠæ§ç¯ãããŠããŸãã
åææ¡ä»¶
- Go 1.20+ïŒããŒã«ã«ã§ã®ãã«ãïŒå®è¡çšïŒ
- Docker ãš Docker ComposeïŒä»»æãã³ã³ãããŒãããã€çšïŒ
- JIRA Cloud ã€ã³ã¹ã¿ã³ã¹
- ãŠãŒã¶ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ã«çŽã¥ãã JIRA API ããŒã¯ã³
ð ã¯ããã«
-
ãªããžããªãã¯ããŒã³ããŸãïŒ
git clone https://github.com/karolswdev/jira-mcp-server.git # TODO: Replace with actual URL cd jira-mcp-server # e.g., cd jira-mcp -
ãµãŒããŒãã£ã¬ã¯ããªã«ç§»åããŸãïŒ
cd jira-mcp-serverâ¡ïž éèŠïŒ 以éã®ã³ãã³ãïŒ
make ...ãgo run ...ãdocker ...ïŒã¯ãjira-mcp-server/ãã£ã¬ã¯ããªå ã§å®è¡ããŠãã ããã -
ãµãŒããŒãèšå®ããŸãïŒ å¿ é ã®ç°å¢å€æ°ãèšå®ãããã
config.yamlãäœæããŸãã詳ããã¯ã以äžã®èšå®ã»ã¯ã·ã§ã³ãã芧ãã ããã -
ãµãŒããŒãå®è¡ããŸãïŒ è©³ããã¯ã以äžã®ãµãŒããŒã®å®è¡ã»ã¯ã·ã§ã³ãã芧ãã ããã
âïž èšå®
èšå®ã¯Viperã䜿çšããŠç®¡çããã以äžã®ãœãŒã¹ããåªå é äœã®é«ãé ã«èªã¿èŸŒãŸããŸãã
- ç°å¢å€æ°ïŒ
JIRA_MCP_ãæ¥é èŸãšããŠæå®ããŸãïŒäŸïŒJIRA_MCP_JIRA_URLïŒãæåªå ã§ãã - èšå®ãã¡ã€ã«ïŒ
jira-mcp-server/ãã£ã¬ã¯ããªå ã«ããconfig.yamlïŒãŸãã¯.jsonã.tomlïŒãæ§é ãšãã¹ãŠã®ãªãã·ã§ã³ã«ã€ããŠã¯ãconfig.yaml.exampleãåç §ããŠãã ããã - ããã©ã«ãå€ïŒ ã¢ããªã±ãŒã·ã§ã³ã³ãŒãå ã§å®çŸ©ãããŠããããã©ã«ãå€ã§ãã
å¿ é ã®èšå®ïŒ
以äžã®å€ã¯ãç°å¢å€æ°ãŸãã¯èšå®ãã¡ã€ã«ã§æå®ããå¿ èŠããããŸãã
JIRA_MCP_JIRA_URLïŒJIRA Cloud ã€ã³ã¹ã¿ã³ã¹ã®ããŒã¹ URLïŒäŸïŒhttps://your-domain.atlassian.netïŒãJIRA_MCP_JIRA_USER_EMAILïŒAPI ããŒã¯ã³ã«é¢é£ä»ãããã JIRA ãŠãŒã¶ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ãJIRA_MCP_JIRA_API_TOKENïŒJIRA API ããŒã¯ã³ã§ãããã¹ã¯ãŒããšåæ§ã«åãæ±ã£ãŠãã ããïŒ
ä»»æã®èšå®ïŒ
JIRA_MCP_PORTïŒãµãŒããŒããªãã¹ã³ããããŒãïŒããã©ã«ãïŒ8080ïŒãJIRA_MCP_LOG_LEVELïŒãã°ã¬ãã«ïŒdebugãinfoãwarnãerrorïŒïŒããã©ã«ãïŒinfoïŒãJIRA_MCP_EPIC_LINK_FIELD_IDïŒJIRA ã€ã³ã¹ã¿ã³ã¹ã®ãEpic Linkãã®ã«ã¹ã¿ã ãã£ãŒã«ã IDïŒäŸïŒcustomfield_10014ïŒã/jira_epic/{epicKey}/issuesãšã³ããã€ã³ããæ£ããåäœãããããã«å¿ é ã§ãããã® ID 㯠JIRA API ãŸãã¯ç®¡çèšå®ãã確èªã§ããŸãã
äŸïŒç°å¢å€æ°ïŒïŒ
export JIRA_MCP_JIRA_URL="https://your-domain.atlassian.net"
export JIRA_MCP_JIRA_USER_EMAIL="[email protected]"
export JIRA_MCP_JIRA_API_TOKEN="your-api-token-secret"
export JIRA_MCP_PORT="9000" # Optional
export JIRA_MCP_EPIC_LINK_FIELD_ID="customfield_10014" # Optional but needed for Epic endpoint
â¶ïž ãµãŒããŒã®å®è¡
jira-mcp-server/ ãã£ã¬ã¯ããªå
ã«ç§»åããå¿
é ã®èšå®ãæžãã§ããããšã確èªããŠãã ããã
ãªãã·ã§ã³ 1ïŒçŽæ¥å®è¡ïŒGo ã䜿çšïŒ
# Ensure required JIRA_MCP_... environment variables are set
make run
# Or: go run ./cmd/main.go
ãµãŒããŒã¯ãèšå®ãããããŒãïŒããã©ã«ã㯠8080ïŒã§ãªãã¹ã³ãéå§ããŸãã
ãªãã·ã§ã³ 2ïŒDocker ã§å®è¡
- Docker ã€ã¡ãŒãžããã«ãããŸãïŒ
make docker-build .envãã¡ã€ã«ãäœæããŸãïŒjira-mcp-server/ãã£ã¬ã¯ããªå ã«.envãšããååã®ãã¡ã€ã«ãäœæããJIRA_MCP_ç°å¢å€æ°ãèšè¿°ããŸãïŒ1 è¡ã« 1 ã€ãäŸïŒJIRA_MCP_JIRA_URL=...ïŒã# .env file content example JIRA_MCP_JIRA_URL=https://your-domain.atlassian.net [email protected] JIRA_MCP_JIRA_API_TOKEN=your-api-token-secret JIRA_MCP_PORT=8080 # Optional, ensure it matches docker-compose.yml mapping if changed JIRA_MCP_EPIC_LINK_FIELD_ID=customfield_10014 # Optional- Docker Compose ã䜿çšããŠå®è¡ããŸãïŒ
ã³ã³ããã忢ããã«ã¯ãmake docker-run # This command uses docker-compose up -ddocker-compose downãå®è¡ããŸãã
ð API ãšã³ããã€ã³ã
ãµãŒããŒã¯ã以äžã®äž»èŠãªãšã³ããã€ã³ããå ¬éããŸãã
POST /create_jira_issueïŒæ°ãã JIRA 課é¡ãäœæããŸããPOST /search_jira_issuesïŒJQL ã䜿çšã㊠JIRA 課é¡ãæ€çŽ¢ããŸããGET /jira_issue/{issueKey}ïŒæå®ãã JIRA 課é¡ã®è©³çްãååŸããŸããGET /jira_epic/{epicKey}/issuesïŒæå®ãããšããã¯ã«å±ãããã¹ãŠã®èª²é¡ãååŸããŸãïŒJIRA_MCP_EPIC_LINK_FIELD_IDã®èšå®ãå¿ èŠã§ãïŒã
ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®äŸ
åãšã³ããã€ã³ãã®è©³çްãªãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®äŸã«ã€ããŠã¯ã以äžãåç §ããŠãã ããã
â¡ïž API_EXAMPLES.md
â ãã¹ã
ãã®ãããžã§ã¯ãã«ã¯ããŠããããã¹ããšçµ±åãã¹ãã®äž¡æ¹ãå«ãŸããŠããŸããjira-mcp-server/ ãã£ã¬ã¯ããªãã以äžã®ã³ãã³ããå®è¡ããŠãã ããã
- ãŠããããã¹ããå®è¡ïŒ åã³ã³ããŒãã³ããåå¥ã«ãã¹ãããŸãïŒJIRA API ãã¢ãã¯ããŸãïŒã
make test - çµ±åãã¹ããå®è¡ïŒ ã¢ã㯠JIRA ãµãŒããŒã䜿çšã㊠HTTP API ã¬ã€ã€ãŒããã¹ãããŸãã
make test-integration - ãŠããããã¹ãã®ã«ãã¬ããžã衚瀺ïŒ
coverage.htmlãçæããŠãã©ãŠã¶ãŒã§éããŸããmake coverage - çµ±åãã¹ãã®ã«ãã¬ããžã衚瀺ïŒ
coverage-integration.htmlãçæããŠãã©ãŠã¶ãŒã§éããŸããmake coverage-integration
ðïž ã¢ãŒããã¯ãã£
ãã®ãµãŒããŒã¯ã¯ãªãŒã³ã¢ãŒããã¯ãã£ã®ååã«åŸããäŸåæ§æ³šå
¥ïŒwireïŒãæ§é åãã°ïŒslogïŒãé¢å¿äºã®éå±€çãªåé¢ïŒãã³ãã©ãŒãJIRA ã¯ã©ã€ã¢ã³ããã³ã¢ããžãã¯ïŒãæ¡çšããŠããŸãã
詳ãã説æã«ã€ããŠã¯ã**ã¢ãŒããã¯ãã£ããã¥ã¡ã³ã**ãã芧ãã ããã
ð€ è²¢ç®
è²¢ç®ãæè¿ããŠããã倧倿è¬ããŠããŸãïŒãã°ã®å ±åãæ©èœã®ææ¡ãããã¥ã¡ã³ãã®æ¹åããã«ãªã¯ãšã¹ãã®æåºãªã©ãçããŸã®ååããã®ãããžã§ã¯ããããè¯ããã®ã«ããŸãã
å§ããåã«ã**è²¢ç®ã¬ã€ãã©ã€ã³**ããèªã¿ãã ããã
ãŸãããã®ãããžã§ã¯ãã«ã¯**ã³ã³ããªãã¥ãŒã¿ãŒè¡åèŠç¯**ãé©çšãããŠããããšã«ãçæãã ããããã®ãããžã§ã¯ãã«åå ããããšã§ããã®èŠçŽã«åŸãããšã«åæãããã®ãšã¿ãªãããŸãã
ð ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ã㯠MIT ã©ã€ã»ã³ã¹ã®äžã§ã©ã€ã»ã³ã¹ãããŠããŸãã詳现ã«ã€ããŠã¯ã**LICENSE**ãã¡ã€ã«ãã芧ãã ããã
â ïž ã»ãã¥ãªãã£ã«é¢ããæ³šæ
JIRA API ããŒã¯ã³ããã®ä»ã®æ©å¯æ§ã®é«ãèªèšŒæ
å ±ããããŒãžã§ã³ç®¡çäžã®ã³ãŒããèšå®ãã¡ã€ã«ã«çŽæ¥ã³ãããããªãã§ãã ããã ç¹ã«æ¬çªç°å¢ãžã®ãããã€ã§ã¯ãç°å¢å€æ°ãŸãã¯å®å
šãªã·ãŒã¯ã¬ãã管çã·ã¹ãã ã䜿çšããŠãã ãããDocker ã§ .env ãã¡ã€ã«ã䜿çšããå Žåã¯ããã®ãã¡ã€ã«ã .gitignore ã«å«ãŸããŠããããšã確èªããŠãã ããã
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã