Skip to main content
Glama

Jira MCP Server

MCP (Model Context Protocol) server for Jira Cloud API integration. Create issues and list issue types using Basic Auth (email + API token).

Features

  • jira_create_issue – Create a new Jira issue with project, summary, and issue type

  • jira_list_issue_types – List available issue types for a project

Related MCP server: mcp-jira

Prerequisites

Setup

  1. Clone and install

    cd jira_mcp
    npm install
  2. Configure environment

    Copy .env.example to .env and fill in your values:

    cp .env.example .env
    JIRA_BASE_URL=https://your-domain.atlassian.net
    JIRA_EMAIL=user@example.com
    JIRA_API_TOKEN=your_api_token_here
  3. Build

    npm run build

Usage

Run the server

npm start

Or with env vars inline:

JIRA_BASE_URL=https://your-domain.atlassian.net JIRA_EMAIL=you@example.com JIRA_API_TOKEN=xxx npm start

The server runs via stdio and is intended to be used as a subprocess by MCP clients (e.g. Cursor, Claude Desktop).

Cursor configuration

Add to your Cursor MCP config (e.g. ~/.cursor/mcp.json):

{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["/path/to/jira_mcp/dist/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_EMAIL": "your-email@example.com",
        "JIRA_API_TOKEN": "your-api-token"
      }
    }
  }
}

Tools

jira_list_issue_types

List issue types (Bug, Task, Story, etc.) for a project.

Parameter

Type

Required

Description

project_key

string

Yes

Jira project key (e.g. PROJ)

response_format

string

No

markdown (default) or json

jira_create_issue

Create a new Jira issue.

Parameter

Type

Required

Description

project_key

string

Yes

Jira project key

summary

string

Yes

Issue title

issue_type

string

Yes

Issue type name (e.g. Bug, Task) or ID

description

string

No

Issue description

response_format

string

No

markdown (default) or json

Testing Without Cursor

The best way to test the MCP server interactively is with MCP Inspector, a web UI for exercising tools, resources, and prompts.

  1. Build the project (if not already done):

    npm run build
  2. Run MCP Inspector with your server. With a .env file in the project root, the server loads it automatically:

    npm run inspector

    Or run directly (env from .env is loaded by the server):

    npx @modelcontextprotocol/inspector node dist/index.js

    To pass env vars explicitly instead:

    npx @modelcontextprotocol/inspector \
      -e JIRA_BASE_URL=https://your-domain.atlassian.net \
      -e JIRA_EMAIL=you@example.com \
      -e JIRA_API_TOKEN=your-token \
      node dist/index.js
  3. Open the Inspector in your browser (typically http://localhost:6274).

  4. Test tools – Use the Tools tab to call jira_list_issue_types and jira_create_issue with sample inputs.

The Inspector runs your server as a subprocess and connects via stdio, so it behaves like a real MCP client.

Development

# Run with auto-reload
npm run dev

# Run all tests (unit + integration)
npm test

# Run tests with coverage
npm run test:coverage

# Run integration tests only (spawns MCP server + mock Jira)
npm run test:integration

# Lint code
npm run lint
npm run lint:fix

# Format code
npm run format
npm run format:check

Pre-commit hooks (Husky)

On each git commit, Husky runs lint and Prettier on staged files. If there are errors, the commit is blocked with a message:

❌ Commit blocked: Fix the lint or Prettier errors above.
   Tips: npm run lint:fix  |  npm run format

To bypass (use sparingly): git commit --no-verify or HUSKY=0 git commit

CI

GitHub Actions runs on pull requests to main/master with separate stages on Node.js 24.x:

  • Unit Testsnpm run test:unit (90% coverage enforced)

  • Integration Testsnpm run test:integration (MCP server + mock Jira)

  • Lint & Format – ESLint and Prettier checks

  • Security Auditnpm audit (fails on moderate+ vulnerabilities)

  • CodeQL – Static security analysis (JavaScript/TypeScript)

  • Dependency Review – Checks for vulnerable deps in PRs

Dependabot is configured for weekly dependency updates (.github/dependabot.yml).

To block merges until PRs pass, enable branch protection in GitHub: Settings → Branches → Add rule → Require status checks to pass before merging.

API Reference

License

MIT

Available Tools

2 tools
jira_create_issueCreate Jira IssueA

Create a new Jira issue in a project.

Creates an issue with the given project, summary, and issue type. Use jira_list_issue_types to discover valid issue types for a project.

Args:

  • project_key (string): Jira project key (e.g. PROJ)

  • summary (string): Issue title (required)

  • issue_type (string): Issue type name (e.g. Bug, Task) or numeric ID

  • description (string, optional): Issue description

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON: { "key": string, "id": string, "self": string } For Markdown: Summary with issue key and link

Examples:

  • Create a bug: project_key="PROJ", summary="Login fails", issue_type="Bug"

  • Create a task: project_key="DEMO", summary="Review docs", issue_type="Task"

Error Handling:

  • 401: Check JIRA_EMAIL and JIRA_API_TOKEN

  • 403: No create permission in project

  • 404: Project or issue type not found

  • 422: Validation error (e.g. missing required fields)

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYesIssue title
issue_typeYesIssue type name or ID
descriptionNoOptional description
project_keyYesJira project key
response_formatNoOutput formatmarkdown

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already indicate a write operation), the description discloses authentication requirements (JIRA_EMAIL, JIRA_API_TOKEN), permission needs (403 error), and validation behavior (422). It also details return formats for both markdown and JSON, adding valuable context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Examples, Error Handling). It is concise yet comprehensive, with every sentence contributing actionable information. Front-loads the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description thoroughly explains return values for both formats. It covers prerequisites, error scenarios, and examples, making it complete for a creation tool with robust annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds examples and clarifies that issue_type can be a name or numeric ID, reinforcing schema info with practical usage. Error handling explanations further enrich parameter context, justifying a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create a new Jira issue in a project,' clearly specifying the action and resource. It distinguishes itself from sibling tool jira_list_issue_types by focusing on creation, not listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly directs users to jira_list_issue_types for discovering valid issue types, providing clear guidance on when to use an alternative. Error handling section also helps users know what to do in failure scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_list_issue_typesList Jira Issue TypesA
Read-onlyIdempotent

List issue types available for a Jira project.

Use this tool to discover which issue types (e.g. Bug, Task, Story) can be used when creating issues in a project. Returns id, name, and description for each type.

Args:

  • project_key (string): Jira project key (e.g. PROJ, DEMO)

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON: { "issue_types": [{ "id": string, "name": string, "description": string }] } For Markdown: Formatted list of issue types

Examples:

  • "What issue types can I create in project PROJ?" -> project_key="PROJ"

  • Use before jira_create_issue to get valid issue_type values

Error Handling:

  • 401: Check JIRA_EMAIL and JIRA_API_TOKEN

  • 403: Insufficient permissions for the project

  • 404: Project not found

ParametersJSON Schema
NameRequiredDescriptionDefault
project_keyYesJira project key
response_formatNoOutput formatmarkdown

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, and non-destructive, so the bar is lower. The description adds valuable context beyond that: error handling scenarios (401, 403, 404), return format details, and a note about permissions. These are genuine behavioral disclosures that help the agent anticipate outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage, args, returns, examples, errors). The first sentence immediately states the tool's function, and every sentence serves a purpose without redundancy. The error handling section is dense but valuable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by specifying the return structure for both format options. It also covers error handling, usage context, and integration with jira_create_issue. For a simple listing tool, this is a complete and self-contained specification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by providing explicit examples (e.g., "What issue types can I create in project PROJ?" -> project_key="PROJ") and clarifying the response_format default in a way that connects to use cases. This adds useful semantic guidance despite the schema being sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: "List issue types available for a Jira project." It clearly distinguishes from the sibling tool (jira_create_issue) by stating it is for discovery before creation, and the title itself is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says "Use this tool to discover which issue types can be used when creating issues" and "Use before jira_create_issue to get valid issue_type values." This provides clear when-to-use guidance and an alternative context, satisfying the dimension fully.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedjira_create_issue
    • First observedjira_list_issue_types

TDQS

A4.6/5.0
Disambiguation5/5

The two tools are completely distinct: one lists issue types for discovery, the other creates an issue. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tools follow the same 'jira_verb_noun' pattern (jira_list_issue_types, jira_create_issue), making the naming predictable and consistent.

Tool Count3/5

With exactly 2 tools, the server sits in the 'borderline thin' range. While the scope is clear, a Jira server typically needs more tools to be useful.

Completeness2/5

The tools cover only creation and issue-type lookup. Missing get, update, delete, search, and project listing means agents cannot verify or manage issues, leaving significant workflow gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Jira Cloud and Server/Data Center deployments for issue management, project tracking, and workflow automation. Supports multiple authentication methods including API tokens, OAuth 2.0, and personal access tokens.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Jira issues, projects, and comments via API Key. Supports operations like creating, updating, searching, transitioning issues, and managing projects.
    640
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with Jira issues via JQL search, epic management, comments, attachments, and issue CRUD, with support for both Cloud and Server/Data Center instances.
    9
    18
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables creating, fetching, and updating Jira issues via the REST API with support for ADF descriptions and common fields like priority, labels, and issue types.
    98
    2
    Apache 2.0

Latest Blog Posts

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/vertigooxyz-devix/mcp-for-jira'

If you have feedback or need assistance with the MCP directory API, please join our Discord server