返回市场
麦普-杰拉

麦普-杰拉

作者:Dsazz6 星标更新:2025-07-19

项目介绍

<div align="center">

🎯 JIRA MCP 服务器

TypeScript Bun JIRA MIT License MCP

<p align="center"> <b>一个强大的 Model Context Protocol (MCP) 服务器,将 Atlassian JIRA 集成直接带到支持 MCP 的任何编辑器或应用程序中</b> </p> </div>

✨ 特性

  • 🎯 完整的 JIRA 集成套件

    • 问题管理:对 JIRA 问题进行完整的 CRUD 操作,具有全面的字段支持
    • 项目与看板发现:浏览项目、看板和冲刺,带有高级过滤功能
    • 智能搜索:使用 JQL 和初学者友好的参数进行搜索,带有丰富的格式化选项
    • 评论系统:访问和管理问题评论,带有逐步披露功能
  • 🏗️ 企业级架构 (v0.5.0 新增)

    • 模块化设计:基于特性的架构,明确职责分离
    • 健壮的 HTTP 客户端:重构并使用专用工具类以提高可靠性
    • 全面测试:超过 822 个测试确保稳定性和可靠性
    • 类型安全:启用 TypeScript 严格模式,并增强错误处理
  • 🔍 强大的搜索与发现

    • 使用 JQL(JIRA 查询语言)或初学者友好的参数搜索问题
    • 发现项目、看板和冲刺,带有元数据和过滤功能
    • 带有问题预览和直接导航链接的丰富 Markdown 格式
    • 带有作者过滤和日期范围的高级评论检索
  • 📝 高级问题管理

    • 创建、更新和转换问题,具有全面的字段支持
    • 时间跟踪、工作日志管理和自定义字段支持
    • 解析 ADF(Atlassian 文档格式)以显示丰富内容
    • 对标签、组件和版本执行数组操作

🆕 v0.5.0 新特性

🏗️ 主要架构改进

  • 完全代码重组,采用模块化、领域驱动的设计
  • HTTP 客户端重构,使用专用工具类以提高可靠性
  • 关键错误修复,修正了导致通信失败的畸形 JIRA API URL

🧪 测试与质量提升

  • 添加了 95 多个新测试,针对 HTTP 客户端工具类和边缘情况
  • 总计 822 个测试,确保全面覆盖和稳定性
  • 零 linting 警告,通过增强的 Biome 集成实现

🔧 技术改进

  • 增强的错误处理,提供更好的分类和可操作消息
  • 改进的日志记录,带有结构化的调试信息和性能监控
  • 类型安全增强,在整个项目中启用严格的 TypeScript 检查

🚀 性能与可靠性

  • 优化的 HTTP 请求,改善连接管理
  • 增强的错误恢复,改进重试逻辑和超时处理
  • 向后兼容性,从 v0.4.x 升级无缝

🚀 快速开始

安装

在您的 MCP 客户端配置中添加以下内容:

{
  "mcpServers": {
    "JIRA 工具": {
      "command": "bunx",
      "args": ["-y", "@dsazz/mcp-jira@latest"],
      "env": {
        "JIRA_HOST": "https://your-domain.atlassian.net",
        "JIRA_USERNAME": "your-email@example.com",
        "JIRA_API_TOKEN": "your-jira-api-token"
      }
    }
  }
}

开发设置

对于本地开发和测试:

# 克隆仓库
git clone https://github.com/Dsazz/mcp-jira.git
cd mcp-jira

# 安装依赖
bun install

# 设置环境变量
cp .env.example .env
# 编辑 .env 文件,填写您的 JIRA 凭证

# 构建项目
bun run build

# 使用 MCP Inspector 测试
bun run inspect

配置

创建一个 .env 文件,包含以下变量:

JIRA_HOST=https://your-instance.atlassian.net
JIRA_USERNAME=your-email@example.com
JIRA_API_TOKEN=your-jira-api-token-here

🔑 关于 JIRA API Token 的重要提示

  • 您可以在 Atlassian API Tokens 页面生成 JIRA API Token
  • Token 可能包含特殊字符,包括 = 符号
  • 将 Token 放在 .env 文件的一行中
  • 不要在 Token 值周围添加引号
  • 粘贴 Atlassian 提供的 Token

🧰 可用工具

核心 JIRA 工具

工具描述参数返回值
jira_get_assigned_issues获取分配给您的所有问题Markdown 格式的问题列表
jira_get_issue获取特定问题的详细信息issueKey: 问题键(例如,PD-312)Markdown 格式的详细信息
jira_get_issue_comments获取特定问题的评论,带有可配置选项见评论参数Markdown 格式的评论
jira_create_issue创建新的 JIRA 问题,具有全面的字段支持见问题创建参数Markdown 格式的创建结果
jira_update_issue更新现有问题,更改字段和状态转换见问题更新参数Markdown 格式的更新结果
jira_get_projects获取和浏览 JIRA 项目,带有过滤选项见项目参数Markdown 格式的项目列表
jira_get_boards获取 JIRA 看板(Scrum/Kanban),带有高级过滤见看板参数Markdown 格式的看板列表
jira_get_sprints获取敏捷项目管理中的冲刺信息见冲刺参数Markdown 格式的冲刺列表
jira_add_worklog向问题添加时间跟踪条目见工作日志参数Markdown 格式的工作日志结果
jira_get_worklogs获取问题的工作日志条目,带有日期过滤见工作日志参数Markdown 格式的工作日志列表
jira_update_worklog更新现有工作日志条目见工作日志参数Markdown 格式的更新结果
jira_delete_worklog删除问题的工作日志条目见工作日志参数Markdown 格式的删除结果
jira_get_current_user获取当前认证用户的信息Markdown 格式的用户详情
search_jira_issues使用 JQL 或辅助参数搜索 JIRA 问题见搜索参数Markdown 格式的搜索结果

问题创建参数

jira_create_issue 工具支持全面的问题创建:

必需

  • projectKey: 字符串 - 项目键(例如,"PROJ"
  • issueType: 字符串 - 问题类型(例如,"任务""错误""故事"
  • summary: 字符串 - 问题标题/摘要

可选字段

  • description: 字符串 - 详细描述(支持 ADF 格式)
  • priority: 字符串 - 优先级级别("最高""高""中""低""最低"
  • assignee: 字符串 - 分配人用户名或电子邮件
  • reporter: 字符串 - 报告人用户名或电子邮件
  • labels: 数组 - 应用于问题的标签
  • components: 数组 - 组件名称
  • fixVersions: 数组 - 固定版本名称
  • affectsVersions: 数组 - 影响版本名称
  • timeEstimate: 字符串 - JIRA 格式的时间估计(例如,"2h""1d 4h"
  • dueDate: 字符串 - ISO 格式的截止日期
  • environment: 字符串 - 环境描述
  • customFields: 对象 - 自定义字段值

示例

# 基本问题创建
jira_create_issue projectKey:"PROJ" issueType:"任务" summary:"修复登录错误"

# 包含所有字段的综合问题
jira_create_issue projectKey:"PROJ" issueType:"错误" summary:"严重的登录问题" description:"用户无法登录" priority:"高" assignee:"john.doe" labels:["紧急","安全"] timeEstimate:"4h"

问题更新参数

jira_update_issue 工具支持全面的问题更新:

必需

  • issueKey: 字符串 - 问题键(例如,"PROJ-123"

字段更新(任意组合):

  • summary: 字符串 - 更新问题标题
  • description: 字符串 - 更新描述
  • priority: 字符串 - 更改优先级
  • assignee: 字符串 - 重新分配问题
  • reporter: 字符串 - 更改报告人
  • timeEstimate: 字符串 - 更新时间估计
  • timeSpent: 字符串 - 记录已花费时间
  • dueDate: 字符串 - 更新截止日期
  • environment: 字符串 - 更新环境

数组操作(添加/移除/设置):

  • labels: 对象 - 修改标签({operation: "添加|移除|设置", values: ["标签1", "标签2"]}
  • components: 对象 - 修改组件
  • fixVersions: 对象 - 修改固定版本
  • affectsVersions: 对象 - 修改影响版本

状态转换

  • status: 字符串 - 转换到新状态(例如,"进行中""完成"

工作日志

  • worklog: 对象 - 添加工作日志条目({timeSpent: "2h", comment: "修复问题"}

示例

# 更新基本字段
jira_update_issue issueKey:"PROJ-123" summary:"更新标题" priority:"高"

# 添加标签并转换状态
jira_update_issue issueKey:"PROJ-123" labels:'{operation:"添加",values:["紧急"]}' status:"进行中"

# 记录工作并添加评论
jira_update_issue issueKey:"PROJ-123" worklog:'{timeSpent:"2h",comment:"完成测试"}'

项目参数

jira_get_projects 工具支持项目发现:

可选参数

  • maxResults: 数字(1-100,默认:50) - 结果数量限制
  • startAt: 数字(默认:0) - 分页偏移量
  • expand: 数组 - 额外字段(["description", "lead", "issueTypes", "url", "projectKeys"]

示例

# 获取所有项目
jira_get_projects

# 获取带有额外详情的项目
jira_get_projects expand:["description","lead","issueTypes"] maxResults:20

看板参数

jira_get_boards 工具支持看板管理:

可选参数

  • maxResults: 数字(1-100,默认:50) - 结果数量限制
  • startAt: 数字(默认:0) - 分页偏移量
  • type: 字符串 - 看板类型("scrum""kanban"
  • name: 字符串 - 按看板名称筛选
  • projectKeyOrId: 字符串 - 按项目筛选

示例

# 获取所有看板
jira_get_boards

# 获取特定项目的 Scrum 看板
jira_get_boards type:"scrum" projectKeyOrId:"PROJ"

# 按名称搜索看板
jira_get_boards name:"冲刺看板" maxResults:10

冲刺参数

jira_get_sprints 工具支持冲刺管理:

必需

  • boardId: 数字 - 获取冲刺的看板 ID

可选参数

  • maxResults: 数字(1-100,默认:50) - 结果数量限制
  • startAt: 数字(默认:0) - 分页偏移量
  • state: 字符串 - 冲刺状态("活跃""关闭""未来"

示例

# 获取看板的所有冲刺
jira_get_sprints boardId:123

# 获取仅活跃的冲刺
jira_get_sprints boardId:123 state:"活跃"

# 带分页获取冲刺
jira_get_sprints boardId:123 maxResults:10 startAt:20

工作日志参数

工作日志工具支持全面的时间跟踪:

jira_add_worklog 参数

必需

  • issueKey: 字符串 - 问题键(例如,"PROJ-123"
  • timeSpent: 字符串 - 已花费时间(JIRA 格式,例如,"2h""1d 4h""30m"

可选

  • comment: 字符串 - 描述已完成工作的评论
  • started: 字符串 - 工作开始时间(ISO 日期格式,默认为现在)
  • visibility: 对象 - 可见性设置({type: "group", value: "jira-developers"}

jira_get_worklogs 参数

必需

  • issueKey: 字符串 - 问题键(例如,"PROJ-123"

可选

  • startedAfter: 字符串 - 过滤在此日期之后开始的工作日志(ISO 格式)
  • startedBefore: 字符串 - 过滤在此日期之前开始的工作日志(ISO 格式)

jira_update_worklog 参数

必需

  • issueKey: 字符串 - 问题键(例如,"PROJ-123"
  • worklogId: 字符串 - 要更新的工作日志 ID

可选(任意组合):

  • timeSpent: 字符串 - 更新已花费时间
  • comment: 字符串 - 更新评论
  • started: 字符串 - 更新开始时间

jira_delete_worklog 参数

必需

  • issueKey: 字符串 - 问题键(例如,"PROJ-123"
  • worklogId: 字符串 - 要删除的工作日志 ID

示例

# 添加工作日志条目
jira_add_worklog issueKey:"PROJ-123" timeSpent:"2h" comment:"修复身份验证错误"

# 获取问题的所有工作日志
jira_get_worklogs issueKey:"PROJ-123"

# 获取上周的工作日志
jira_get_worklogs issueKey:"PROJ-123" startedAfter:"2025-05-29T00:00:00.000Z"

# 更新工作日志
jira_update_worklog issueKey:"PROJ-123" worklogId:"12345" timeSpent:"3h" comment:"更新工作描述"

# 删除工作日志
jira_delete_worklog issueKey:"PROJ-123" worklogId:"12345"

评论参数

jira_get_issue_comments 工具支持逐步披露,带有这些参数:

必需

  • issueKey: 字符串 - 问题键(例如,"PROJ-123"

基础选项

  • maxComments: 数字(1-100,默认:10) - 要检索的评论最大数量
  • orderBy: 字符串("created""updated",默认:"created") - 评论排序顺序

高级选项

  • includeInternal: 布尔值(默认:false) - 包括内部/受限评论
  • authorFilter: 字符串 - 按作者姓名或电子邮件筛选评论
  • dateRange: 对象 - 按日期范围筛选:
    • from: 字符串(ISO 日期) - 开始日期
    • `