JiraCli-Mcp
1.0.2
dotnet tool install --global JiraCli-Mcp --version 1.0.2
dotnet new tool-manifest
dotnet tool install --local JiraCli-Mcp --version 1.0.2
#tool dotnet:?package=JiraCli-Mcp&version=1.0.2
nuke :add-package JiraCli-Mcp --version 1.0.2
jira — Command Reference
Version: 1.0.0 | Package:
JiraCli| MCP Tools: 68
Dual-mode tool: a Jira CLI (jira) and an MCP server (stdio JSON-RPC 2.0) for AI agents (GitHub Copilot CLI, Claude Desktop).
Supports Jira Cloud and Jira Server / Data Center — the API version and auth scheme are picked automatically based on the configured auth mode.
All commands accept --site <name> to select the Jira site. If omitted, the site is resolved in this order: --site flag → JIRA_SITE env var → defaultSite in config → the only configured site.
Configuration
| Command | Description |
|---|---|
jira config list |
List all configured Jira sites with masked tokens. Use to verify which sites are registered. |
jira config add --site NAME --url URL --email EMAIL --token TOKEN [--auth-mode basic\|bearer] [--project KEY] |
Register a Jira site. Use --auth-mode basic for Jira Cloud (email + API token) and bearer for Jira Server/Data Center (Personal Access Token). Config is stored in ~/.config/jira-cli/config.json. |
jira config remove --site NAME |
Remove a site and its credentials from local config. Only deletes the local entry. |
jira config set-default --site NAME |
Set the default site used when --site and JIRA_SITE are not provided. |
jira config set-session-cookie --site NAME --cookie <JSESSIONID> |
Store a browser session cookie used to bypass 2FA when downloading attachments from Jira Server. |
jira config path |
Print the full path to the config file on disk. Useful for scripting or manual inspection. |
jira context [--site NAME] |
Show the resolved Jira site and where it came from (flag, env var, default, or single site). Use to verify which site will be used before running other commands. |
Auth modes:
basic(default) = Jira Cloud, usesBasic Base64(email:token)with API v3.bearer= Jira Server/DC, usesBearer <PAT>with API v2.
📋 CLI Commands
Issues
| Command | Description |
|---|---|
jira issue get PROJ-123 |
Get the full detail of a single issue by its key: fields, status, assignee, labels, attachments, and links. |
jira issue create --project PROJ --type Task --summary "..." [--assignee <accountId> --priority High --description "..."] |
Create a new issue in a project. |
jira issue update PROJ-123 [--summary "..."] [--priority Medium] [--description "..."] |
Update an issue. Only the fields you provide are changed — partial update. |
jira issue delete PROJ-123 |
Delete an issue. Permanent and irreversible. |
jira issue assign PROJ-123 --to <accountId> |
Assign (or reassign) an issue to a user by account ID. |
jira issue transition PROJ-123 --to "In Progress" |
Move an issue to another workflow state. The target can be the transition name or the destination state name. |
jira issue comment PROJ-123 --body "..." |
Add a comment to an issue's Discussion section. |
jira issue worklog PROJ-123 --time "2h 30m" [--comment "..."] |
Log time spent on an issue. |
jira issue get-worklog PROJ-123 <worklogId> |
Get a single worklog entry by its ID. |
jira issue attach PROJ-123 --file ./screenshot.png |
Upload a local file as an attachment to an issue. |
jira issue attachments PROJ-123 |
List all attachments of an issue with metadata (id, filename, size, mime type, content URL). |
jira issue download-attachment PROJ-123 --id 1003046 [--output DIR] |
Download a single attachment by its ID. |
jira issue download-attachments PROJ-123 [--output DIR] |
Download all attachments of an issue. |
jira issue download-all-attachments PROJ-123 [--output DIR] |
Download attachments of an issue and all its sub-tasks. Parent attachments go in the root output dir; each sub-task's attachments go in a sub-folder named by its key. |
jira issue attachment-meta <attachmentId> |
Get attachment metadata (size, mime type, content URL) for a single attachment ID. |
jira issue transitions PROJ-123 |
List the workflow transitions available for an issue from its current state. |
Search
| Command | Description |
|---|---|
jira search --jql "project = PROJ AND status = Open" [--max-results 50] [--fetch-all] |
Search issues with JQL (Jira Query Language). --fetch-all retrieves every match across pages instead of stopping at one page. |
Projects
| Command | Description |
|---|---|
jira project list |
List all projects in the site. |
jira project get PROJ |
Get detailed information about a single project by key. |
jira project components PROJ |
List the components of a project. |
jira project versions PROJ |
List the release versions of a project. |
jira project create --key NEWP --name "..." [--type software] |
Create a new project. --type selects the project type (e.g. software, business, service_desk). |
jira project update PROJ [--name "..."] [--description "..."] |
Rename or re-describe a project. |
jira project delete PROJ |
Delete a project. Permanent and irreversible. |
jira project statuses PROJ |
List the statuses available per issue type in a project. |
jira project types |
List all project types. |
jira project roles PROJ |
List the project roles (name → URL). |
jira project role PROJ 10002 |
Get a project role's details, including its actors (users/groups). |
jira project properties PROJ |
List the entity property keys of a project. |
jira project features PROJ |
List the enabled features of a project (Jira Cloud only). |
Issue Types
| Command | Description |
|---|---|
jira issuetype list |
List all issue types in the site. |
jira issuetype list --project 10000 |
List issue types for a specific project (by project ID). |
jira issuetype get <id> |
Get the details of a single issue type by its ID. |
Status
| Command | Description |
|---|---|
jira status list |
List all workflow statuses. |
jira status get <idOrName> |
Get a single status by ID or name. |
jira status categories |
List all status categories (e.g. To Do, In Progress, Done). |
Boards & Sprints
| Command | Description |
|---|---|
jira board list |
List all Agile boards. |
jira board get 42 |
Get the details of a single board. |
jira board issues 42 |
List the issues on a board. |
jira board sprints 42 |
List the sprints of a board. |
jira sprint get 10 |
Get the details of a single sprint. |
jira sprint create --board 42 --name "Sprint 1" [--start 2025-01-01 --end 2025-01-14 --goal "..."] |
Create a new sprint on a board. Dates are ISO 8601. |
jira sprint update 10 [--name "..."] [--state active] [--start ...] [--end ...] [--goal ...] |
Update a sprint (name, state, dates, goal). |
jira sprint move-issues --sprint 10 --issues PROJ-1,PROJ-2,PROJ-3 |
Move one or more issues into a sprint. |
Users
| Command | Description |
|---|---|
jira user me |
Show the authenticated user. |
jira user get --account-id 5b10ac8d82e05b22cc7d4ef5 |
Get a user's details by account ID. |
jira user assignable --project PROJ |
List users assignable to issues in a project. |
jira user groups --account-id 5b10ac8d82e05b22cc7d4ef5 |
List the groups a user belongs to. On Server/DC pass the username as --account-id. |
Fields
| Command | Description |
|---|---|
jira field list |
List all Jira fields (standard and custom). |
jira field create --name "Story Points" --type com.atlassian.jira.plugin.system.customfieldtypes:float |
Create a custom field of a given type. |
jira field contexts --field-id customfield_10016 |
List the contexts of a custom field (Jira Cloud only). |
Saved Filters
| Command | Description |
|---|---|
jira filter list |
List the current user's saved filters (Server/DC: favourite filters). |
jira filter get 12345 |
Get a saved filter by ID. |
jira filter create --name "..." --jql "assignee = currentUser() AND status != Done" |
Save a new filter with a JQL query. |
jira filter update 12345 [--name "..."] [--jql "..."] |
Rename or change the JQL of a saved filter. |
jira filter delete 12345 |
Delete a saved filter. |
Issue Links
| Command | Description |
|---|---|
jira link list PROJ-123 |
List the remote issue links of an issue. |
jira link create --from PROJ-1 --to PROJ-2 --type Blocks |
Link two issues (e.g. Blocks, Relates, Duplicate). |
jira link delete <link-id> |
Delete an issue link by its ID. |
Webhooks
| Command | Description |
|---|---|
jira webhook list |
List all registered webhooks. |
jira webhook create --url https://my.server/hook --events jira:issue_created,jira:issue_updated |
Register a webhook that fires on the given Jira events. |
jira webhook delete 987 |
Delete a webhook by ID. |
MCP Server
| Command | Description |
|---|---|
jira mcp serve [--debug] |
Start the MCP server over stdio. All 68 tools become available to your AI agent. --debug prints HTTP request/response details to stderr. |
Global options
| Command | Description |
|---|---|
jira --debug <command> |
Print full HTTP request/response details to stderr (never corrupts stdout). Use to diagnose API issues. |
jira --version |
Show version information. |
🔌 MCP Tools (68 total)
Use these in Claude Desktop, Copilot, Cursor, or any MCP-compatible agent.
Issues
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_issue |
issueKey |
site |
Get full detail of an issue by key. |
create_issue |
projectKey, summary |
issueType, description, priority, assigneeAccountId, parentKey, site |
Create a new issue. parentKey creates a sub-task. |
update_issue |
issueKey |
summary, priority, description, site |
Update an issue — partial update. |
delete_issue |
issueKey |
site |
Delete an issue. Permanent. |
assign_issue |
issueKey |
accountId, site |
Assign (or unassign, with null) an issue. |
get_issue_transitions |
issueKey |
site |
List available workflow transitions for an issue. |
transition_issue |
issueKey, transitionName |
site |
Move an issue to a new workflow state. |
add_comment |
issueKey, body |
site |
Add a comment to an issue. |
get_comments |
issueKey |
site |
Get all comments of an issue. |
add_watcher |
issueKey, accountId |
site |
Add a watcher to an issue. |
remove_watcher |
issueKey, accountId |
site |
Remove a watcher from an issue. |
get_issue_worklog |
issueKey |
site |
Get the full worklog of an issue. |
add_worklog |
issueKey, timeSpent |
comment, site |
Log time spent on an issue (e.g. 2h 30m). |
get_worklog |
issueKey, worklogId |
site |
Get a single worklog entry by ID. |
add_attachment |
issueKey, filePath |
site |
Attach a local file to an issue. |
list_attachments |
issueKey |
site |
List attachments with metadata (id, filename, size, mime type, content URL). |
get_attachment_metadata |
attachmentId |
site |
Get metadata of a single attachment by ID. |
download_attachment |
issueKey, attachmentId |
outputDir, site |
Download a single attachment to a local directory. |
download_all_attachments |
issueKey |
outputDir, site |
Download all attachments of an issue and its sub-tasks. Sub-task attachments go in key-named sub-folders. |
list_subtasks |
issueKey |
site |
List the sub-tasks of an issue with key, summary, and state. |
Search
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
search_issues_jql |
jql |
startAt, maxResults, site |
Search issues with JQL using classic offset pagination. |
search_issues_jql_post |
jql |
nextPageToken, maxResults, site |
Search issues with JQL using cursor-based pagination. |
Projects
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_all_projects |
(none) | site |
List all projects. |
get_project |
projectKey |
site |
Get project details by key. |
get_project_components |
projectKey |
site |
List project components. |
get_project_versions |
projectKey |
site |
List project versions. |
create_project |
key, name |
projectTypeKey, site |
Create a project. |
update_project |
projectKey |
name, description, site |
Rename/re-describe a project. |
delete_project |
projectKey |
site |
Delete a project. Permanent. |
get_project_statuses |
projectKey |
site |
List statuses per issue type in a project. |
get_project_types |
(none) | site |
List all project types. |
get_project_roles |
projectKey |
site |
List project roles. |
get_project_role |
projectKey, roleId |
site |
Get a project role with its actors. |
get_project_properties |
projectKey |
site |
List entity property keys of a project. |
get_project_features |
projectKey |
site |
List enabled project features (Cloud only; Server/DC returns status 501). |
Issue Types & Status
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_issue_types |
(none) | projectId, site |
List issue types, optionally scoped to a project. |
get_issue_type |
id |
site |
Get an issue type by ID. |
get_statuses |
(none) | site |
List all workflow statuses. |
get_status |
idOrName |
site |
Get a single status by ID or name. |
get_status_categories |
(none) | site |
List all status categories. |
Boards & Sprints
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_all_boards |
(none) | site |
List all Agile boards. |
get_board |
boardId |
site |
Get board details. |
get_board_issues |
boardId |
site |
List the issues on a board. |
get_sprints |
boardId |
site |
List the sprints of a board. |
get_sprint |
sprintId |
site |
Get sprint details. |
create_sprint |
boardId, name |
startDate, endDate, goal, site |
Create a sprint. |
update_sprint |
sprintId |
name, state, startDate, endDate, goal, site |
Update a sprint. |
move_issues_to_sprint |
sprintId, issueKeys |
site |
Move one or more issues into a sprint. |
Users
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_user |
accountId |
site |
Get a user by accountId (Cloud) or username (Server/DC). |
get_current_user |
(none) | site |
Get the authenticated user. |
get_users_assignable |
projectKey |
site |
List users assignable to issues in a project. |
get_user_groups |
accountId |
site |
List the groups a user belongs to; accountId (Cloud) or username (Server/DC). |
Fields
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_fields |
(none) | site |
List all Jira fields (standard and custom). |
create_custom_field |
name, type |
site |
Create a custom field. |
get_field_contexts |
fieldId |
site |
List the contexts of a custom field (Cloud only; Server/DC returns status 501). |
Saved Filters
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_filters |
(none) | site |
List saved filters (Server/DC: favourite filters). |
get_filter |
filterId |
site |
Get a saved filter by ID. |
create_filter |
name, jql |
site |
Save a new filter. |
update_filter |
filterId |
name, jql, site |
Rename/change the JQL of a filter. |
delete_filter |
filterId |
site |
Delete a saved filter. |
Issue Links
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_remote_links |
issueKey |
site |
List remote links of an issue. |
create_issue_link |
fromKey, toKey, linkTypeName |
site |
Link two issues (e.g. Blocks). |
delete_issue_link |
linkId |
site |
Delete an issue link by ID. |
Webhooks
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
get_webhooks |
(none) | site |
List all registered webhooks. |
create_webhook |
url, events |
site |
Register a webhook for one or more Jira events. |
delete_webhook |
webhookId |
site |
Delete a webhook by ID. |
Context & Config
| Tool | Required Args | Optional Args | Description |
|---|---|---|---|
jira_context |
(none) | site |
Show the currently resolved Jira site and its source. |
jira_config_list |
(none) | — | List all configured Jira sites. |
📝 Notes
- Site selection priority:
--siteflag →JIRA_SITEenv var →defaultSitein config → the only configured site. Usejira contextto verify which site is resolved. - Attachments + Jira Server 2FA: downloading attachments from Jira Server protected by 2FA may require a browser session cookie. Configure it with
jira config set-session-cookie --site NAME --cookie <JSESSIONID>. Seedocs/download-allegati-2fa.md. --debug: prints full HTTP request/response details to stderr, so stdout is never corrupted — safe to use even while the MCP server is running.download_all_attachments: attaches of the parent issue go in the root output directory; each sub-task's attachments are saved in a sub-folder named by the sub-task key.--fetch-all: without it, search results stop at the first page (--max-results, default 50). With it, all matching issues are retrieved across pages.- API tokens: Jira Cloud uses API tokens from https://id.atlassian.com/manage-profile/security/api-tokens; Jira Server/DC uses Personal Access Tokens created in the Jira profile. Keep them out of source control — they live only in
~/.config/jira-cli/config.json. - Complete output: read commands/tools return every non-empty property sent by Jira (e.g.
self,avatarUrls,timeZone,statusCategory,iconUrl), not only the typed fields; null/empty values (null,"",[],{}) are omitted. - Server/DC endpoint mapping (API v2):
filter list→/filter/favourite;user get/user groups→/user?username=(+expand=groups);issuetype list --project→issueTypesof/project/{id}; webhooks →rest/webhooks/1.0/webhook(id derived fromself).project featuresandfield contextsare Cloud-only. transition_issue: the transition target can be the transition name or the destination state name; case-insensitive.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.