Jira集成服务器

一个用于Jira集成的模型上下文协议(MCP)服务器,提供全面的问题管理和附件支持功能。

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

使用说明

Jira MCP 服务器

一个用于Jira集成的模型上下文协议(MCP)服务器,提供全面的附件支持。

特点/特性

  • 问题管理获取、创建、更新和搜索支持字段过滤的Jira问题
  • 评论在问题上添加和删除带有自动格式化的评论
  • 文本格式化将类似Markdown的文本自动转换为Atlassian文档格式(ADF)
    • 代码块、内联代码、项目符号列表、编号列表、换行
  • 附件:
    • 获取带有元数据的某个问题的所有附件
    • 将特定附件下载到磁盘

安装

npm install
npm run build

配置

创建一个 .env 在根目录下使用您的Jira凭据创建文件:

JIRA_URL=https://your-domain.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-api-token

获取Jira API令牌

  1. 访问 https://id.atlassian.com/manage-profile/security/api-tokens
  2. 点击“创建API令牌”
  3. 给它贴上标签并复制生成的令牌
  4. 在您的(应用/系统中)使用此令牌 .env 文件

与Claude桌面版的使用

将此服务器添加到您的Claude桌面配置中:

macOS(中文可译为“麦金塔操作系统”或直接保留原英文名称,根据上下文决定是否需要翻译)

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

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

Windows

编辑 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["C:\\path\\to\\jira-mcp\\build\\index.js"],
      "env": {
        "JIRA_URL": "https://your-domain.atlassian.net",
        "JIRA_EMAIL": "your-email@example.com",
        "JIRA_API_TOKEN": "your-api-token"
      }
    }
  }
}

可用工具

获取问题

通过密钥获取Jira问题的详细信息。支持字段过滤以减小响应大小并避免令牌限制。

参数:

  • issueKey (字符串,必填):Jira 问题密钥(例如,“PROJ-123”)
  • fields (字符串数组,可选):要检索的特定字段(例如。, ["summary", "status", "description"])。 如果未提供,则返回所有字段。

示例:

Get details for issue PROJ-123
Get only the summary and status of issue PROJ-123

常见字段:

  • summary问题标题
  • status当前状态
  • description问题描述
  • assignee分配的用户
  • reporter记者用户
  • priority优先级级别
  • created创建日期
  • updated最后更新日期
  • comment评论
  • attachment附件

注: 使用 fields 参数用于限制在处理包含大量评论、附件或自定义字段的问题时的响应大小。这有助于避免达到MCP(可能是指某种系统或平台的)25,000个标记的限制。

搜索问题

使用JQL(Jira查询语言)搜索Jira问题。

参数:

  • jql (字符串,必需): JQL 查询字符串
  • maxResults (数字,可选):结果的最大数量(默认:50)

示例:

Search for all open bugs in project PROJ

创建问题

创建一个新的 Jira 问题,并支持自动格式化。

参数:

  • project (字符串,必填):项目密钥
  • summary (字符串,必填):问题标题
  • description (字符串,可选):问题描述(支持格式化 - 详见下文)
  • issueType (字符串,必填):问题类型(任务、错误、故事等)

示例:

Create a new bug in project PROJ with title "Login button not working"

格式化支持: 描述字段支持类似Markdown的格式,并会自动转换为Atlassian文档格式(ADF):

  • 换行符自动保存
  • 代码块使用三重反引号,并可选指定语言
    ```javascript
    function example() {
      return true;
    }
    
  • 内联代码使用单个反引号 like this
  • 项目符号列表以……开头的起跑线 -, *,或者 •
  • 编号列表以……开始行 1., 2.等。

更新问题

更新现有的Jira问题,并支持自动格式化。

参数:

  • issueKey (字符串,必填):Jira 问题密钥
  • summary (字符串,可选):新问题标题
  • description (字符串,可选):新问题描述(支持格式化 - 请参阅 create_issue)

示例:

Update issue PROJ-123 with a new description

添加评论

在Jira问题中添加带有自动格式化支持的评论。

参数:

  • issueKey (字符串,必填):Jira 问题密钥
  • comment (字符串,必填):评论文本(支持格式化 - 请参阅 create_issue)

示例:

Add a comment to issue PROJ-123 saying "This has been fixed"

删除评论

从Jira问题中删除一条评论。

参数:

  • issueKey (字符串,必填):Jira 问题密钥
  • commentId (字符串,必填):要删除的评论ID

示例:

Delete comment 10001 from issue PROJ-123

如何获取评论ID: 你可以通过获取问题(issue)来获得评论ID comment 领域/场地:

get_issue({
  issueKey: "PROJ-123",
  fields: ["comment"]
})

响应中的每条评论都将有一个 id 一个可用于删除的字段。

获取附件

获取Jira问题的所有附件,包括元数据和下载URL。

参数:

  • issueKey (字符串,必填):Jira 问题密钥

返回值:

  • 带有元数据的附件数组:
    • id附件ID
    • filename原始文件名
    • author作者信息
    • created创建时间戳
    • size文件大小(以字节为单位)
    • mimeTypeMIME 类型
    • content下载网址

示例:

Get all attachments for issue PROJ-123

下载附件

下载特定附件并将其保存到磁盘。这样可以避免大文件的令牌限制。

参数:

  • attachmentId (字符串,必填):附件ID(来自get_attachments)
  • outputDir (字符串,可选):保存文件的目录(默认为当前目录)

返回值:

  • id附件ID
  • filename原始文件名
  • mimeTypeMIME 类型
  • size文件大小(以字节为单位)
  • savedPath文件保存的完整路径

示例:

Download attachment with ID 12345 to ./downloads

注: 大型附件直接保存到磁盘以避免MCP令牌限制(25,000个令牌)。文件以清理后的文件名保存在指定目录中。

发展

构建

npm run build

手表模式

npm run watch

故障排除

认证问题

  • 验证您的Jira URL是否正确(应包含完整域名)
  • 确保您的API令牌有效且未过期
  • 确认您的电子邮件与您的Atlassian帐户相匹配

连接问题

  • 确保您的Jira实例可访问
  • 检查是否使用了代理服务器或防火墙
  • 验证您的实例上是否可用Jira REST API v3

依恋问题

  • 确保您有权限查看该问题中的附件
  • 大附件可能需要一些时间来下载,并且会直接保存到磁盘上
  • 确保您在输出目录中拥有写入权限
  • 检查可用磁盘空间以容纳大附件

API 参考文档

此服务器使用Jira REST API v3。如需更多信息:

许可证

麻省理工学院(MIT)