Jira集成服务器

一个用于Jira API集成的模型上下文协议(MCP)服务器,使AI助手能够管理问题、搜索、评论、工作流转换和附件处理。

  • by pdogra1299
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 pdogra1299/jira-mcp-server

使用说明

Jira MCP服务器

用于Jira API集成的模型上下文协议(MCP)服务器。该服务器使Claude等AI助手能够与Jira Cloud实例进行交互,以进行问题管理、搜索、评论、工作流转换和附件处理。

特性

  • 问题管理:使用自定义字段支持获取、创建、更新和分配Jira问题
  • JQL搜索:使用Jira查询语言搜索问题
  • 评论:添加和检索对问题的评论
  • 工作流程:获取可用转换并更改问题状态
  • 元数据发现:获取项目的字段要求和允许值
  • 用户搜索:通过电子邮件或作业名称查找用户
  • 项目:列出所有可访问的项目
  • 附件:列出、上传、删除附件并检索其内容——文本文件以文本形式返回,图像通过Claude vision内联呈现
  • 问题链接:添加、删除和列出问题(关联、块、重复)之间的关系,而不涉及约束 parent 层次结构字段
  • 代币高效:6个复合工具,而不是17个以上的扁平工具——每个会话减少约50%的令牌

安装

使用npm(推荐)

npm install -g @nexus2520/jira-mcp-server

来源

  1. 克隆仓库:

    git clone https://github.com/pdogra1299/jira-mcp-server.git
    cd jira-mcp-server
    
  2. 安装依赖项:

    pnpm install
    
  3. 构建项目:

    pnpm run build
    

先决条件

  • Node.js>=16.0.0
  • 拥有API访问权限的Jira云帐户
  • Jira API令牌(从生成 Atlassian帐户设置)

配置

环境变量

  • JIRA_EMAIL:您的Atlassian帐户电子邮件
  • JIRA_API_TOKEN:您的Jira API代币
  • JIRA_BASE_URL:您的Jira实例URL(例如。, https://yourcompany.atlassian.net)

Claude桌面配置

将以下内容添加到您的Claude Desktop MCP设置文件中:

位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

配置(如果通过npm安装):

{
  "mcpServers": {
    "jira": {
      "command": "npx",
      "args": [
        "-y",
        "@nexus2520/jira-mcp-server"
      ],
      "env": {
        "JIRA_EMAIL": "your-email@company.com",
        "JIRA_API_TOKEN": "your-api-token-here",
        "JIRA_BASE_URL": "https://yourcompany.atlassian.net"
      }
    }
  }
}

配置(如果从源代码构建):

{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": [
        "/absolute/path/to/jira-mcp-server/build/index.js"
      ],
      "env": {
        "JIRA_EMAIL": "your-email@company.com",
        "JIRA_API_TOKEN": "your-api-token-here",
        "JIRA_BASE_URL": "https://yourcompany.atlassian.net"
      }
    }
  }
}

获取Jira API代币

  1. 首选 Atlassian帐户设置
  2. 点击“创建API令牌”
  3. 给它一个标签(例如“Claude MCP”)
  4. 复制生成的令牌
  5. 在配置中使用它

工具架构

此服务器公开 6个复合工具 --每个都有一个 action 选择操作的参数。与17个以上的平面工具相比,这种设计将工具定义的令牌开销减少了约50%,为实际工作留下了更多的上下文。

工具 操作 描述
jira_issues get create update assign 完整的问题生命周期管理
jira_search issues projects users create_metadata 搜索和发现
jira_comments get add 阅读和撰写评论
jira_workflow get_transitions transition 状态转换
jira_attachments list get_content upload delete 文件附件
jira_links list add remove get_link_types 问题链接关系

可用工具

jira_issues

管理Jira问题的整个生命周期。

必需: action

操作 描述 必需参数 可选参数
get 获取完整的问题详细信息 issueKey —
create 创建新问题 projectKey, summary, issueType description, priority, assignee, labels, customFields
update 编辑现有问题的字段 issueKey summary, description, priority, assignee, labels, customFields
assign 设定或清除受让人 issueKey, assignee —

提示:

  • 总是打电话 jira_search 随着 action=create_metadata 在创建问题以发现所需的自定义字段和允许的值之前。
  • 通过 assignee: "-1" 取消分配问题。
  • description 接受纯文本或 Atlassian文档格式(ADF) 对象。
  • customFields 是一个键值映射: {"customfield_10000": "value"}.

例子:

Get details for PROJ-123
Create a Bug in project PROJ with summary "Login button broken"
Update PROJ-123 priority to High
Assign PROJ-123 to john.doe@company.com

jira_search

搜索并发现Jira资源。

必需: action

操作 描述 必需参数 可选参数
issues 通过JQL搜索问题 jql maxResults, fields
projects 列出所有可访问的项目 -- maxResults
users 按姓名或电子邮件查找用户 query maxResults
create_metadata 获取创建问题的现场要求 projectKey issueType

常见JQL示例:

project = PROJ AND status = Open
assignee = currentUser() AND status != Done
priority = High AND created >= -7d

提示:

  • 使用 create_metadata 之前 jira_issues create 了解项目/问题类型需要哪些字段。
  • 使用 users 要查找分配的帐户ID,请将返回的帐户ID或电子邮件传递给 jira_issues assign.
  • fields (为 issues)控制每个结果获取哪些JIRA字段,例如。 ["summary","status","priority","duedate","assignee"].默认为 ["summary"].

结构化输出:the issues 行动和 jira_issues get 返回a structuredContent JSON有效载荷与markdown一起使用,因此程序化消费者可以直接读取字段,而无需解析markdown。对于 issues 它是 { jql, count, isLast, nextPageToken, issues: [{ key, id, self, fields }] }.


jira_comments

阅读并撰写对Jira问题的评论。

必需: action, issueKey

操作 描述 必填参数
get 获取某个问题的所有评论 --
add 发表新评论 comment

comment 接受纯文本或ADF对象。

例子:

Get all comments on PROJ-123
Add a comment to PROJ-123: "Fixed in PR #456"

jira_workflow

管理问题状态转换。

必需: action, issueKey

操作 描述 必需参数 可选参数
get_transitions 列出可用的状态转换 -- --
transition 将问题移动到新状态 transitionId comment

小贴士:总是打电话 get_transitions 第一,转换ID因项目和问题类型而异。这 transitionId 从响应中传递给 transition.

例子:

Get available transitions for PROJ-123
Move PROJ-123 to "In Progress" (use get_transitions first to find the ID)

jira_attachments

管理Jira问题的文件附件。

必需: action

操作 描述 必需参数 可选参数
list 列出所有带有元数据的附件 issueKey —
get_content 下载并返回文件内容 attachmentId mimeType
upload 将本地文件附加到问题 issueKey, filePath fileName
delete 按ID删除附件 attachmentId —

返回的内容类型 get_content:

  • 文本文件 (text/*, application/json, application/xml):作为可读文本返回
  • 图像 (image/*):以base64返回--Claude将内联呈现它们
  • 其他类型 (PDF、zip等):返回带有描述性消息的文件元数据

提示:

  • 使用 list 首先在呼叫前获取附件ID get_content 或 delete.
  • fileName 在 upload 覆盖Jira中显示的文件名(默认为文件的基名)。

例子:

List attachments on PROJ-123
Get the content of attachment 136904
Upload /tmp/report.pdf to PROJ-123
Delete attachment 136904

jira_links

独立于Jira的项目层次结构配置来管理问题之间的关系——当您需要将Bug与Story相关联但项目不允许Bug时,这很有用→ 故事是一种亲子关系。

必需: action

操作 描述 必需参数 可选参数
get_link_types 列出此Jira实例的可用链接类型名称 -- --
add 在两个问题之间建立联系 issueKey, linkedIssueKey, linkType direction
list 列出问题上的所有链接,并附上链接ID issueKey —
remove 按ID删除链接 linkId —

链接方向:

  • 对称类型(Relates, Duplicate): direction 没关系。
  • 方向类型(Blocks, Cloners, Causes): direction: outward 手段 issueKey 是外侧(例如。 issueKey 块 linkedIssueKey); direction: inward 手段 issueKey 是内侧(例如。 issueKey 被...阻挡 linkedIssueKey).默认为 outward.

提示:

  • 跑 get_link_types 第一,链接类型名称因Jira实例配置而异。
  • 使用 list 寻找a linkId 打电话之前 remove.

例子:

List the link types available in Jira
Link PROJ-1 to PROJ-2 as Relates
Mark PROJ-1 as blocking PROJ-2
List all links on PROJ-1
Remove link 10042

api参考

此服务器使用 Jira REST API v3.

故障排除

“错误:需要JIRA_EMAIL和JIRA_API_TOKEN”

确保您已在MCP配置中设置了环境变量。

身份验证错误

  • 验证您的API令牌是否正确
  • 确保您的电子邮件与您的Atlassian帐户匹配
  • 检查你的 JIRA_BASE_URL 没有尾随斜线

权限错误

API令牌使用创建它的用户的权限。请确保您的帐户对您尝试执行的操作具有必要的权限。

许可证

麻省理工学院

作者

帕特多格拉

贡献

请随时打开问题或提交改进请求!