Skip to main content
Glama
jira-dc-advops-mcp

jira-dc-advops-mcp

by iljasorokin

jira-dc-advops-mcp

Local MCP helpers for Jira Data Center advanced ops used from Cursor.

Русская документация: README.ru.md.

Capabilities:

  1. Tempo Structure — read / update boards (hierarchy + column values) via /rest/structure/2.0/*

  2. Agile Kanban / Scrum — board columns + issue placement via /rest/agile/1.0/* (daily standup reports)

Talks to the same proxy/auth as @atlassian-dc-mcp/jira (local TLS proxy + token from keychain / env). Prefer these tools over ad-hoc curl to the public Jira hostname.

  • structureId from StructureBoard.jspa?s=<id>

  • boardId from RapidBoard.jspa?rapidView=<id>

Auth

Same sources as @atlassian-dc-mcp/jira:

  • JIRA_HOST (env or ~/.atlassian-dc-mcp/jira.env) — typically your local proxy, e.g. https://localhost:8444

  • JIRA_API_TOKEN (env), or macOS Keychain service atlassian-dc-mcp / account jira-token

Do not commit tokens or *.env files. See SECURITY.md.

Related MCP server: jira-api-mcp-wrapper

Tools — Structure (read)

Tool

When

structure_list

List structures visible to the user (name filter optional)

structure_get

Structure metadata by id (name, owner, permissions flags)

structure_getForest

Raw forest (formula + parsed flat rows) for a structure

structure_getValues

Attribute matrix for given rows (key/summary/status/…)

structure_getBoard

Fast path: forest + values as nested tree (default attrs)

structure_getBoardToFile

Same as getBoard, dump JSON to a local file (large boards)

structure_listFolders

Folders in a structure (rowId, name/summary, folderId)

Tools — Structure (write)

Tool

When

structure_addIssues

Add issue(s) under a folder / parent row (underRowId | folderName | folderId)

Tools — Agile boards (read)

Tool

When

agile_listBoards

Find boards by name / type / project

agile_getBoard

Board metadata (name, type)

agile_getBoardConfiguration

Columns + status→column map + kanban subQuery

agile_getBoardIssues

Issues on a board with column placement

agile_getBoardSnapshot

Daily path: issues grouped by column

agile_getBoardSnapshotToFile

Same snapshot → local JSON file

agile_locateIssues

Where are these keys on the board?

Daily standup snapshot

agile_listBoards
  name: "Team"
  type: kanban

agile_getBoardSnapshot
  boardId: 123
  jql: "assignee = currentUser() AND resolution = EMPTY"
  excludeColumns: ["Done"]
  # includeBacklog: false (default) — skip fabricated kanban Backlog column

Returns ordered columns with compact issues (key, summary, status, column, assignee, …).

Column placement = issue status id mapped through board configuration. For kanban, the board subQuery is ANDed by default so the set closer matches what the UI shows.

Locate specific issues

agile_locateIssues
  boardId: 123
  issueKeys: ["PROJ-1", "PROJ-2"]

Add issues under a Structure folder

structure_listFolders
  structureId: 123

structure_addIssues
  structureId: 123
  folderName: "My folder"   # or underRowId: <rowId>
  issueKeys: ["PROJ-1", "PROJ-2"]
  # skipIfPresent: true (default)

Uses POST /rest/structure/2.0/forest/update with action: add. Resolves issue keys → numeric ids. Skips issues already direct children of the parent unless skipIfPresent: false.

Fast path for a Structure Board

structure_getBoard
  structureId: 123
  # optional attributes override; default: key, summary, status, issuetype

Returns nested { rowId, depth, issueId?, itemType?, values, children[] }.

Generators / loop markers are included unless includeGenerators: false.

Forest formula

Structure returns a serialized formula. This MCP parses it into rows:

rowId:depth:itemIdentity where itemIdentity is either an issue id (14707) or a typed id (5/240 → folder / generator / … via itemTypes).

Cursor config

"jira-dc-advops": {
  "command": "node",
  "args": ["/path/to/jira-dc-advops-mcp/index.js"],
  "env": {
    "JIRA_HOST": "https://localhost:8444",
    "NODE_TLS_REJECT_UNAUTHORIZED": "0"
  }
}

After changing index.js / agile.js, reload MCP servers in Cursor so new tools appear.

Notes

  • Forest write beyond structure_addIssues (move/remove rows, create folders) is not exposed yet.

  • For issue details beyond board columns (Status Comment, links, …), use user-jira-dc (jira_getIssue / JQL).

  • Large boards: prefer *ToFile tools over stuffing full payloads into chat.

  • Agile tools do not move issues between columns (that is a workflow transition — use user-jira-dc).

Available Tools

15 tools
agile_getBoardA
Read-onlyIdempotent

Get Agile board metadata by id (name, type). For columns use agile_getBoardConfiguration; for daily column dump use agile_getBoardSnapshot.

Inputs: boardId (required).

agile_getBoardConfigurationA
Read-onlyIdempotent

Get board column configuration: ordered columns, status→column map, kanban subQuery, filter. Maps issue status ids to board column names (placement on the kanban).

Inputs: boardId (required), resolveStatusNames.

agile_getBoardIssuesA
Read-onlyIdempotent

List issues on an Agile board (GET /rest/agile/1.0/board/{id}/issue) with column placement from status→column map. Optional jql is ANDed with the board filter; for kanban, board subQuery is applied by default.

Inputs: boardId (required), jql, fields, compact, +5 more.

agile_getBoardSnapshotA
Read-onlyIdempotent

Daily-standup helper: issues on a board grouped by kanban/scrum columns (status→column). Pass jql for assignee/team filter. By default skips fabricated kanban Backlog column; use excludeColumns for Done etc. Prefer agile_getBoardSnapshotToFile for large dumps.

Inputs: boardId (required), jql, fields, maxIssues, +5 more.

agile_getBoardSnapshotToFileA
Read-onlyIdempotent

Same as agile_getBoardSnapshot but writes JSON to a local file (large boards / daily dumps). Returns path + counts without stuffing full payload into chat.

Inputs: boardId (required), filePath (required), jql, fields, +6 more.

agile_listBoardsA
Read-onlyIdempotent

List Jira Software boards (GET /rest/agile/1.0/board). Filter by name substring, type (kanban|scrum|simple), or projectKeyOrId. boardId from RapidBoard.jspa?rapidView=ID.

Inputs: name, type, startAt, maxResults, +1 more.

agile_locateIssuesA
Read-onlyIdempotent

Locate issue keys on a board: map each issue status → column name (and whether it matches the board filter/subQuery). Useful for “where is PROJ-1 on the kanban?”.

Inputs: boardId (required), issueKeys (required), applyBoardFilter.

structure_addIssuesA

Add one or more Jira issues under a Structure folder (or any parent row). POST /rest/structure/2.0/forest/update action=add. Identify parent via underRowId, folderName, or folderId. Pass issueKeys and/or issueIds. Skips issues already under that parent unless skipIfPresent=false.

Inputs: structureId (required), folderId, issueIds, issueKeys, +5 more.

structure_getA
Read-onlyIdempotent

Get Tempo Structure metadata by id (name, description, owner). Does not include hierarchy — use structure_getForest / structure_getBoard.

Inputs: structureId (required), withOwner, withPermissions.

structure_getBoardA
Read-onlyIdempotent

Fast path: read a Structure Board as nested tree with key/summary/status/issuetype (forest + values). Use structure_getBoardToFile for large boards.

Inputs: flat, attributes, forestSpec, structureId, +1 more.

structure_getBoardToFileA
Read-onlyIdempotent

Same as structure_getBoard but writes JSON to a local file (for large boards). Returns path + meta without stuffing the full tree into chat.

Inputs: filePath (required), flat, attributes, forestSpec, +2 more.

structure_getForestA
Read-onlyIdempotent

Read Structure forest (hierarchy) via POST /rest/structure/2.0/forest/latest. Returns formula + parsed flat rows (rowId, depth, issueId / itemType). Prefer structure_getBoard for keys/summaries.

Inputs: forestSpec, structureId, includeGenerators.

structure_getValuesA
Read-onlyIdempotent

Load Structure attribute values for row ids (POST /rest/structure/2.0/value). Get row ids from structure_getForest. Default attributes: key, summary, status, issuetype.

Inputs: rows (required), attributes, forestSpec, structureId.

structure_listA
Read-onlyIdempotent

List Tempo Structure boards visible to the user (GET /rest/structure/2.0/structure). Optional name substring filter. structureId from StructureBoard.jspa?s=ID.

Inputs: name, limit, archived, withOwner, +1 more.

structure_listFoldersA
Read-onlyIdempotent

List folders in a Tempo Structure (rowId, depth, name/summary, folderId). Use before structure_addIssues to pick underRowId or folderName.

Inputs: structureId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 15 tools

    Disambiguation4/5

    Tools are mostly distinct, but structure_getBoard overlaps with structure_getForest + structure_getValues, and agile_getBoardSnapshot is similar to agile_getBoardIssues. Descriptions clarify the differences well enough to prevent most misselection.

    Naming Consistency5/5

    All tools follow a consistent snake_case pattern with domain prefixes (structure_, agile_) and predictable verbs (list, get, add, locate). Compound names like getBoardConfiguration and getSnapshotToFile are uniformly constructed.

    Tool Count4/5

    15 tools sits at the upper edge of the ideal range but is justified by two coherent subdomains (Tempo Structure and Agile boards). The to-file variants add value for large payloads rather than being redundant.

    Completeness4/5

    The core workflows for reading structures and boards are thoroughly covered, including hierarchy, values, snapshots, and column mapping. Missing update/delete operations are acceptable given the server's read-heavy reporting focus, but there is no way to remove issues from a structure.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers