Jira数据增强服务器

一个用于通过Jira工单数据增强提示的MCP服务器,支持将Atlassian文档格式转换为Markdown并提供强大的模板系统。

  • by suffle
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 suffle/jira-mcp-server

使用说明

@suffle/jira mcp服务器

MCP(模型上下文协议)服务器,用于用Jira票证数据丰富提示。将Atlassian文档格式(ADF)转换为Markdown,并提供强大的模板系统。

特性

  • 🎫 通过REST API获取全面的Jira票证数据
  • 📝 将ADF(Atlassian文档格式)富文本转换为Markdown
  • 🎨 具有条件句和循环的强大模板
  • 🔧 通过环境变量轻松配置
  • 📦 作为npm包使用 npx
  • 💪 具有完全类型安全的TypeScript

安装

作为全球套餐

npm install -g @suffle/jira-mcp-server
# or
pnpm add -g @suffle/jira-mcp-server

配备npx(无需安装)

npx @suffle/jira-mcp-server

快速开始

1.获取Jira API证书

  1. 首选https://id.atlassian.com/manage-profile/security/api-tokens
  2. 点击“创建API令牌”
  3. 保存API密钥

2.配置环境变量

设置这些环境变量:

export JIRA_BASE_URL="https://your-domain.atlassian.net"
export JIRA_USERNAME="your-email@example.com"
export JIRA_API_KEY="your-api-key-here"

可选:

export JIRA_PROMPT_PATH="/path/to/custom-template.txt"

3.配置MCP客户端

适用于克劳德桌面

编辑MCP配置文件:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "jira": {
      "command": "npx",
      "args": ["@suffle/jira-mcp-server"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_USERNAME": "your-email@example.com",
        "JIRA_API_KEY": "your-api-key-here"
      }
    }
  }
}

对于VS代码MCP

创建 .vscode/mcp.json:

{
  "servers": {
    "jira": {
      "command": "npx",
      "args": ["@suffle/jira-mcp-server"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_USERNAME": "your-email@example.com",
        "JIRA_API_KEY": "your-api-key-here",
        "JIRA_PROMPT_PATH": "${workspaceFolder}/prompts/my-template.txt"
      }
    }
  }
}

4.使用提示

在您的MCP客户端(Claude Desktop、VS Code等)中:

/jira_ticket PROJ-123

这将获取票证数据,并在发送前将丰富的提示插入到您的消息输入中以供查看和编辑。##模板系统

模板语法

基本占位符:

{{ ticket.key }}
{{ ticket.summary }}
{{ ticket.description }}
{{ ticket.status }}
{{ ticket.priority }}
{{ ticket.assignee }}
{{ ticket.reporter }}
{{ ticket.issueType }}
{{ ticket.created }}
{{ ticket.updated }}
{{ ticket.url }}
{{ today }}
{{ now }}

条件块:

{{#if ticket.assignee}}
Assignee: {{ ticket.assignee }}
{{/if}}

循环(用于数组):

{{#if ticket.labels}}
Labels:
{{#each ticket.labels}}
- {{ this }}
{{/each}}
{{/if}}

可用数据字段

简单字段:

  • ticket.key -Jira票证密钥(例如PROJ-123)
  • ticket.id -内部票ID
  • ticket.summary -门票摘要/标题
  • ticket.description -门票描述
  • ticket.status -当前状态
  • ticket.statusCategory -状态类别(待办、进行中、已完成)
  • ticket.priority -优先级
  • ticket.issueType -问题类型(Bug、故事、任务等)
  • ticket.assignee -指定人员姓名
  • ticket.assigneeEmail -受让人电子邮件
  • ticket.reporter -报告人姓名
  • ticket.reporterEmail -记者电子邮件
  • ticket.created -创建日期(格式化)
  • ticket.updated -上次更新日期(格式化)
  • ticket.url -门票的直接URL

数组字段(与 #each):

  • ticket.labels -标签数组
  • ticket.components -组件阵列
  • ticket.fixVersions -修复版本数组
  • ticket.affectedVersions -受影响版本数组

日期字段:

  • today -当前日期(格式化)
  • now -当前日期和时间(格式化)

示例模板

# {{ ticket.key }}: {{ ticket.summary }}

**Type:** {{ ticket.issueType }}
**Status:** {{ ticket.status }}
**Priority:** {{ ticket.priority }}

## Description
{{ ticket.description }}

## Details
- **Reporter:** {{ ticket.reporter }}
{{#if ticket.assignee}}
- **Assignee:** {{ ticket.assignee }}
{{/if}}
- **Created:** {{ ticket.created }}
- **Updated:** {{ ticket.updated }}

{{#if ticket.labels}}
## Labels
{{#each ticket.labels}}
- {{ this }}
{{/each}}
{{/if}}

{{#if ticket.components}}
## Components
{{#each ticket.components}}
- {{ this }}
{{/each}}
{{/if}}

[View in Jira]({{ ticket.url }})

可用数据字段

字段 描述 类型
ticket.key 票证密钥 字符串
ticket.id 内部ID 字符串
ticket.summary 标题 字符串
ticket.description 描述(Markdown) 字符串
ticket.status 状态名称 字符串
ticket.statusCategory 状态类别 字符串
ticket.priority 优先级 字符串
ticket.issueType 问题类型 字符串
ticket.assignee 受让人姓名 string
ticket.assigneeEmail 受让人电子邮件 string
ticket.reporter 报告者名称 字符串
ticket.reporterEmail 报告人电子邮件 string
ticket.created 创建日期 字符串
ticket.updated 上次更新 string
ticket.labels 标签 数组
ticket.components 组件 阵列
ticket.fixVersions 修复版本 数组
ticket.affectedVersions 受影响的版本 阵列
ticket.url 票证URL 字符串

多种配置

您可以使用不同的模板文件运行多个服务器实例:

{
  "mcpServers": {
    "jira-default": {
      "command": "npx",
      "args": ["@suffle/jira-mcp-server"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_USERNAME": "your-email@example.com",
        "JIRA_API_KEY": "your-api-key-here"
      }
    },
    "jira-detailed": {
      "command": "npx",
      "args": ["@suffle/jira-mcp-server"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_USERNAME": "your-email@example.com",
        "JIRA_API_KEY": "your-api-key-here",
        "JIRA_PROMPT_PATH": "/Users/you/templates/detailed.txt"
      }
    }
  }
}

发展

地方发展

git clone https://github.com/suffle/jira-mcp-server.git
cd jira-mcp-server
pnpm install
pnpm build

运行测试

pnpm test
pnpm test:coverage

出版

当你推送一个git标签时,包会自动发布到npm:

git tag v1.0.1
git push origin v1.0.1

所需的GitHub机密:

  • NPM_TOKEN -您的npm身份验证令牌

要获取npm令牌:

  1. 首选https://www.npmjs.com/settings/YOUR_USERNAME/tokens
  2. 点击“生成新令牌”→ “经典令牌”
  3. 选择“自动化”类型
  4. 复制令牌并将其添加到您的GitHub存储库机密中

许可证

麻省理工学院

作者

洗牌

仓库

https://github.com/suffle/jira-mcp-server