Jira API服务

提供与Jira API交互的FastMCP服务器,支持管理Jira项目、问题和用户。

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

使用说明

Jira MCP服务器

该项目提供了一个FastMCP服务器,用于与Jira API交互。它公开了用于管理Jira项目、问题和用户的各种工具。

可用工具

服务器公开了以下工具:

通用工具

  • get_projects:从Jira检索所有项目。
  • get_priorities:返回所有可用问题优先级的列表。
  • get_labels:检索Jira中可用的所有标签。
  • get_issue_statuses:检索Jira实例中定义的所有问题状态。
  • get_current_user:检索有关当前经过身份验证的Jira用户的信息。

项目工具

  • get_project_users:获取与给定Jira项目关联的所有用户。
  • get_project_issues:从Jira获取给定项目的所有问题。
  • get_project_issue_types:检索特定Jira项目可用的所有问题类型。

问题工具

  • add_issue_labels:向Jira问题添加一个或多个标签。
  • assign_issue:将Jira问题分配给用户。
  • change_issue_description:更改Jira问题的描述。
  • change_issue_environment:更改Jira问题的环境字段。
  • change_issue_labels:用一组新标签替换Jira问题的所有标签。
  • change_issue_parent:更改Jira问题的父级。
  • change_issue_priority:更改Jira问题的优先级。
  • change_issue_reporter:更换Jira问题的记者。
  • change_issue_title:更改Jira问题的摘要/标题。
  • comment_issue:为Jira问题添加评论。
  • create_issue:创建新的Jira问题。
  • delete_issue:删除Jira问题。
  • delete_issues_link:删除两个问题之间的链接。
  • get_available_transitions:检索给定Jira问题的所有可用转换。
  • get_issue:获取特定问题的详细信息。
  • get_issue_creation_metadata:检索特定项目和问题类型的问题创建元数据。
  • get_issue_link_types:返回所有可用问题链接类型的列表。
  • link_issues:将两个问题联系起来。
  • remove_issue_labels:从Jira问题中删除一个或多个标签。
  • transition_issue:将Jira问题转换为新状态。
  • update_issue_duedate:更新Jira问题的到期日期。

码头工人

该项目包括 Dockerfile 在容器中构建和运行MCP服务器。

Dockerfile详解

这 Dockerfile 分多个阶段构建,以优化构建过程并创建一个小而高效的最终图像。

  1. 基本图像:它以 ghcr.io/astral-sh/uv:python3.13-alpine,附带的轻量级Python映像 uv 预安装。
  2. 再进行:然后复制 uv.lock 和 pyproject.toml 使用以下命令文件和安装依赖项 uv sync。这利用了Docker的层缓存,因此只有在这些文件发生更改时才会重新安装依赖项。
  3. 复制源代码:然后将应用程序源代码的其余部分复制到映像中。
  4. 安装项目:项目本身已安装。
  5. 集 PATH:The PATH 更新环境变量以包括虚拟环境的 bin 目录,所以 fastmcp 可执行文件可以直接运行。
  6. 入口点:The ENTRYPOINT 设置为使用以下命令运行MCP服务器 fastmcp run jira_mcp_server/server.py.

构建Docker镜像

要构建Docker镜像,请从项目的根目录运行以下命令:

docker build -t jira-mcp-server .

运行Docker容器

要运行Docker容器,您需要提供必要的环境变量。您可以通过创建 .env 项目根目录中的文件,内容如下:

JIRA_BASE_URL=https://your-jira-instance.atlassian.net/rest/api/3/
JIRA_USER=your-jira-username
JIRA_API_KEY=your-jira-api-key
REQUESTS_TIMEOUT=30

# Logging configuration
# LOG_LEVEL can be DEBUG, INFO, WARNING, ERROR, CRITICAL
LOG_LEVEL=INFO
# LOG_FILE is the name of the log file. If provided, logs will be written to /app/logs/<LOG_FILE> inside the container.
# If not provided, logs will be sent to stderr.
# LOG_FILE=jira_mcp_server.log

然后,您可以使用默认值运行mcp服务器 stdio 使用以下命令进行传输:

docker run --rm -i --env-file path/to/.env jira-mcp-server

要启用文件日志记录并将日志持久化到容器外部,您需要:

  1. 未注释和设置 LOG_FILE 在你的 .env 文件(例如。, LOG_FILE=jira_mcp_server.log).
  2. 将本地卷装载到 /app/logs 容器内的目录。

例如,将日志存储在名为的本地文件夹中 my_local_logs_folder:

docker run --rm -i --env-file path/to/.env -v my_local_logs_folder:/app/logs jira-mcp-server