Jiradatacenter
БесплатноНе проверен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 too
Описание
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.
README
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) andGET /health(health check). - Default port:
8080(configurable viaMCP_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 forissue,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) forissuetype,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.).
bodyparameters 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.aibeing 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 anyDELETE/destructivePOST/PUTtool as irreversible against a production Jira instance and confirm with a human before invoking.
Установка Jiradatacenter
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/MSPbotsAI/jiradatacenter-mcpFAQ
Jiradatacenter MCP бесплатный?
Да, Jiradatacenter MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Jiradatacenter?
Нет, Jiradatacenter работает без API-ключей и переменных окружения.
Jiradatacenter — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Jiradatacenter в Claude Desktop, Claude Code или Cursor?
Открой Jiradatacenter на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Notion
Read and write pages in your workspace
автор: NotionLinear
Issues, cycles, triage — from Claude
автор: LinearGoogle Drive
Search and read your Drive files
автор: Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
автор: mindsdbCompare Jiradatacenter with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории productivity
