Jira问题创建服务器

一个实现MCP协议和REST API的服务器,用于创建Jira问题,支持MCP兼容客户端和ChatGPT自定义GPT动作集成。

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

使用说明

Jira MCP服务器

用于创建Jira问题的模型上下文协议(MCP)服务器。此服务器实现了MCP协议,可以与MCP兼容的客户端(如Postman MCP客户端)一起使用,也可以作为ChatGPT的自定义GPT操作进行集成。

概述

这是一个两用服务器,提供:

  • MCP协议端点 (/mcp)-对于使用模型上下文协议的MCP兼容客户端
  • REST API端点 (/api/create-issue)-对于自定义GPT操作和其他REST API客户端

这两个端点都会产生Jira问题,但使用不同的协议。MCP端点使用JSON-RPC格式,而REST端点使用标准HTTP/JSON。

先决条件

  • Node.js(v16或更高版本)
  • npm或纱线
  • 具有API访问权限的Jira帐户
  • Postman(或任何HTTP客户端)用于测试

安装

  1. 克隆存储库:
git clone https://github.com/coollikeabreeze/jira-mcp-server.git
cd jira-mcp-server
  1. 安装依赖项:
npm install

配置

环境变量

创建一个 .env 根目录中的文件,包含以下变量:

# YOUR JIRA ACCOUNT & TOKEN INFORMATION
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-api-token
JIRA_PROJECT_KEY=YOUR_PROJECT_KEY
PORT=3000

获取Jira API代币:

  1. 首选 Atlassian帐户设置
  2. 点击“创建API令牌”
  3. 复制令牌并将其添加到您的 .env 文件

SSL证书

服务器使用HTTPS和自签名证书。使用以下方法生成它们:

openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.cert -days 365 -nodes -subj "/C=US/ST=State/L=City/O=Organization/CN=localhost"

这将创建:

  • server.key -私钥(已在 .gitignore)
  • server.cert -证书文件(已在 .gitignore)

运行服务器

启动开发服务器:

npm run dev

服务器将于启动 https://localhost:3000/mcp (或您配置的端口)。

用法

作为MCP服务器

主要用例是作为MCP服务器。使用任何兼容MCP的客户端进行连接:

使用Postman MCP客户端进行测试

Postman通过MCP客户端内置了对MCP服务器的支持。以下是如何连接:

  1. 打开邮差MCP客户端:

    • 在Postman中,导航到MCP客户端部分
    • 点击“添加服务器”或“连接到服务器”
  2. 配置HTTPS连接:

    • 选择 超文本传输安全协议 作为连接类型
    • 服务器URL: https://localhost:3000/mcp
    • 端口: 3000 (或您配置的端口)
    • 重要:由于我们使用自签名证书,您可能需要:
      • 接受证书警告,或
      • 转到邮递员设置→ 常规并暂时禁用“SSL证书验证”
  3. 连接到服务器:

    • 点击“连接”以建立连接
    • 邮递员将自动从MCP服务器中发现可用工具

使用create_jira_issue工具

连接后,您可以使用 create_jira_issue 工具:

所需参数:

  • summary (string)-问题摘要/标题
  • description (字符串或ADF JSON对象)-问题描述。接受:
    • 字符串:纯文本描述(将转换为ADF格式)
    • ADF JSON对象:用于富文本的Atlassian文档格式(首选)。这是自定义GPT操作发送的格式,支持粗体、斜体、链接、列表和其他格式。
  • issuetype (string)-问题类型名称(例如,“任务”、“Bug”、“故事”)

可选参数:

  • parentKey (string)-子任务的父问题密钥
  • labels (字符串数组)-应用于问题的标签

示例工具调用:

  • 工具: create_jira_issue

  • 参数(带字符串描述):

    {
      "summary": "Test Issue from Postman",
      "description": "This is a test issue created via the MCP server",
      "issuetype": "Task",
      "parentKey": "PROJ-123",
      "labels": ["test", "postman"]
    }
    
  • 参数(带有ADF JSON描述-由自定义GPT操作使用):

    {
      "summary": "Test Issue from GPT",
      "description": {
        "type": "doc",
        "version": 1,
        "content": [
          {
            "type": "paragraph",
            "content": [
              {
                "type": "text",
                "text": "This is a test issue with "
              },
              {
                "type": "text",
                "text": "rich text formatting",
                "marks": [
                  {
                    "type": "strong"
                  }
                ]
              }
            ]
          }
        ]
      },
      "issuetype": "Task",
      "labels": ["test", "gpt"]
    }
    

示例响应

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Created Jira issue PROJ-456"
      }
    ],
    "meta": {
      "issueKey": "PROJ-456",
      "issueId": "12345",
      "url": "https://your-domain.atlassian.net/rest/api/3/issue/12345"
    }
  }
}

错误处理

如果出现错误,您将收到如下响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32603,
    "message": "Internal error",
    "data": "Jira error 400: ..."
  }
}

故障排除

  • SSL证书错误:
    • 连接时接受证书警告,或
    • 在邮递员设置中暂时禁用SSL验证→ 将军
  • 连接被拒绝:
    • 确保服务器正在运行(npm run dev)
    • 验证服务器URL是否匹配: https://localhost:3000/mcp
    • 检查端口是否与您的 PORT 环境变量
  • MCP客户端连接问题:
    • 确保您在Postman MCP客户端中使用HTTPS选项
    • 验证服务器是否可以在配置的URL上访问
  • Jira API错误:
    • 在中检查您的API令牌和项目密钥是否正确 .env 文件
    • 验证您的Jira帐户是否有权在项目中创建问题
  • 缺少环境变量:
    • 验证所有必需的变量是否已在您的 .env 文件
    • 更新后重新启动服务器 .env 文件

要渲染的部署

此服务器可以部署到公共HTTPS终结点的Render。

先决条件

  • 渲染帐户(可用免费层)
  • 您的存储库已推送到GitHub(或连接到Render)

部署步骤

  1. 将存储库连接到渲染:

    • 首选 渲染仪表板
    • 点击“新建+”→ “Web服务”
    • 连接您的GitHub存储库
    • 选择 jira-mcp-server 仓库
  2. 配置服务:

    • 名字: jira-mcp-server (或您喜欢的名字)
    • 环境: Node
    • 生成命令: npm install && npm run build
    • 启动命令: npm start
    • 计划:免费(或选择付费计划)
  3. 设置环境变量: 在Render的仪表板中添加以下环境变量:

    • JIRA_BASE_URL -您的Jira实例URL(例如。, https://your-domain.atlassian.net)
    • JIRA_EMAIL -您的Jira帐户电子邮件
    • JIRA_API_TOKEN -您的Jira API代币
    • JIRA_PROJECT_KEY -您的Jira项目密钥
    • USE_HTTPS -设置为 false (渲染处理HTTPS终止)
    • NODE_ENV -设置为 production
  4. 部署:

    • 点击“创建Web服务”
    • Render将自动构建和部署您的服务
    • 您的服务将在 https://your-service-name.onrender.com/mcp

使用render.yaml(替代)

如果您更喜欢配置为代码,可以使用附带的 render.yaml 文件:

  1. 将代码推送到GitHub(确保 render.yaml 包括在内)
  2. 在渲染面板中,转到“新建+”→ “蓝图”
  3. 连接您的存储库
  4. 渲染将自动检测和使用 render.yaml
  5. 设置环境变量(标记为 sync: false 在YAML中)

部署后

部署后,您的MCP服务器将在以下位置可用:

  • MCP端点: https://your-service-name.onrender.com/mcp
  • REST API端点: https://your-service-name.onrender.com/api/create-issue

测试MCP端点:

  • 使用Postman MCP客户端或任何兼容MCP的客户端
  • 服务器URL: https://your-service-name.onrender.com/mcp
  • 连接类型:HTTPS(由于Render提供了有效的SSL,因此没有证书警告)

测试REST API端点:

  • 使用任何HTTP客户端或作为自定义GPT操作集成
  • 端点: https://your-service-name.onrender.com/api/create-issue
  • 需要承载令牌身份验证(设置 API_KEY 在渲染中)

作为自定义GPT操作

此MCP服务器还公开了与自定义GPT操作兼容的REST API端点,允许您将Jira问题创建直接集成到ChatGPT中。

设置步骤:

  1. 部署以渲染 (见下面的部署部分)
  2. 复制OpenAPI模式:复制以下内容 openapi.yaml 从您的存储库
  3. 添加到自定义GPT:在自定义GPT配置中,转到操作→ 创建新操作→ 粘贴架构
  4. 配置身份验证:
    • 选择“承载”身份验证
    • 输入您的 API_KEY 值(在渲染环境变量中设置)
  5. 描述格式:使用自定义GPT操作时 description 字段将自动以ADF JSON格式发送,支持Jira问题中的富文本格式(粗体、斜体、链接、列表等)

终点:

  • /mcp -MCP协议端点(用于MCP客户端)
  • /api/create-issue -REST API终结点(用于自定义GPT操作)

发展

服务器使用:

  • 用于HTTP服务器的Express.js
  • 用于MCP协议处理的模型上下文协议SDK
  • TypeScript用于类型安全

许可证

ISC