# io.github.freema/mcp-jira-stdio (npm · mcp-jira-stdio)

MCP server for Jira Cloud — issues, search, comments, attachments, transitions.

- Trust score: 73/100 (medium)
- Change this week: +67
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `mcp-jira-stdio`: 73/100 (this document), [markdown](https://verifymcp.io/servers/freema-mcp-jira-stdio/mcp-jira-stdio.md), [page](https://verifymcp.io/servers/freema-mcp-jira-stdio/mcp-jira-stdio)

## Channel facts

- Registry: `npm`
- Package: `mcp-jira-stdio`
- Version: `1.11.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 79/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects marked 0.8.2, reached via md-to-adf > marked. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (110 of 111), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to freema/mcp-jira-stdio).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 6 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2909 tokens (~126/item across 23 items; 23 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add freema-mcp-jira-stdio -- npx -y mcp-jira-stdio
```

### Codex

```bash
codex mcp add freema-mcp-jira-stdio -- npx -y mcp-jira-stdio
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "freema-mcp-jira-stdio": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-jira-stdio"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add freema-mcp-jira-stdio --command npx --arg -y --arg mcp-jira-stdio
```

### Hermes

```yaml
mcp_servers:
  freema-mcp-jira-stdio:
    command: "npx"
    args: ["-y", "mcp-jira-stdio"]
```

### Other

```json
{
  "mcpServers": {
    "freema-mcp-jira-stdio": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-jira-stdio"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 73, +19)

- [security regression] Known CVEs: unverified → fail
- [security regression] Install scripts: pass → unverified
- [security regression] Provenance: pass → unverified
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [security] The attested source repository moved: freema/mcp-jira-stdio
- [functional regression] Maintenance: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] License: pass → unverified
- [functional regression] Capabilities: pass → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-08-01 (score 54, −7)

- [security regression] Known CVEs: fail → unverified
- [functional regression] Dependency health: partial → unverified

### 2026-07-31 (score 61, +34)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 27, −31)

- [security regression] Provenance: pass → unverified
- [security regression] Known CVEs: fail → unverified
- [security regression] Install scripts: pass → unverified
- [security improvement] CVE-2022-21680 no longer affects this package
- [security improvement] CVE-2022-21681 no longer affects this package
- [security] The attested source repository moved: freema/mcp-jira-stdio
- [functional regression] License: pass → unverified
- [functional regression] Dependency health: partial → unverified
- [functional regression] Maintenance: pass → unverified
- [functional] Licence: MIT

### 2026-07-28 (score 58, +52)

- [security regression] CVE-2022-21680 affects this package: high
- [security regression] CVE-2022-21681 affects this package: high
- [security regression] Known CVEs: unverified → fail
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security] The attested source repository moved: freema/mcp-jira-stdio
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: unverified
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail
- [functional] Licence: MIT

### 2026-07-27 (score 6)

First indexed and scored.

## MCP tools (23)

### `jira_get_visible_projects` (~55 tokens)

Retrieves all projects accessible to the authenticated user. Returns project keys, names, descriptions, and basic metadata.

Input parameters:

- `expand` (array): Additional project details to include
- `recent` (number): Limit to recently accessed projects

### `jira_get_issue` (~142 tokens)

Retrieve details for a specific Jira issue by key or URL. Use this when the user mentions an issue like "PAYWALL-943" or pastes a Jira link (e.g., https://your.atlassian.net/browse/PAYWALL-943). Returns status, assignee, priority, project, type, labels, components, timestamps, and description.

Input parameters:

- `expand` (array): Additional issue details to include
- `fields` (array): Specific fields to retrieve
- `issueKey` (string, required): Issue key or full Jira URL (e.g., PROJECT-123 or https://your.atlassian.net/browse/PROJECT-123)

### `jira_search_issues` (~134 tokens)

Search for Jira issues using JQL. Supports complex queries with pagination and field selection. Examples: "project = PROJECT AND status = Open", "assignee = currentUser()". For pagination, use nextPageToken from previous response.

Input parameters:

- `expand` (array): Additional details to include
- `fields` (array): Specific fields to retrieve
- `jql` (string, required): JQL query string
- `maxResults` (number): Maximum number of results to return per page
- `nextPageToken` (string): Token for pagination. Omit for first page, use value from previous response for next page.

### `jira_get_my_issues` (~107 tokens)

Retrieves issues assigned to current user, sorted by most recently updated first. Supports pagination and field selection. For pagination, use nextPageToken from previous response.

Input parameters:

- `expand` (array): Additional details to include
- `fields` (array): Specific fields to retrieve
- `maxResults` (number): Maximum number of results to return per page
- `nextPageToken` (string): Token for pagination. Omit for first page, use value from previous response for next page.

### `jira_get_issue_types` (~59 tokens)

Retrieves available issue types. Can get global issue types or project-specific issue types including regular issues and subtasks (Bug, Story, Task, Epic, etc.).

Input parameters:

- `projectKey` (string): Project key to get issue types for specific project

### `jira_get_users` (~107 tokens)

Search for users by name, email, username, or account ID. Returns display name, email, account status, and account type. Supports pagination.

Input parameters:

- `accountId` (string): Specific account ID to search for
- `maxResults` (number): Maximum number of results to return
- `query` (string): Search query for user name or email
- `startAt` (number): Index of first result to return
- `username` (string): Specific username to search for

### `jira_get_priorities` (~35 tokens)

Retrieves available priorities (e.g., Highest, High, Medium, Low, Lowest). Returns IDs, names, and descriptions.

### `jira_get_statuses` (~72 tokens)

Retrieves available statuses (global or project-specific, e.g., To Do, In Progress, Done). Returns status categories and workflow information.

Input parameters:

- `issueTypeId` (string): Issue type ID to get statuses for specific issue type
- `projectKey` (string): Project key to get statuses for specific project

### `jira_get_project_info` (~63 tokens)

Retrieves detailed information about a project (components, versions, issue types, roles, insights). More comprehensive than the basic project list.

Input parameters:

- `expand` (array): Additional project details to include
- `projectKey` (string, required): Project key to get detailed information for

### `jira_get_create_meta` (~89 tokens)

Retrieves create metadata for a project, showing all available fields (including custom fields) for creating issues. Shows required vs optional fields, field types, and allowed values. Use this before creating issues to discover what fields are needed.

Input parameters:

- `issueTypeName` (string): Specific issue type name to get metadata for (optional)
- `projectKey` (string, required): Project key to get create metadata for

### `jira_get_custom_fields` (~64 tokens)

Retrieves all custom fields available in Jira. Shows custom field names, IDs (e.g., customfield_10071), and types. Useful for discovering what custom fields exist and their identifiers.

Input parameters:

- `projectKey` (string): Project key to filter custom fields (optional)

### `jira_get_comments` (~122 tokens)

Retrieves all comments for a Jira issue. Returns comment author, content, timestamps, and visibility settings. Supports pagination for issues with many comments.

Input parameters:

- `issueKey` (string, required): Issue key to get comments for (e.g., PROJECT-123)
- `maxResults` (number): Maximum number of comments to return (default: 50)
- `orderBy` (string): Sort order for comments: "created" (oldest first), "-created" (newest first)
- `startAt` (number): Index of first comment to return (for pagination)

### `jira_get_attachments` (~56 tokens)

Lists all attachments on a Jira issue. Returns attachment metadata including filename, size, MIME type, author, and download URL.

Input parameters:

- `issueKey` (string, required): Issue key to get attachments for (e.g., PROJECT-123)

### `jira_get_transitions` (~60 tokens)

Retrieves all available workflow transitions for a Jira issue. Use this to discover which status changes are possible for an issue before calling jira_transition_issue.

Input parameters:

- `issueKey` (string, required): Issue key to get available transitions for (e.g., PROJECT-123)

### `jira_create_issue` (~289 tokens)

Creates a new Jira issue in the specified project. Supports setting issue type, priority, assignee, labels, components, and custom fields. Description format is controlled by the "format" parameter (default: markdown). For required custom fields, supply them via customFields (e.g., { "customfield_12345": { id: "..." } }). Returns the created issue with all details.

Input parameters:

- `assignee` (string): Assignee account ID
- `components` (array): Component names
- `customFields` (object): Additional Jira field mappings, e.g. { "customfield_12345": value }. Use for required custom fields.
- `description`: Issue description. Accepts plain text or ADF object.
- `format` (string): Description format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"
- `issueType` (string, required): Issue type (e.g., Bug, Story, Task)
- `labels` (array): Issue labels
- `priority` (string): Issue priority
- `projectKey` (string, required): Project key where the issue will be created
- `returnIssue` (boolean): When false, skip fetching full issue after creation
- `summary` (string, required): Issue summary/title

### `jira_update_issue` (~237 tokens)

Updates an existing Jira issue by its key. Supports updating summary, description, priority, assignee, labels, and components. Description format is controlled by the "format" parameter (default: markdown). Only specified fields will be updated.

Input parameters:

- `assignee` (string): New assignee account ID
- `components` (array): New components (replaces existing)
- `description`: New description. Accepts plain text or ADF object.
- `format` (string): Description format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"
- `issueKey` (string, required): Issue key to update
- `labels` (array): New labels (replaces existing)
- `parent` (string): New parent issue key (e.g., PROJECT-100). Set to empty string to remove the parent.
- `priority` (string): New priority
- `returnIssue` (boolean): When false, skip fetching full issue after update
- `summary` (string): New summary

### `jira_add_comment` (~135 tokens)

Adds a comment to an issue. Supports visibility restrictions for groups or roles. Comment format is controlled by the "format" parameter (default: markdown). Returns the created comment with author details and timestamp.

Input parameters:

- `body` (string, required): Comment body text
- `format` (string): Comment format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"
- `issueKey` (string, required): Issue key to add comment to
- `visibility` (object): Comment visibility restrictions

### `jira_create_subtask` (~191 tokens)

Creates a subtask under an existing parent issue. Automatically determines the correct project and subtask issue type. Supports setting priority, assignee, labels, and components. Description format is controlled by the "format" parameter (default: markdown).

Input parameters:

- `assignee` (string): Assignee account ID
- `components` (array): Component names
- `description`: Subtask description. Accepts plain text or ADF object.
- `format` (string): Description format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"
- `labels` (array): Subtask labels
- `parentIssueKey` (string, required): Parent issue key
- `priority` (string): Subtask priority
- `summary` (string, required): Subtask summary/title

### `jira_create_issue_link` (~103 tokens)

Creates a link between two Jira issues. Supports common link types like "blocks", "relates", "duplicates", and "clones". Use this to establish relationships between issues.

Input parameters:

- `fromIssue` (string, required): Source issue key
- `linkType` (string, required): Link type: "blocks", "is blocked by", "relates", "duplicates", "clones", or custom link type name
- `toIssue` (string, required): Target issue key

### `jira_add_attachment` (~290 tokens)

Uploads an attachment (image, document, etc.) to a Jira issue.

\**EFFICIENT METHOD (recommended for large files):**
\- fileUrl: Provide URL to remote file - MINIMAL tokens (~60 tokens)
  Example: Upload to Dropbox/S3/imgur first, then provide URL

\**DIRECT METHOD (for small files):**
\- content: Base64 encoded content - WARNING: HIGH token cost (~330,000 tokens for 1MB file)
  Only suitable for small files (< 500 KB)

Returns attachment metadata including ID and download URL. To reference the image in a comment or description, use wiki markup: !filename.png! or !filename.png|thumbnail!

Input parameters:

- `content` (string): Base64-encoded or plain text content. WARNING: HIGH token cost (~330k tokens for 1MB file). Use fileUrl for large files or upload to cloud storage first.
- `fileUrl` (string): URL to download file from (efficient for remote files, ~60 tokens). Upload large files to Dropbox/S3/imgur first, then use URL.
- `filename` (string, required): Name of the file to attach
- `isBase64` (boolean): Whether content is base64-encoded (default: true). Set to false for plain text files.
- `issueKey` (string, required): Issue key to add attachment to (e.g., PROJECT-123)

### `jira_transition_issue` (~228 tokens)

Transitions a Jira issue to a new workflow status (e.g., "To Do" -> "In Progress" -> "Done"). Use jira_get_transitions first to discover available transitions. Supports adding a comment and setting resolution during the transition.

Input parameters:

- `comment` (string): Optional comment to add when transitioning the issue
- `format` (string): Comment format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"
- `issueKey` (string, required): Issue key to transition (e.g., PROJECT-123)
- `resolution` (string): Resolution name when transitioning to a resolved/done status (e.g., "Done", "Fixed")
- `transitionId` (string): ID of the transition to perform. Use jira_get_transitions to find available transition IDs.
- `transitionName` (string): Name of the transition to perform (e.g., "In Progress", "Done"). Case-insensitive. Alternative to transitionId.

### `jira_get_issue_graph` (~228 tokens)

Build a dependency/relationship graph starting from a seed issue. Returns a map of connected issues (parent/child hierarchy, blocks, relates to, duplicates, etc.) with nodes and edges, plus a Mermaid diagram for visualization. Use this to understand how issues are connected across epics, stories, and subtasks.

Input parameters:

- `direction` (string): Which link directions to follow: "all", "inward", or "outward" (default: "all")
- `includeHierarchy` (boolean): Include parent/child/subtask edges (default: true)
- `issueKey` (string, required): Seed issue key to start graph traversal from (e.g., PROJECT-123)
- `linkTypes` (array): Filter to specific link types (e.g., ["Blocks", "Relates"]). If omitted, includes all link types.
- `maxDepth` (number): Maximum BFS traversal depth from seed issue (default: 2, max: 5)
- `maxNodes` (number): Maximum number of nodes to include in the graph (default: 50, max: 200)

### `jira_delete_attachment` (~43 tokens)

Deletes an attachment from Jira by its attachment ID. Use jira_get_attachments to find attachment IDs.

Input parameters:

- `attachmentId` (string, required): ID of the attachment to delete

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/freema-mcp-jira-stdio/mcp-jira-stdio#diagnostics

## Score history

- 2026-08-03: 73
- 2026-08-02: 73
- 2026-08-01: 54
- 2026-07-31: 61
- 2026-07-30: 27
- 2026-07-28: 58
- 2026-07-27: 6

## Links

- npm package: https://www.npmjs.com/package/mcp-jira-stdio
- Socket report: https://socket.dev/npm/package/mcp-jira-stdio
- Repository: https://github.com/freema/mcp-jira-stdio
- Changelog RSS feed: https://verifymcp.io/servers/freema-mcp-jira-stdio/mcp-jira-stdio/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/freema-mcp-jira-stdio/mcp-jira-stdio/changelog.json
- HTML version of this page: https://verifymcp.io/servers/freema-mcp-jira-stdio/mcp-jira-stdio
