jiradatacenter-mcp

jiradatacenter-mcp

MCP server for Jira Data Center / Server (self-hosted Jira, REST API v2) that exposes core work-item project-management operations (platform + Agile) as MCP tools.

Category
访问服务器

README

jiradatacenter-mcp

MCP server for Jira Data Center / Server (self-hosted Jira, REST API v2) — exposes core work-item project-management operations (platform + Agile) as MCP tools.

Overview

  • Stateless HTTP service. No credentials are ever persisted — each request supplies its own site URL and Basic Auth credentials via headers, used only for the lifetime of that single request.
  • Supports concurrent requests; per-request credential isolation is done via Python contextvars, not a global/shared client instance.
  • Entry points: POST /mcp (MCP protocol) and GET /health (health check).
  • Default port: 8080 (configurable via MCP_HTTP_PORT).

Scope

214 tools across 34 categories, covering the platform REST API (/rest/api/2/...) plus the Agile REST API (/rest/agile/1.0/..., board/sprint/epic).

MSPbots' own stored integration config for this vendor is a pre-generic-framework (legacy) integration — all 17 of its configured endpoints return an entirely empty apiConfig (method: None, url: None, params: [], headers: [], migrationStatus: "0"), because the real endpoint logic lives in backend Java code, not the generic config API. So MSPbots' 17 endpoint names were used only as a guide to which resource categories matter (issue, project, comment, worklog, board, sprint, etc.); actual paths/params/methods were sourced entirely from Atlassian's own official documentation:

  • Platform API (180 ops kept): parsed from Atlassian's official machine-readable WADL spec for Jira 9.4.0 (https://docs.atlassian.com/software/jira/docs/api/REST/9.4.0/jira-rest-plugin.wadl, 387 total operations), filtered down to core work-item/project-management categories per explicit user scope decision — full coverage for issue, version, filter, component, comment, worklog, issueLink(Type), priority, resolution, status(category), search/jql, field(s), myself, mypreferences, mypermissions/permissions, securitylevel, groups, groupuserpicker, projectCategory, projectvalidate, customField(Option)s, serverInfo; partial coverage (a curated operation allowlist) for issuetype, project, user, role, group, dashboard — excluding admin/scheme/system-level operations (workflow scheme, permission scheme, avatar, reindex, plugin management, etc.) as out of scope.
  • Agile API (34 ops): manually curated from Atlassian's HTML docs at https://docs.atlassian.com/jira-software/REST/9.4.0/ — no WADL is published for this API. Query parameter names for list endpoints follow the documented pagination convention (startAt/maxResults) plus the well-documented issue-search filters (jql/validateQuery/fields/ expand) used consistently across board/epic/sprint "issues for X" endpoints.

Authentication

Jira Data Center/Server uses HTTP Basic Authentication (Authorization: Basic base64(username:password)) — confirmed against the credentials MSPbots stores for this integration (its token field is literally base64(username:password), not a separate secret). This server builds that header itself from the raw username/password on every request; the site's base URL is also per-tenant (each MSPbots tenant may point at a different Jira instance), so it is supplied as a header too, not a fixed environment variable.

HEADER 授权参数说明

Header 类型 是否必填 默认值 枚举值 字段描述 Example
X-Jira-Site string 是 无 无 Jira 实例地址(域名或完整 URL,缺省协议时自动补全为 https://) jira.example.com
X-Jira-Username string 是 无 无 Basic Auth 用户名 api_user
X-Jira-Password string 是 无 无 Basic Auth 密码 Sample_Passw0rd!

Missing any header returns 401:

{
  "error": "Missing credentials",
  "message": "This server requires the X-Jira-Site, X-Jira-Username and X-Jira-Password headers",
  "required_headers": ["X-Jira-Site", "X-Jira-Username", "X-Jira-Password"],
  "optional_headers": []
}

Environment Variables

Variable 类型 是否必填 默认值 说明
MCP_HTTP_PORT int 否 8080 HTTP 监听端口
MCP_HTTP_HOST string 否 0.0.0.0 HTTP 监听地址

MCP Endpoint

  • POST /mcp — MCP protocol (streamable HTTP transport)
  • GET /health — health check, returns {"status": "ok", "service": "jiradatacenter-mcp", "transport": "http"}

Tool List

Tool names are jira_<category>_<operationId>, derived from the WADL <method id="..."> / manually-curated Agile operation_id. body parameters are accepted as a generic dict — see the Jira Server REST API reference (linked below) for each resource's exact JSON schema.

Category Tool 功能 方法+路径 参数
agile jira_agile_create_board Create board. POST /rest/agile/1.0/board body(必填)
agile jira_agile_create_sprint Create sprint. POST /rest/agile/1.0/sprint body(必填)
agile jira_agile_delete_board Delete board. DELETE /rest/agile/1.0/board/{boardId} board_id(必填)
agile jira_agile_delete_sprint Delete sprint. DELETE /rest/agile/1.0/sprint/{sprintId} sprint_id(必填)
agile jira_agile_estimate_issue_for_board Estimate issue for board. PUT /rest/agile/1.0/issue/{issueIdOrKey}/estimation issue_id_or_key(必填), board_id(必填), body(必填)
agile jira_agile_get_all_boards Get all boards. GET /rest/agile/1.0/board start_at(可选), max_results(可选), type(可选), name(可选), project_key_or_id(可选)
agile jira_agile_get_all_sprints_for_board Get all sprints for a board. GET /rest/agile/1.0/board/{boardId}/sprint board_id(必填), start_at(可选), max_results(可选), state(可选)
agile jira_agile_get_all_versions_for_board Get all versions for a board. GET /rest/agile/1.0/board/{boardId}/version board_id(必填), start_at(可选), max_results(可选), released(可选)
agile jira_agile_get_board Get board. GET /rest/agile/1.0/board/{boardId} board_id(必填)
agile jira_agile_get_configuration Get board configuration. GET /rest/agile/1.0/board/{boardId}/configuration board_id(必填)
agile jira_agile_get_epic Get epic. GET /rest/agile/1.0/epic/{epicIdOrKey} epic_id_or_key(必填)
agile jira_agile_get_epics Get epics. GET /rest/agile/1.0/board/{boardId}/epic board_id(必填), start_at(可选), max_results(可选), done(可选)
agile jira_agile_get_issue_agile Get issue (Agile view). GET /rest/agile/1.0/issue/{issueIdOrKey} issue_id_or_key(必填)
agile jira_agile_get_issue_estimation_for_board Get issue estimation for board. GET /rest/agile/1.0/issue/{issueIdOrKey}/estimation issue_id_or_key(必填), board_id(必填)
agile jira_agile_get_issues_for_backlog Get issues for backlog. GET /rest/agile/1.0/board/{boardId}/backlog board_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_issues_for_board Get issues for board. GET /rest/agile/1.0/board/{boardId}/issue board_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_issues_for_board_epic Get issues for epic (within a board). GET /rest/agile/1.0/board/{boardId}/epic/{epicId}/issue board_id(必填), epic_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_issues_for_epic Get issues for epic. GET /rest/agile/1.0/epic/{epicIdOrKey}/issue epic_id_or_key(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_issues_for_sprint Get issues for sprint. GET /rest/agile/1.0/sprint/{sprintId}/issue sprint_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_issues_for_sprint_on_board Get issues for a sprint (within a board). GET /rest/agile/1.0/board/{boardId}/sprint/{sprintId}/issue board_id(必填), sprint_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_issues_without_epic Get issues without epic. GET /rest/agile/1.0/epic/none/issue start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_issues_without_epic_for_board Get issues without epic (within a board). GET /rest/agile/1.0/board/{boardId}/epic/none/issue board_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选)
agile jira_agile_get_projects_for_board Get projects associated with a board. GET /rest/agile/1.0/board/{boardId}/project board_id(必填), start_at(可选), max_results(可选)
agile jira_agile_get_sprint Get sprint. GET /rest/agile/1.0/sprint/{sprintId} sprint_id(必填)
agile jira_agile_move_issues_to_backlog Move issues to backlog. POST /rest/agile/1.0/backlog/issue body(必填)
agile jira_agile_move_issues_to_epic Move issues to epic. POST /rest/agile/1.0/epic/{epicIdOrKey}/issue epic_id_or_key(必填), body(必填)
agile jira_agile_move_issues_to_sprint Move issues to sprint. POST /rest/agile/1.0/sprint/{sprintId}/issue sprint_id(必填), body(必填)
agile jira_agile_partially_update_epic Partially update epic (Agile-specific fields only — use the platform issue API for other fields). POST /rest/agile/1.0/epic/{epicIdOrKey} epic_id_or_key(必填), body(必填)
agile jira_agile_partially_update_sprint Partially update sprint. POST /rest/agile/1.0/sprint/{sprintId} sprint_id(必填), body(必填)
agile jira_agile_rank_epics Rank epics. PUT /rest/agile/1.0/epic/{epicIdOrKey}/rank epic_id_or_key(必填), body(必填)
agile jira_agile_rank_issues Rank issues. PUT /rest/agile/1.0/issue/rank body(必填)
agile jira_agile_remove_issues_from_epic Remove issues from epic. POST /rest/agile/1.0/epic/none/issue body(必填)
agile jira_agile_swap_sprint Swap sprint. POST /rest/agile/1.0/sprint/{sprintId}/swap sprint_id(必填), body(必填)
agile jira_agile_update_sprint Update sprint (full). PUT /rest/agile/1.0/sprint/{sprintId} sprint_id(必填), body(必填)
attachment jira_attachment_expand_for_humans Tries to expand an attachment. Output is human-readable and subject to change. GET /rest/api/2/attachment/{id}/expand/human id(必填)
attachment jira_attachment_expand_for_machines Tries to expand an attachment. Output is raw and should be backwards-compatible through the course of time. GET /rest/api/2/attachment/{id}/expand/raw id(必填)
attachment jira_attachment_get_attachment Returns the meta-data for an attachment, including the URI of the actual attached file. GET /rest/api/2/attachment/{id} id(必填)
attachment jira_attachment_get_attachment_meta Returns the meta information for an attachments, specifically if they are enabled and the maximum upload size. GET /rest/api/2/attachment/meta 无
attachment jira_attachment_remove_attachment Remove an attachment from an issue. DELETE /rest/api/2/attachment/{id} id(必填)
comment jira_comment_delete_property Removes the property from the comment identified by the key or by the id. Ths user removing the property is required. DELETE /rest/api/2/comment/{commentId}/properties/{propertyKey} comment_id(必填), property_key(必填)
comment jira_comment_get_properties_keys Returns the keys of all properties for the comment identified by the key or by the id. GET /rest/api/2/comment/{commentId}/properties comment_id(必填)
comment jira_comment_get_property Returns the value of the property with a given key from the comment identified by the key or by the id. The user who retrieves. GET /rest/api/2/comment/{commentId}/properties/{propertyKey} comment_id(必填), property_key(必填)
comment jira_comment_set_property Sets the value of the specified comment's property. PUT /rest/api/2/comment/{commentId}/properties/{propertyKey} comment_id(必填), property_key(必填), body(必填)
component jira_component_create_component Create a component via POST. POST /rest/api/2/component body(必填)
component jira_component_delete Delete a project component. DELETE /rest/api/2/component/{id} id(必填), move_issues_to(可选)
component jira_component_get_component Returns a project component. GET /rest/api/2/component/{id} id(必填)
component jira_component_get_component_related_issues Returns counts of issues related to this component. GET /rest/api/2/component/{id}/relatedIssueCounts id(必填)
component jira_component_get_paginated_components Returns paginated list of filtered active components. GET /rest/api/2/component/page start_at(可选), max_results(可选), query(可选), project_ids(可选)
component jira_component_update_component Modify a component via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field. PUT /rest/api/2/component/{id} id(必填), body(必填)
customfieldoption jira_customFieldOption_get_custom_field_option Returns a full representation of the Custom Field Option that has the given id. GET /rest/api/2/customFieldOption/{id} id(必填)
customfields jira_customFields_bulk_delete_custom_fields bulkDeleteCustomFields. DELETE /rest/api/2/customFields ids(可选)
customfields jira_customFields_get_custom_field_options Returns custom field's options defined in a given context composed of projects and issue types. GET /rest/api/2/customFields/{customFieldId}/options custom_field_id(必填), project_ids(可选), issue_type_ids(可选), query(可选), max_results(可选)
customfields jira_customFields_get_custom_fields getCustomFields. GET /rest/api/2/customFields start_at(可选), max_results(可选), search(可选), project_ids(可选), screen_ids(可选), types(可选), sort_order(可选), sort_column(可选), last_value_update(可选)
dashboard jira_dashboard_get_dashboard Returns a single dashboard. GET /rest/api/2/dashboard/{id} id(必填)
dashboard jira_dashboard_list Returns a list of all dashboards, optionally filtering them. GET /rest/api/2/dashboard filter(可选), start_at(可选), max_results(可选)
field jira_field_create_custom_field Creates a custom field using a definition (object encapsulating custom field data). POST /rest/api/2/field body(必填)
field jira_field_get_fields Returns a list of all fields, both System and Custom. GET /rest/api/2/field 无
filter jira_filter_add_share_permission Adds a share permissions to the given filter. Adding a global permission removes all previous permissions from the filter. POST /rest/api/2/filter/{id}/permission id(必填), body(必填)
filter jira_filter_create_filter Creates a new filter, and returns newly created filter. POST /rest/api/2/filter body(必填), expand(可选)
filter jira_filter_default_columns Returns the default columns for the given filter. Currently logged in user will be used as. GET /rest/api/2/filter/{id}/columns id(必填)
filter jira_filter_delete_filter Delete a filter. DELETE /rest/api/2/filter/{id} id(必填)
filter jira_filter_delete_share_permission Removes a share permissions from the given filter. DELETE /rest/api/2/filter/{id}/permission/{permission-id} id(必填), permission_id(必填)
filter jira_filter_edit_filter Updates an existing filter, and returns its new value. PUT /rest/api/2/filter/{id} id(必填), body(必填), expand(可选)
filter jira_filter_get_default_share_scope Returns the default share scope of the logged-in user. GET /rest/api/2/filter/defaultShareScope 无
filter jira_filter_get_favourite_filters Returns the favourite filters of the logged-in user. GET /rest/api/2/filter/favourite expand(可选)
filter jira_filter_get_filter Returns a filter given an id. GET /rest/api/2/filter/{id} id(必填), expand(可选)
filter jira_filter_get_share_permission Returns a single share permission of the given filter. GET /rest/api/2/filter/{id}/permission/{permissionId} permission_id(必填), id(必填)
filter jira_filter_get_share_permissions Returns all share permissions of the given filter. GET /rest/api/2/filter/{id}/permission id(必填)
filter jira_filter_reset_columns Resets the columns for the given filter such that the filter no longer has its own column config. DELETE /rest/api/2/filter/{id}/columns id(必填)
filter jira_filter_set_columns Sets the default columns for the given filter. PUT /rest/api/2/filter/{id}/columns id(必填), body(必填)
filter jira_filter_set_default_share_scope Sets the default share scope of the logged-in user. PUT /rest/api/2/filter/defaultShareScope body(必填)
group jira_group_get_group Returns REST representation for the requested group. Allows to get list of active users belonging to the. GET /rest/api/2/group groupname(可选), expand(可选)
group jira_group_get_users_from_group This resource returns a paginated list of users who are members of the specified group and its subgroups. GET /rest/api/2/group/member groupname(可选), include_inactive_users(可选), start_at(可选), max_results(可选)
groups jira_groups_find_groups Returns groups with substrings matching a given query. This is mainly for use with. GET /rest/api/2/groups/picker query(可选), exclude(可选), max_results(可选), user_name(可选)
groupuserpicker jira_groupuserpicker_find_users_and_groups Returns a list of users and groups matching query with highlighting. This resource cannot be accessed. GET /rest/api/2/groupuserpicker query(可选), max_results(可选), show_avatar(可选), field_id(可选), project_id(可选), issue_type_id(可选)
issue jira_issue_add_attachment Add one or more attachments to an issue. POST /rest/api/2/issue/{issueIdOrKey}/attachments issue_id_or_key(必填), body(必填)
issue jira_issue_add_comment Adds a new comment to an issue. POST /rest/api/2/issue/{issueIdOrKey}/comment issue_id_or_key(必填), body(必填), expand(可选)
issue jira_issue_add_vote Cast your vote in favour of an issue. POST /rest/api/2/issue/{issueIdOrKey}/votes issue_id_or_key(必填), body(必填)
issue jira_issue_add_watcher Adds a user to an issue's watcher list. POST /rest/api/2/issue/{issueIdOrKey}/watchers issue_id_or_key(必填), body(必填)
issue jira_issue_add_worklog Adds a new worklog entry to an issue. POST /rest/api/2/issue/{issueIdOrKey}/worklog issue_id_or_key(必填), body(必填), adjust_estimate(可选), new_estimate(可选), reduce_by(可选)
issue jira_issue_archive_issue Archives an issue. PUT /rest/api/2/issue/{issueIdOrKey}/archive issue_id_or_key(必填), body(必填), notify_users(可选)
issue jira_issue_archive_issues Archives a list of issues. POST /rest/api/2/issue/archive body(必填), notify_users(可选)
issue jira_issue_assign Assigns an issue to a user. PUT /rest/api/2/issue/{issueIdOrKey}/assignee issue_id_or_key(必填), body(必填)
issue jira_issue_can_move_sub_task canMoveSubTask. GET /rest/api/2/issue/{issueIdOrKey}/subtask/move issue_id_or_key(必填)
issue jira_issue_create_issue Creates an issue or a sub-task from a JSON representation. POST /rest/api/2/issue body(必填), update_history(可选)
issue jira_issue_create_issues Creates issues or sub-tasks from a JSON representation. POST /rest/api/2/issue/bulk body(必填)
issue jira_issue_create_or_update_remote_issue_link Creates or updates a remote issue link from a JSON representation. If a globalId is provided and a remote issue link. POST /rest/api/2/issue/{issueIdOrKey}/remotelink issue_id_or_key(必填), body(必填)
issue jira_issue_delete_comment Deletes an existing comment . DELETE /rest/api/2/issue/{issueIdOrKey}/comment/{id} issue_id_or_key(必填), id(必填)
issue jira_issue_delete_issue Delete an issue. DELETE /rest/api/2/issue/{issueIdOrKey} issue_id_or_key(必填), delete_subtasks(可选)
issue jira_issue_delete_property Removes the property from the issue identified by the key or by the id. Ths user removing the property is required. DELETE /rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey} issue_id_or_key(必填), property_key(必填)
issue jira_issue_delete_remote_issue_link_by_global_id Delete the remote issue link with the given global id on the issue. DELETE /rest/api/2/issue/{issueIdOrKey}/remotelink issue_id_or_key(必填), global_id(可选)
issue jira_issue_delete_remote_issue_link_by_id Delete the remote issue link with the given id on the issue. DELETE /rest/api/2/issue/{issueIdOrKey}/remotelink/{linkId} link_id(必填), issue_id_or_key(必填)
issue jira_issue_delete_worklog Deletes an existing worklog entry. DELETE /rest/api/2/issue/{issueIdOrKey}/worklog/{id} issue_id_or_key(必填), id(必填), adjust_estimate(可选), new_estimate(可选), increase_by(可选)
issue jira_issue_do_transition Perform a transition on an issue. POST /rest/api/2/issue/{issueIdOrKey}/transitions issue_id_or_key(必填), body(必填)
issue jira_issue_edit_issue Edits an issue from a JSON representation. PUT /rest/api/2/issue/{issueIdOrKey} issue_id_or_key(必填), body(必填), notify_users(可选)
issue jira_issue_get_comment Returns a single comment. GET /rest/api/2/issue/{issueIdOrKey}/comment/{id} issue_id_or_key(必填), id(必填), expand(可选)
issue jira_issue_get_comments Returns all comments for an issue. GET /rest/api/2/issue/{issueIdOrKey}/comment issue_id_or_key(必填), start_at(可选), max_results(可选), order_by(可选), expand(可选)
issue jira_issue_get_create_issue_meta_fields Returns the metadata for issue types used for creating issues. GET /rest/api/2/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId} issue_type_id(必填), project_id_or_key(必填), start_at(可选), max_results(可选)
issue jira_issue_get_create_issue_meta_project_issue_types Returns the metadata for issue types used for creating issues. GET /rest/api/2/issue/createmeta/{projectIdOrKey}/issuetypes project_id_or_key(必填), start_at(可选), max_results(可选)
issue jira_issue_get_edit_issue_meta Returns the meta data for editing an issue. GET /rest/api/2/issue/{issueIdOrKey}/editmeta issue_id_or_key(必填)
issue jira_issue_get_issue Returns a full representation of the issue for the given issue key. GET /rest/api/2/issue/{issueIdOrKey} issue_id_or_key(必填), fields(可选), expand(可选), properties(可选), update_history(可选)
issue jira_issue_get_issue_picker_resource Returns suggested issues which match the auto-completion query for the user which executes this request. This REST. GET /rest/api/2/issue/picker query(可选), current_jql(可选), current_issue_key(可选), current_project_id(可选), show_sub_tasks(可选), show_sub_task_parent(可选)
issue jira_issue_get_issue_watchers Returns the list of watchers for the issue with the given key. GET /rest/api/2/issue/{issueIdOrKey}/watchers issue_id_or_key(必填)
issue jira_issue_get_issue_worklog Returns all work logs for an issue. GET /rest/api/2/issue/{issueIdOrKey}/worklog issue_id_or_key(必填)
issue jira_issue_get_properties_keys Returns the keys of all properties for the issue identified by the key or by the id. GET /rest/api/2/issue/{issueIdOrKey}/properties issue_id_or_key(必填)
issue jira_issue_get_property Returns the value of the property with a given key from the issue identified by the key or by the id. The user who retrieves. GET /rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey} issue_id_or_key(必填), property_key(必填)
issue jira_issue_get_remote_issue_link_by_id Get the remote issue link with the given id on the issue. GET /rest/api/2/issue/{issueIdOrKey}/remotelink/{linkId} link_id(必填), issue_id_or_key(必填)
issue jira_issue_get_remote_issue_links A REST sub-resource representing the remote issue links on the issue. GET /rest/api/2/issue/{issueIdOrKey}/remotelink issue_id_or_key(必填), global_id(可选)
issue jira_issue_get_sub_tasks Returns an issue's subtask list. GET /rest/api/2/issue/{issueIdOrKey}/subtask issue_id_or_key(必填)
issue jira_issue_get_transitions Get a list of the transitions possible for this issue by the current user, along with fields that are required and their types. GET /rest/api/2/issue/{issueIdOrKey}/transitions issue_id_or_key(必填), transition_id(可选)
issue jira_issue_get_votes A REST sub-resource representing the voters on the issue. GET /rest/api/2/issue/{issueIdOrKey}/votes issue_id_or_key(必填)
issue jira_issue_get_worklog Returns a specific worklog. GET /rest/api/2/issue/{issueIdOrKey}/worklog/{id} issue_id_or_key(必填), id(必填)
issue jira_issue_move_sub_tasks Reorders an issue's subtasks by moving the subtask at index "from". POST /rest/api/2/issue/{issueIdOrKey}/subtask/move issue_id_or_key(必填), body(必填)
issue jira_issue_notify Sends a notification (email) to the list or recipients defined in the request. POST /rest/api/2/issue/{issueIdOrKey}/notify issue_id_or_key(必填), body(必填)
issue jira_issue_remove_vote Remove your vote from an issue. (i.e. "unvote"). DELETE /rest/api/2/issue/{issueIdOrKey}/votes issue_id_or_key(必填)
issue jira_issue_remove_watcher Removes a user from an issue's watcher list. DELETE /rest/api/2/issue/{issueIdOrKey}/watchers issue_id_or_key(必填), username(可选)
issue jira_issue_restore_issue Restores an archived issue. PUT /rest/api/2/issue/{issueIdOrKey}/restore issue_id_or_key(必填), body(必填), notify_users(可选)
issue jira_issue_set_property Sets the value of the specified issue's property. PUT /rest/api/2/issue/{issueIdOrKey}/properties/{propertyKey} issue_id_or_key(必填), property_key(必填), body(必填)
issue jira_issue_update_comment Updates an existing comment using its JSON representation. PUT /rest/api/2/issue/{issueIdOrKey}/comment/{id} issue_id_or_key(必填), id(必填), body(必填), expand(可选)
issue jira_issue_update_remote_issue_link Updates a remote issue link from a JSON representation. Any fields not provided are set to null. PUT /rest/api/2/issue/{issueIdOrKey}/remotelink/{linkId} link_id(必填), issue_id_or_key(必填), body(必填)
issue jira_issue_update_worklog Updates an existing worklog entry. PUT /rest/api/2/issue/{issueIdOrKey}/worklog/{id} issue_id_or_key(必填), id(必填), body(必填), adjust_estimate(可选), new_estimate(可选)
issuelink jira_issueLink_delete_issue_link Deletes an issue link with the specified id. DELETE /rest/api/2/issueLink/{linkId} link_id(必填)
issuelink jira_issueLink_get_issue_link Returns an issue link with the specified id. GET /rest/api/2/issueLink/{linkId} link_id(必填)
issuelink jira_issueLink_link_issues Creates an issue link between two issues. POST /rest/api/2/issueLink body(必填)
issuelinktype jira_issueLinkType_create_issue_link_type Create a new issue link type. POST /rest/api/2/issueLinkType body(必填)
issuelinktype jira_issueLinkType_delete_issue_link_type Delete the specified issue link type. DELETE /rest/api/2/issueLinkType/{issueLinkTypeId} issue_link_type_id(必填)
issuelinktype jira_issueLinkType_get_issue_link_type Returns for a given issue link type id all information about this issue link type. GET /rest/api/2/issueLinkType/{issueLinkTypeId} issue_link_type_id(必填)
issuelinktype jira_issueLinkType_get_issue_link_types Returns a list of available issue link types, if issue linking is enabled. GET /rest/api/2/issueLinkType 无
issuelinktype jira_issueLinkType_update_issue_link_type Update the specified issue link type. PUT /rest/api/2/issueLinkType/{issueLinkTypeId} issue_link_type_id(必填), body(必填)
issuetype jira_issuetype_create_issue_type Creates an issue type from a JSON representation and adds the issue newly created issue type to the default issue. POST /rest/api/2/issuetype body(必填)
issuetype jira_issuetype_delete_issue_type Deletes the specified issue type. If the issue type has any associated issues, these issues will be migrated to. DELETE /rest/api/2/issuetype/{id} id(必填), alternative_issue_type_id(可选)
issuetype jira_issuetype_get_alternative_issue_types Returns a list of all alternative issue types for the given issue type id. The list will contain these issues types, to which. GET /rest/api/2/issuetype/{id}/alternatives id(必填)
issuetype jira_issuetype_get_issue_all_types Returns a list of all issue types visible to the user. GET /rest/api/2/issuetype 无
issuetype jira_issuetype_get_issue_type Returns a full representation of the issue type that has the given id. GET /rest/api/2/issuetype/{id} id(必填)
issuetype jira_issuetype_get_paginated_issue_types Returns paginated list of filtered issue types. GET /rest/api/2/issuetype/page start_at(可选), max_results(可选), query(可选), project_ids(可选)
issuetype jira_issuetype_update_issue_type Updates the specified issue type from a JSON representation. PUT /rest/api/2/issuetype/{id} id(必填), body(必填)
jql jira_jql_get_auto_complete Returns the auto complete data required for JQL searches. GET /rest/api/2/jql/autocompletedata 无
jql jira_jql_get_field_auto_complete_for_query_string Returns auto complete suggestions for JQL search. GET /rest/api/2/jql/autocompletedata/suggestions field_name(可选), field_value(可选), predicate_name(可选), predicate_value(可选)
mypermissions jira_mypermissions_get_permissions Returns all permissions in the system and whether the currently logged in user has them. You can optionally provide a specific context to get permissions for. GET /rest/api/2/mypermissions project_key(可选), project_id(可选), issue_key(可选), issue_id(可选)
mypreferences jira_mypreferences_get_preference Returns preference of the currently logged in user. Preference key must be provided as input parameter (key). The. GET /rest/api/2/mypreferences key(可选)
mypreferences jira_mypreferences_remove_preference Removes preference of the currently logged in user. Preference key must be provided as input parameters (key). If. DELETE /rest/api/2/mypreferences key(可选)
mypreferences jira_mypreferences_set_preference Sets preference of the currently logged in user. Preference key must be provided as input parameters (key). Value. PUT /rest/api/2/mypreferences body(必填), key(可选)
myself jira_myself_change_my_password Modify caller password. PUT /rest/api/2/myself/password body(必填)
myself jira_myself_get_user Returns currently logged user. This resource cannot be accessed anonymously. GET /rest/api/2/myself 无
myself jira_myself_update_user Modify currently logged user. The "value" fields present will override the existing value. PUT /rest/api/2/myself body(必填)
permissions jira_permissions_get_all_permissions Returns all permissions that are present in the Jira instance - Global, Project and the global ones added by plugins. GET /rest/api/2/permissions 无
priority jira_priority_get_priorities_get_page Returns a list of all issue priorities. GET /rest/api/2/priority/page start_at(可选), max_results(可选), query(可选), project_ids(可选)
priority jira_priority_get_priorities_get_priority Returns a list of all issue priorities. GET /rest/api/2/priority 无
priority jira_priority_get_priority Returns an issue priority. GET /rest/api/2/priority/{id} id(必填)
project jira_project_archive_project Archives a project. PUT /rest/api/2/project/{projectIdOrKey}/archive project_id_or_key(必填), body(必填)
project jira_project_create_project Creates a new project. POST /rest/api/2/project body(必填)
project jira_project_delete_project Deletes a project. DELETE /rest/api/2/project/{projectIdOrKey} project_id_or_key(必填)
project jira_project_get_accessible_project_type_by_key Returns the project type with the given key, if it is accessible to the logged in user. GET /rest/api/2/project/type/{projectTypeKey}/accessible project_type_key(必填)
project jira_project_get_all_project_types Returns all the project types defined on the Jira instance, not taking into account whether. GET /rest/api/2/project/type 无
project jira_project_get_all_projects Returns all projects which are visible for the currently logged in user. If no user is logged in, it returns the. GET /rest/api/2/project expand(可选), recent(可选), include_archived(可选), browse_archive(可选)
project jira_project_get_all_statuses Get all issue types with valid status values for a project. GET /rest/api/2/project/{projectIdOrKey}/statuses project_id_or_key(必填)
project jira_project_get_project Contains a full representation of a project in JSON format. GET /rest/api/2/project/{projectIdOrKey} project_id_or_key(必填), expand(可选)
project jira_project_get_project_components Contains a full representation of a the specified project's components. GET /rest/api/2/project/{projectIdOrKey}/components project_id_or_key(必填)
project jira_project_get_project_role Returns the details for a given project role in a project. GET /rest/api/2/project/{projectIdOrKey}/role/{id} project_id_or_key(必填), id(必填)
project jira_project_get_project_roles Returns all roles in the given project Id or key, with links to full details on each role. GET /rest/api/2/project/{projectIdOrKey}/role project_id_or_key(必填)
project jira_project_get_project_type_by_key Returns the project type with the given key. GET /rest/api/2/project/type/{projectTypeKey} project_type_key(必填)
project jira_project_get_project_versions Contains a full representation of a the specified project's versions. GET /rest/api/2/project/{projectIdOrKey}/versions project_id_or_key(必填), expand(可选)
project jira_project_get_project_versions_paginated Returns all versions for the specified project. Results are paginated. GET /rest/api/2/project/{projectIdOrKey}/version project_id_or_key(必填), start_at(可选), max_results(可选), order_by(可选), expand(可选)
project jira_project_get_security_levels_for_project Returns all security levels for the project that the current logged in user has access to. GET /rest/api/2/project/{projectKeyOrId}/securitylevel project_key_or_id(必填)
project jira_project_restore_project Restore an archived project. PUT /rest/api/2/project/{projectIdOrKey}/restore project_id_or_key(必填), body(必填)
project jira_project_update_project Updates a project. PUT /rest/api/2/project/{projectIdOrKey} project_id_or_key(必填), body(必填), expand(可选)
projectcategory jira_projectCategory_create_project_category Create a project category via POST. POST /rest/api/2/projectCategory body(必填)
projectcategory jira_projectCategory_get_all_project_categories Returns all project categories. GET /rest/api/2/projectCategory 无
projectcategory jira_projectCategory_get_project_category_by_id Contains a representation of a project category in JSON format. GET /rest/api/2/projectCategory/{id} id(必填)
projectcategory jira_projectCategory_remove_project_category Delete a project category. DELETE /rest/api/2/projectCategory/{id} id(必填)
projectcategory jira_projectCategory_update_project_category Modify a project category via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field. PUT /rest/api/2/projectCategory/{id} id(必填), body(必填)
projectvalidate jira_projectvalidate_get_project Validates a project key. GET /rest/api/2/projectvalidate/key key(可选)
resolution jira_resolution_get_paginated_resolutions Returns paginated list of filtered resolutions. GET /rest/api/2/resolution/page start_at(可选), max_results(可选), query(可选)
resolution jira_resolution_get_resolution Returns a resolution. GET /rest/api/2/resolution/{id} id(必填)
resolution jira_resolution_get_resolutions Returns a list of all resolutions. GET /rest/api/2/resolution 无
role jira_role_get_project_role_actors_for_role Gets default actors for the given role. GET /rest/api/2/role/{id}/actors id(必填)
role jira_role_get_project_roles Get all the ProjectRoles available in Jira. Currently this list is global. GET /rest/api/2/role 无
role jira_role_get_project_roles_by_id Get a specific ProjectRole available in Jira. GET /rest/api/2/role/{id} id(必填)
search jira_search_search Searches for issues using JQL. GET /rest/api/2/search jql(可选), start_at(可选), max_results(可选), validate_query(可选), fields(可选), expand(可选)
search jira_search_search_using_search_request Performs a search using JQL. POST /rest/api/2/search body(必填)
securitylevel jira_securitylevel_get_issuesecuritylevel Returns a full representation of the security level that has the given id. GET /rest/api/2/securitylevel/{id} id(必填)
serverinfo jira_serverInfo_get_server_info Returns general information about the current Jira server. GET /rest/api/2/serverInfo do_health_check(可选)
status jira_status_get_paginated_statuses Returns paginated list of filtered statuses. GET /rest/api/2/status/page start_at(可选), max_results(可选), query(可选), project_ids(可选), issue_type_ids(可选)
status jira_status_get_status Returns a full representation of the Status having the given id or name. GET /rest/api/2/status/{idOrName} id_or_name(必填)
status jira_status_get_statuses Returns a list of all statuses. GET /rest/api/2/status 无
statuscategory jira_statuscategory_get_status_categories Returns a list of all status categories. GET /rest/api/2/statuscategory 无
statuscategory jira_statuscategory_get_status_category Returns a full representation of the StatusCategory having the given id or key. GET /rest/api/2/statuscategory/{idOrKey} id_or_key(必填)
user jira_user_find_assignable_users Returns a list of users that match the search string. This resource cannot be accessed anonymously. GET /rest/api/2/user/assignable/search username(可选), project(可选), issue_key(可选), max_results(可选), action_descriptor_id(可选)
user jira_user_find_bulk_assignable_users Returns a list of users that match the search string and can be assigned issues for all the given projects. GET /rest/api/2/user/assignable/multiProjectSearch username(可选), project_keys(可选), max_results(可选)
user jira_user_find_users Returns a list of users that match the search string. This resource cannot be accessed anonymously. GET /rest/api/2/user/search username(可选), start_at(可选), max_results(可选), include_active(可选), include_inactive(可选)
user jira_user_find_users_for_picker Returns a list of users matching query with highlighting. GET /rest/api/2/user/picker query(可选), max_results(可选), show_avatar(可选), exclude(可选)
user jira_user_find_users_with_all_permissions Returns a list of active users that match the search string and have all specified permissions for the project or issue. GET /rest/api/2/user/permission/search username(可选), permissions(可选), issue_key(可选), project_key(可选), start_at(可选), max_results(可选)
user jira_user_find_users_with_browse_permission Returns a list of active users that match the search string. This resource cannot be accessed anonymously. GET /rest/api/2/user/viewissue/search username(可选), issue_key(可选), project_key(可选), max_results(可选)
user jira_user_get_user Returns a user. This resource cannot be accessed anonymously. GET /rest/api/2/user username(可选), key(可选), include_deleted(可选)
version jira_version_create_or_update_remote_version_link_post_remotelink Create a remote version link via POST. The link's global ID will be taken from the. POST /rest/api/2/version/{versionId}/remotelink version_id(必填), body(必填)
version jira_version_create_or_update_remote_version_link_post_remotelink_2 Create a remote version link via POST. The link's global ID will be taken from the. POST /rest/api/2/version/{versionId}/remotelink/{globalId} version_id(必填), global_id(必填), body(必填)
version jira_version_create_version Create a version via POST. POST /rest/api/2/version body(必填)
version jira_version_delete_delete_version Delete a project version. DELETE /rest/api/2/version/{id} id(必填), move_fix_issues_to(可选), move_affected_issues_to(可选)
version jira_version_delete_post_remove_and_swap Delete a project version. POST /rest/api/2/version/{id}/removeAndSwap id(必填), body(必填)
version jira_version_delete_remote_version_link Delete a specific remote version link with the given version ID and global ID. DELETE /rest/api/2/version/{versionId}/remotelink/{globalId} version_id(必填), global_id(必填)
version jira_version_delete_remote_version_links_by_version_id Delete all remote version links for a given version ID. DELETE /rest/api/2/version/{versionId}/remotelink version_id(必填)
version jira_version_get_paginated_versions Retrieve paginated collection of versions matching given query optionally filtered by given project IDs. GET /rest/api/2/version start_at(可选), max_results(可选), query(可选), project_ids(可选)
version jira_version_get_remote_version_link A REST sub-resource representing a remote version link. GET /rest/api/2/version/{versionId}/remotelink/{globalId} version_id(必填), global_id(必填)
version jira_version_get_remote_version_links Returns the remote version links for a given global ID. GET /rest/api/2/version/remotelink global_id(可选)
version jira_version_get_remote_version_links_by_version_id Returns the remote version links associated with the given version ID. GET /rest/api/2/version/{versionId}/remotelink version_id(必填)
version jira_version_get_version Returns a project version. GET /rest/api/2/version/{id} id(必填), expand(可选)
version jira_version_get_version_related_issues Returns a bean containing the number of fixed in and affected issues for the given version. GET /rest/api/2/version/{id}/relatedIssueCounts id(必填)
version jira_version_get_version_unresolved_issues Returns the number of unresolved issues for the given version. GET /rest/api/2/version/{id}/unresolvedIssueCount id(必填)
version jira_version_merge Merge versions. PUT /rest/api/2/version/{id}/mergeto/{moveIssuesTo} move_issues_to(必填), id(必填), body(必填)
version jira_version_move_version Modify a version's sequence within a project. POST /rest/api/2/version/{id}/move id(必填), body(必填)
version jira_version_update_version Modify a version via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field. PUT /rest/api/2/version/{id} id(必填), body(必填)
worklog jira_worklog_get_ids_of_worklogs_deleted_since Returns worklogs id and delete time of worklogs that was deleted since given time. GET /rest/api/2/worklog/deleted since(可选)
worklog jira_worklog_get_ids_of_worklogs_modified_since Returns worklogs id and update time of worklogs that was updated since given time. GET /rest/api/2/worklog/updated since(可选)
worklog jira_worklog_get_worklogs_for_ids Returns worklogs for given worklog ids. Only worklogs to which the calling user has permissions, will be included in the result. POST /rest/api/2/worklog/list body(必填)

测试示例

# Health check
curl -s http://localhost:8080/health

# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp \
  -H "X-Jira-Site: jira.example.com" \
  -H "X-Jira-Username: api_user" \
  -H "X-Jira-Password: Sample_Passw0rd!" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: <session-id-from-initialize>" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "jira_myself_get_user",
      "arguments": {}
    }
  }'

Self-test limitation (2026-07-29): the provided test account (jira.mspbots.ai, user mspbots_api) could not be live-verified from this build environment — direct requests to jira.mspbots.ai (both through this server and via plain curl) consistently return a generic 404 page not found, and DNS resolves the host to a sandbox-local address. This is consistent with MSPbots' internal servers being RDP-only / network-isolated from this environment, not a bug in the server itself. What was verified end-to-end from this environment: the MCP protocol handshake, tools/list returning all 214 registered tools, the 401 credential-gating behavior, and that a live call reaches the constructed URL and receives an HTTP response (proving the request/auth-header plumbing works) — only the vendor-side reachability of the real instance could not be confirmed. A real functional self-test against jira.mspbots.ai should be run from a network that can actually reach it (e.g. via RDP to an MSPbots-internal host).

API Reference

  • Platform API WADL: https://docs.atlassian.com/software/jira/docs/api/REST/9.4.0/jira-rest-plugin.wadl
  • Platform API docs: https://docs.atlassian.com/software/jira/docs/api/REST/9.4.0/
  • Agile API docs: https://docs.atlassian.com/jira-software/REST/9.4.0/

Known Gaps

  • Scope was an explicit user decision: expand beyond MSPbots' literal 17 endpoints to core work-item/project-management categories, excluding admin/scheme/system categories (workflow scheme, permission scheme, avatar, reindex, plugin management, etc.).
  • body parameters are untyped (dict) rather than fully modeled — the Jira REST API reference documents the exact schema per resource, but reproducing all of them as typed Python parameters was out of scope for a 214-tool generation.
  • Live functional self-test could not be completed from this build environment due to jira.mspbots.ai being unreachable here (see 测试示例 above for exactly what was and wasn't verified).
  • Several operations mutate or delete real data (jira_issue_delete_issue, jira_project_delete_project, jira_project_archive_project, jira_version_delete_delete_version, etc.) — treat any DELETE/destructive POST/PUT tool as irreversible against a production Jira instance and confirm with a human before invoking.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选