jiradatacenter-mcp
Integrates with Jira Data Center/Server (self-hosted Jira) to provide tools for managing issues, projects, boards, sprints, epics, comments, worklogs, filters, components, versions, and other work-item and Agile project management operations via REST API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jiradatacenter-mcpshow me all issues assigned to me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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) andGET /health(health check).Default port:
8080(configurable viaMCP_HTTP_PORT).
Related MCP server: Work Integrations MCP
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 |
| string | 是 | 无 | 无 | Jira 实例地址(域名或完整 URL,缺省协议时自动补全为 https://) |
|
| string | 是 | 无 | 无 | Basic Auth 用户名 |
|
| string | 是 | 无 | 无 | Basic Auth 密码 |
|
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 | 类型 | 是否必填 | 默认值 | 说明 |
| int | 否 |
| HTTP 监听端口 |
| string | 否 |
| 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 |
| Create board. | POST /rest/agile/1.0/board | body(必填) |
agile |
| Create sprint. | POST /rest/agile/1.0/sprint | body(必填) |
agile |
| Delete board. | DELETE /rest/agile/1.0/board/{boardId} | board_id(必填) |
agile |
| Delete sprint. | DELETE /rest/agile/1.0/sprint/{sprintId} | sprint_id(必填) |
agile |
| Estimate issue for board. | PUT /rest/agile/1.0/issue/{issueIdOrKey}/estimation | issue_id_or_key(必填), board_id(必填), body(必填) |
agile |
| Get all boards. | GET /rest/agile/1.0/board | start_at(可选), max_results(可选), type(可选), name(可选), project_key_or_id(可选) |
agile |
| Get all sprints for a board. | GET /rest/agile/1.0/board/{boardId}/sprint | board_id(必填), start_at(可选), max_results(可选), state(可选) |
agile |
| Get all versions for a board. | GET /rest/agile/1.0/board/{boardId}/version | board_id(必填), start_at(可选), max_results(可选), released(可选) |
agile |
| Get board. | GET /rest/agile/1.0/board/{boardId} | board_id(必填) |
agile |
| Get board configuration. | GET /rest/agile/1.0/board/{boardId}/configuration | board_id(必填) |
agile |
| Get epic. | GET /rest/agile/1.0/epic/{epicIdOrKey} | epic_id_or_key(必填) |
agile |
| Get epics. | GET /rest/agile/1.0/board/{boardId}/epic | board_id(必填), start_at(可选), max_results(可选), done(可选) |
agile |
| Get issue (Agile view). | GET /rest/agile/1.0/issue/{issueIdOrKey} | issue_id_or_key(必填) |
agile |
| Get issue estimation for board. | GET /rest/agile/1.0/issue/{issueIdOrKey}/estimation | issue_id_or_key(必填), board_id(必填) |
agile |
| Get issues for backlog. | GET /rest/agile/1.0/board/{boardId}/backlog | board_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选) |
agile |
| Get issues for board. | GET /rest/agile/1.0/board/{boardId}/issue | board_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选) |
agile |
| 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 |
| 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 |
| Get issues for sprint. | GET /rest/agile/1.0/sprint/{sprintId}/issue | sprint_id(必填), start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选) |
agile |
| 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 |
| Get issues without epic. | GET /rest/agile/1.0/epic/none/issue | start_at(可选), max_results(可选), jql(可选), validate_query(可选), fields(可选), expand(可选) |
agile |
| 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 |
| Get projects associated with a board. | GET /rest/agile/1.0/board/{boardId}/project | board_id(必填), start_at(可选), max_results(可选) |
agile |
| Get sprint. | GET /rest/agile/1.0/sprint/{sprintId} | sprint_id(必填) |
agile |
| Move issues to backlog. | POST /rest/agile/1.0/backlog/issue | body(必填) |
agile |
| Move issues to epic. | POST /rest/agile/1.0/epic/{epicIdOrKey}/issue | epic_id_or_key(必填), body(必填) |
agile |
| Move issues to sprint. | POST /rest/agile/1.0/sprint/{sprintId}/issue | sprint_id(必填), body(必填) |
agile |
| 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 |
| Partially update sprint. | POST /rest/agile/1.0/sprint/{sprintId} | sprint_id(必填), body(必填) |
agile |
| Rank epics. | PUT /rest/agile/1.0/epic/{epicIdOrKey}/rank | epic_id_or_key(必填), body(必填) |
agile |
| Rank issues. | PUT /rest/agile/1.0/issue/rank | body(必填) |
agile |
| Remove issues from epic. | POST /rest/agile/1.0/epic/none/issue | body(必填) |
agile |
| Swap sprint. | POST /rest/agile/1.0/sprint/{sprintId}/swap | sprint_id(必填), body(必填) |
agile |
| Update sprint (full). | PUT /rest/agile/1.0/sprint/{sprintId} | sprint_id(必填), body(必填) |
attachment |
| Tries to expand an attachment. Output is human-readable and subject to change. | GET /rest/api/2/attachment/{id}/expand/human | id(必填) |
attachment |
| 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 |
| Returns the meta-data for an attachment, including the URI of the actual attached file. | GET /rest/api/2/attachment/{id} | id(必填) |
attachment |
| Returns the meta information for an attachments, specifically if they are enabled and the maximum upload size. | GET /rest/api/2/attachment/meta | 无 |
attachment |
| Remove an attachment from an issue. | DELETE /rest/api/2/attachment/{id} | id(必填) |
comment |
| 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 |
| 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 |
| 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 |
| Sets the value of the specified comment's property. | PUT /rest/api/2/comment/{commentId}/properties/{propertyKey} | comment_id(必填), property_key(必填), body(必填) |
component |
| Create a component via POST. | POST /rest/api/2/component | body(必填) |
component |
| Delete a project component. | DELETE /rest/api/2/component/{id} | id(必填), move_issues_to(可选) |
component |
| Returns a project component. | GET /rest/api/2/component/{id} | id(必填) |
component |
| Returns counts of issues related to this component. | GET /rest/api/2/component/{id}/relatedIssueCounts | id(必填) |
component |
| Returns paginated list of filtered active components. | GET /rest/api/2/component/page | start_at(可选), max_results(可选), query(可选), project_ids(可选) |
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 |
| Returns a full representation of the Custom Field Option that has the given id. | GET /rest/api/2/customFieldOption/{id} | id(必填) |
customfields |
| bulkDeleteCustomFields. | DELETE /rest/api/2/customFields | ids(可选) |
customfields |
| 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 |
| getCustomFields. | GET /rest/api/2/customFields | start_at(可选), max_results(可选), search(可选), project_ids(可选), screen_ids(可选), types(可选), sort_order(可选), sort_column(可选), last_value_update(可选) |
dashboard |
| Returns a single dashboard. | GET /rest/api/2/dashboard/{id} | id(必填) |
dashboard |
| Returns a list of all dashboards, optionally filtering them. | GET /rest/api/2/dashboard | filter(可选), start_at(可选), max_results(可选) |
field |
| Creates a custom field using a definition (object encapsulating custom field data). | POST /rest/api/2/field | body(必填) |
field |
| Returns a list of all fields, both System and Custom. | GET /rest/api/2/field | 无 |
filter |
| 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 |
| Creates a new filter, and returns newly created filter. | POST /rest/api/2/filter | body(必填), expand(可选) |
filter |
| 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 |
| Delete a filter. | DELETE /rest/api/2/filter/{id} | id(必填) |
filter |
| Removes a share permissions from the given filter. | DELETE /rest/api/2/filter/{id}/permission/{permission-id} | id(必填), permission_id(必填) |
filter |
| Updates an existing filter, and returns its new value. | PUT /rest/api/2/filter/{id} | id(必填), body(必填), expand(可选) |
filter |
| Returns the default share scope of the logged-in user. | GET /rest/api/2/filter/defaultShareScope | 无 |
filter |
| Returns the favourite filters of the logged-in user. | GET /rest/api/2/filter/favourite | expand(可选) |
filter |
| Returns a filter given an id. | GET /rest/api/2/filter/{id} | id(必填), expand(可选) |
filter |
| Returns a single share permission of the given filter. | GET /rest/api/2/filter/{id}/permission/{permissionId} | permission_id(必填), id(必填) |
filter |
| Returns all share permissions of the given filter. | GET /rest/api/2/filter/{id}/permission | id(必填) |
filter |
| 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 |
| Sets the default columns for the given filter. | PUT /rest/api/2/filter/{id}/columns | id(必填), body(必填) |
filter |
| Sets the default share scope of the logged-in user. | PUT /rest/api/2/filter/defaultShareScope | body(必填) |
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 |
| 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 |
| 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 |
| 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 |
| Add one or more attachments to an issue. | POST /rest/api/2/issue/{issueIdOrKey}/attachments | issue_id_or_key(必填), body(必填) |
issue |
| Adds a new comment to an issue. | POST /rest/api/2/issue/{issueIdOrKey}/comment | issue_id_or_key(必填), body(必填), expand(可选) |
issue |
| Cast your vote in favour of an issue. | POST /rest/api/2/issue/{issueIdOrKey}/votes | issue_id_or_key(必填), body(必填) |
issue |
| Adds a user to an issue's watcher list. | POST /rest/api/2/issue/{issueIdOrKey}/watchers | issue_id_or_key(必填), body(必填) |
issue |
| 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 |
| Archives an issue. | PUT /rest/api/2/issue/{issueIdOrKey}/archive | issue_id_or_key(必填), body(必填), notify_users(可选) |
issue |
| Archives a list of issues. | POST /rest/api/2/issue/archive | body(必填), notify_users(可选) |
issue |
| Assigns an issue to a user. | PUT /rest/api/2/issue/{issueIdOrKey}/assignee | issue_id_or_key(必填), body(必填) |
issue |
| canMoveSubTask. | GET /rest/api/2/issue/{issueIdOrKey}/subtask/move | issue_id_or_key(必填) |
issue |
| Creates an issue or a sub-task from a JSON representation. | POST /rest/api/2/issue | body(必填), update_history(可选) |
issue |
| Creates issues or sub-tasks from a JSON representation. | POST /rest/api/2/issue/bulk | body(必填) |
issue |
| 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 |
| Deletes an existing comment . | DELETE /rest/api/2/issue/{issueIdOrKey}/comment/{id} | issue_id_or_key(必填), id(必填) |
issue |
| Delete an issue. | DELETE /rest/api/2/issue/{issueIdOrKey} | issue_id_or_key(必填), delete_subtasks(可选) |
issue |
| 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 |
| 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 |
| 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 |
| 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 |
| Perform a transition on an issue. | POST /rest/api/2/issue/{issueIdOrKey}/transitions | issue_id_or_key(必填), body(必填) |
issue |
| Edits an issue from a JSON representation. | PUT /rest/api/2/issue/{issueIdOrKey} | issue_id_or_key(必填), body(必填), notify_users(可选) |
issue |
| Returns a single comment. | GET /rest/api/2/issue/{issueIdOrKey}/comment/{id} | issue_id_or_key(必填), id(必填), expand(可选) |
issue |
| 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 |
| 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 |
| 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 |
| Returns the meta data for editing an issue. | GET /rest/api/2/issue/{issueIdOrKey}/editmeta | issue_id_or_key(必填) |
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 |
| 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 |
| Returns the list of watchers for the issue with the given key. | GET /rest/api/2/issue/{issueIdOrKey}/watchers | issue_id_or_key(必填) |
issue |
| Returns all work logs for an issue. | GET /rest/api/2/issue/{issueIdOrKey}/worklog | issue_id_or_key(必填) |
issue |
| 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 |
| 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 |
| 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 |
| 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 |
| Returns an issue's subtask list. | GET /rest/api/2/issue/{issueIdOrKey}/subtask | issue_id_or_key(必填) |
issue |
| 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 |
| A REST sub-resource representing the voters on the issue. | GET /rest/api/2/issue/{issueIdOrKey}/votes | issue_id_or_key(必填) |
issue |
| Returns a specific worklog. | GET /rest/api/2/issue/{issueIdOrKey}/worklog/{id} | issue_id_or_key(必填), id(必填) |
issue |
| 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 |
| 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 |
| Remove your vote from an issue. (i.e. "unvote"). | DELETE /rest/api/2/issue/{issueIdOrKey}/votes | issue_id_or_key(必填) |
issue |
| Removes a user from an issue's watcher list. | DELETE /rest/api/2/issue/{issueIdOrKey}/watchers | issue_id_or_key(必填), username(可选) |
issue |
| Restores an archived issue. | PUT /rest/api/2/issue/{issueIdOrKey}/restore | issue_id_or_key(必填), body(必填), notify_users(可选) |
issue |
| 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 |
| Updates an existing comment using its JSON representation. | PUT /rest/api/2/issue/{issueIdOrKey}/comment/{id} | issue_id_or_key(必填), id(必填), body(必填), expand(可选) |
issue |
| 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 |
| Updates an existing worklog entry. | PUT /rest/api/2/issue/{issueIdOrKey}/worklog/{id} | issue_id_or_key(必填), id(必填), body(必填), adjust_estimate(可选), new_estimate(可选) |
issuelink |
| Deletes an issue link with the specified id. | DELETE /rest/api/2/issueLink/{linkId} | link_id(必填) |
issuelink |
| Returns an issue link with the specified id. | GET /rest/api/2/issueLink/{linkId} | link_id(必填) |
issuelink |
| Creates an issue link between two issues. | POST /rest/api/2/issueLink | body(必填) |
issuelinktype |
| Create a new issue link type. | POST /rest/api/2/issueLinkType | body(必填) |
issuelinktype |
| Delete the specified issue link type. | DELETE /rest/api/2/issueLinkType/{issueLinkTypeId} | issue_link_type_id(必填) |
issuelinktype |
| 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 |
| Returns a list of available issue link types, if issue linking is enabled. | GET /rest/api/2/issueLinkType | 无 |
issuelinktype |
| Update the specified issue link type. | PUT /rest/api/2/issueLinkType/{issueLinkTypeId} | issue_link_type_id(必填), body(必填) |
issuetype |
| 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 |
| 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 |
| 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 |
| Returns a list of all issue types visible to the user. | GET /rest/api/2/issuetype | 无 |
issuetype |
| Returns a full representation of the issue type that has the given id. | GET /rest/api/2/issuetype/{id} | id(必填) |
issuetype |
| Returns paginated list of filtered issue types. | GET /rest/api/2/issuetype/page | start_at(可选), max_results(可选), query(可选), project_ids(可选) |
issuetype |
| Updates the specified issue type from a JSON representation. | PUT /rest/api/2/issuetype/{id} | id(必填), body(必填) |
jql |
| Returns the auto complete data required for JQL searches. | GET /rest/api/2/jql/autocompletedata | 无 |
jql |
| Returns auto complete suggestions for JQL search. | GET /rest/api/2/jql/autocompletedata/suggestions | field_name(可选), field_value(可选), predicate_name(可选), predicate_value(可选) |
mypermissions |
| 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 |
| 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 |
| 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 |
| 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 |
| Modify caller password. | PUT /rest/api/2/myself/password | body(必填) |
myself |
| Returns currently logged user. This resource cannot be accessed anonymously. | GET /rest/api/2/myself | 无 |
myself |
| Modify currently logged user. The "value" fields present will override the existing value. | PUT /rest/api/2/myself | body(必填) |
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 |
| Returns a list of all issue priorities. | GET /rest/api/2/priority/page | start_at(可选), max_results(可选), query(可选), project_ids(可选) |
priority |
| Returns a list of all issue priorities. | GET /rest/api/2/priority | 无 |
priority |
| Returns an issue priority. | GET /rest/api/2/priority/{id} | id(必填) |
project |
| Archives a project. | PUT /rest/api/2/project/{projectIdOrKey}/archive | project_id_or_key(必填), body(必填) |
project |
| Creates a new project. | POST /rest/api/2/project | body(必填) |
project |
| Deletes a project. | DELETE /rest/api/2/project/{projectIdOrKey} | project_id_or_key(必填) |
project |
| 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 |
| Returns all the project types defined on the Jira instance, not taking into account whether. | GET /rest/api/2/project/type | 无 |
project |
| 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 |
| Get all issue types with valid status values for a project. | GET /rest/api/2/project/{projectIdOrKey}/statuses | project_id_or_key(必填) |
project |
| Contains a full representation of a project in JSON format. | GET /rest/api/2/project/{projectIdOrKey} | project_id_or_key(必填), expand(可选) |
project |
| Contains a full representation of a the specified project's components. | GET /rest/api/2/project/{projectIdOrKey}/components | project_id_or_key(必填) |
project |
| 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 |
| 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 |
| Returns the project type with the given key. | GET /rest/api/2/project/type/{projectTypeKey} | project_type_key(必填) |
project |
| Contains a full representation of a the specified project's versions. | GET /rest/api/2/project/{projectIdOrKey}/versions | project_id_or_key(必填), expand(可选) |
project |
| 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 |
| 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 |
| Restore an archived project. | PUT /rest/api/2/project/{projectIdOrKey}/restore | project_id_or_key(必填), body(必填) |
project |
| Updates a project. | PUT /rest/api/2/project/{projectIdOrKey} | project_id_or_key(必填), body(必填), expand(可选) |
projectcategory |
| Create a project category via POST. | POST /rest/api/2/projectCategory | body(必填) |
projectcategory |
| Returns all project categories. | GET /rest/api/2/projectCategory | 无 |
projectcategory |
| Contains a representation of a project category in JSON format. | GET /rest/api/2/projectCategory/{id} | id(必填) |
projectcategory |
| Delete a project category. | DELETE /rest/api/2/projectCategory/{id} | id(必填) |
projectcategory |
| 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 |
| Validates a project key. | GET /rest/api/2/projectvalidate/key | key(可选) |
resolution |
| Returns paginated list of filtered resolutions. | GET /rest/api/2/resolution/page | start_at(可选), max_results(可选), query(可选) |
resolution |
| Returns a resolution. | GET /rest/api/2/resolution/{id} | id(必填) |
resolution |
| Returns a list of all resolutions. | GET /rest/api/2/resolution | 无 |
role |
| Gets default actors for the given role. | GET /rest/api/2/role/{id}/actors | id(必填) |
role |
| Get all the ProjectRoles available in Jira. Currently this list is global. | GET /rest/api/2/role | 无 |
role |
| Get a specific ProjectRole available in Jira. | GET /rest/api/2/role/{id} | id(必填) |
search |
| Searches for issues using JQL. | GET /rest/api/2/search | jql(可选), start_at(可选), max_results(可选), validate_query(可选), fields(可选), expand(可选) |
search |
| Performs a search using JQL. | POST /rest/api/2/search | body(必填) |
securitylevel |
| Returns a full representation of the security level that has the given id. | GET /rest/api/2/securitylevel/{id} | id(必填) |
serverinfo |
| Returns general information about the current Jira server. | GET /rest/api/2/serverInfo | do_health_check(可选) |
status |
| Returns paginated list of filtered statuses. | GET /rest/api/2/status/page | start_at(可选), max_results(可选), query(可选), project_ids(可选), issue_type_ids(可选) |
status |
| Returns a full representation of the Status having the given id or name. | GET /rest/api/2/status/{idOrName} | id_or_name(必填) |
status |
| Returns a list of all statuses. | GET /rest/api/2/status | 无 |
statuscategory |
| Returns a list of all status categories. | GET /rest/api/2/statuscategory | 无 |
statuscategory |
| Returns a full representation of the StatusCategory having the given id or key. | GET /rest/api/2/statuscategory/{idOrKey} | id_or_key(必填) |
user |
| 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 |
| 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 |
| 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 |
| Returns a list of users matching query with highlighting. | GET /rest/api/2/user/picker | query(可选), max_results(可选), show_avatar(可选), exclude(可选) |
user |
| 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 |
| 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 |
| Returns a user. This resource cannot be accessed anonymously. | GET /rest/api/2/user | username(可选), key(可选), include_deleted(可选) |
version |
| 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 |
| 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 |
| Create a version via POST. | POST /rest/api/2/version | body(必填) |
version |
| Delete a project version. | DELETE /rest/api/2/version/{id} | id(必填), move_fix_issues_to(可选), move_affected_issues_to(可选) |
version |
| Delete a project version. | POST /rest/api/2/version/{id}/removeAndSwap | id(必填), body(必填) |
version |
| 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 |
| Delete all remote version links for a given version ID. | DELETE /rest/api/2/version/{versionId}/remotelink | version_id(必填) |
version |
| 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 |
| A REST sub-resource representing a remote version link. | GET /rest/api/2/version/{versionId}/remotelink/{globalId} | version_id(必填), global_id(必填) |
version |
| Returns the remote version links for a given global ID. | GET /rest/api/2/version/remotelink | global_id(可选) |
version |
| Returns the remote version links associated with the given version ID. | GET /rest/api/2/version/{versionId}/remotelink | version_id(必填) |
version |
| Returns a project version. | GET /rest/api/2/version/{id} | id(必填), expand(可选) |
version |
| 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 |
| Returns the number of unresolved issues for the given version. | GET /rest/api/2/version/{id}/unresolvedIssueCount | id(必填) |
version |
| Merge versions. | PUT /rest/api/2/version/{id}/mergeto/{moveIssuesTo} | move_issues_to(必填), id(必填), body(必填) |
version |
| Modify a version's sequence within a project. | POST /rest/api/2/version/{id}/move | id(必填), body(必填) |
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 |
| Returns worklogs id and delete time of worklogs that was deleted since given time. | GET /rest/api/2/worklog/deleted | since(可选) |
worklog |
| Returns worklogs id and update time of worklogs that was updated since given time. | GET /rest/api/2/worklog/updated | since(可选) |
worklog |
| 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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server for interacting with self-hosted Jira instances using Personal Access Token (PAT) authentication. It enables users to perform CRUD operations on issues, search with JQL, manage comments, and list projects through the Jira REST API.Last updated124629MIT
- Alicense-qualityDmaintenanceAn MCP server that enables interaction with Jira to fetch issues by key and perform JQL searches. It provides a foundation for integrating multiple work systems, with planned support for Slack and GitHub.Last updated710MIT
- Alicense-qualityBmaintenanceMCP server for interacting with Jira Cloud instances. Enables issue management, JQL queries, project and sprint management, and batch operations via natural language interfaces.Last updated2074MIT
- Alicense-qualityDmaintenanceMCP server providing access to JIRA data with relationship tracking, optimized payloads, and data cleaning for AI contexts. Supports both Jira Cloud and Server/Data Center.Last updated8MIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MSPbotsAI/jiradatacenter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server