Skip to main content
Version: Beta

Jira

MCP

Integrate Atlassian Jira for issue tracking, project management, and workflow automation in your Devgraph knowledge graph.

Overview​

The Jira molecule connects to Atlassian Jira to manage issues, projects, and workflows. It provides MCP tools for creating, updating, and searching issues, plus entity synchronization to your knowledge graph.

Key Features:

  • Create, update, and search Jira issues
  • Discover projects and issues automatically
  • Link issues to projects and other entities
  • Support for both Jira Cloud and Server/Data Center
  • JQL (Jira Query Language) search support
  • Issue transitions and comment management

Quick Start​

providers:
- name: jira
type: jira
every: 300
config:
namespace: default
base_url: https://your-company.atlassian.net
email: ${JIRA_EMAIL}
api_token: ${JIRA_API_TOKEN}
cloud: true
selectors:
- project_keys: ["PROJ", "DEV"]

Configuration​

providers:
- name: jira-cloud
type: jira
every: 300
config:
namespace: default
base_url: https://your-company.atlassian.net
email: your-email@company.com
api_token: ${JIRA_API_TOKEN}
cloud: true
selectors:
- project_keys: ["PROJ", "DEV", "OPS"]
include_archived: false

Jira Server/Data Center Configuration​

providers:
- name: jira-server
type: jira
every: 300
config:
namespace: default
base_url: https://jira.company.com
username: ${JIRA_USERNAME}
password: ${JIRA_PASSWORD}
cloud: false
selectors:
- project_keys: ["PROJ"]

Configuration Options​

OptionTypeRequiredDefaultDescription
namespacestringNodefaultNamespace for created entities
base_urlstringYes-Jira instance URL
emailstringYes*-Email for Jira Cloud authentication
api_tokenstringYes*-API token for Jira Cloud
usernamestringYes**-Username for Server/Data Center
passwordstringYes**-Password for Server/Data Center
cloudbooleanNotrueWhether this is Jira Cloud
selectorslistNo[]Project selection criteria

*Required for Jira Cloud **Required for Jira Server/Data Center

Selector Options​

Each selector specifies which projects to discover:

OptionTypeRequiredDefaultDescription
project_keyslistNo[]List of project keys to include
jql_filterstringNo-JQL query to filter issues
include_archivedbooleanNofalseInclude archived projects

Authentication​

Jira Cloud (API Token)​

Rate Limit: 10,000 requests/hour per user

  1. Go to Atlassian API Tokens
  2. Click "Create API token"
  3. Give it a label (e.g., "Devgraph Integration")
  4. Copy the token
  5. Configure:
email: your-email@company.com
api_token: ${JIRA_API_TOKEN}
cloud: true

Set environment variable:

export JIRA_EMAIL="your-email@company.com"
export JIRA_API_TOKEN="your-api-token-here"

Jira Server/Data Center​

Use your regular username and password:

username: ${JIRA_USERNAME}
password: ${JIRA_PASSWORD}
cloud: false

Set environment variables:

export JIRA_USERNAME="your-username"
export JIRA_PASSWORD="your-password"

MCP Tools​

The Jira molecule provides the following MCP tools:

Issue Management​

jira_create_issue​

Create a new Jira issue.

jira_create_issue(
project="PROJ",
summary="Implement new authentication system",
issue_type="Task",
description="Detailed description of the task",
assignee="john.doe",
labels=["backend", "security"],
priority="High"
)

Parameters:

  • project (required): Project key
  • summary (required): Issue title
  • issue_type (required): Task, Bug, Story, Epic, etc.
  • description: Detailed description
  • assignee: Username to assign
  • labels: List of labels
  • priority: Priority level

jira_get_issue​

Get details of a specific issue.

jira_get_issue(issue_key="PROJ-123")

jira_update_issue​

Update an existing issue.

jira_update_issue(
issue_key="PROJ-123",
summary="Updated title",
description="Updated description",
assignee="jane.doe"
)

jira_search_issues​

Search issues using JQL (Jira Query Language).

jira_search_issues(
jql="project = PROJ AND status = 'In Progress'",
max_results=50
)

jira_add_comment​

Add a comment to an issue.

jira_add_comment(
issue_key="PROJ-123",
comment="This is a comment"
)

jira_transition_issue​

Transition an issue to a different status.

jira_transition_issue(
issue_key="PROJ-123",
transition="Done",
comment="Completed the task"
)

Project Management​

jira_get_project​

Get details of a specific project.

jira_get_project(project_key="PROJ")

jira_list_projects​

List all accessible projects.

jira_list_projects()

Entities Created​

JiraIssue​

Represents a work item in Jira.

Entity Structure:

apiVersion: entities.devgraph.ai/v1
kind: JiraIssue
metadata:
name: proj-123
namespace: default
labels:
project: PROJ
issue_type: Task
status: In Progress
spec:
key: PROJ-123
project_key: PROJ
summary: Implement authentication
issue_type: Task
status: In Progress
assignee: john.doe
reporter: jane.doe
priority: High
labels:
- backend
- security
created: "2024-01-15T10:00:00Z"
updated: "2024-01-16T14:30:00Z"

Key Fields:

  • key: Issue key (e.g., "PROJ-123")
  • project_key: Project the issue belongs to
  • summary: Issue title
  • issue_type: Task, Bug, Story, Epic, Subtask
  • status: Current workflow status
  • assignee: Assigned user
  • reporter: User who created the issue
  • priority: Priority level

JiraProject​

Represents a Jira project containing issues.

Entity Structure:

apiVersion: entities.devgraph.ai/v1
kind: JiraProject
metadata:
name: proj
namespace: default
labels:
project_type: software
spec:
key: PROJ
name: My Project
description: Project description
lead: project.lead
project_type: software

Key Fields:

  • key: Project key (e.g., "PROJ")
  • name: Project name
  • description: Project description
  • lead: Project lead username
  • project_type: Type of project (software, business, etc.)

Relationships​

IN_PROJECT​

Issues belong to projects.

JiraIssue --IN_PROJECT--> JiraProject

Example:

PROJ-123 --IN_PROJECT--> PROJ

ASSIGNED_TO​

Issues can be assigned to users (if user entities exist).

JiraIssue --ASSIGNED_TO--> User

BLOCKS​

Issues can block other issues.

JiraIssue --BLOCKS--> JiraIssue

Issues can be related to other entities in the knowledge graph.

JiraIssue --RELATED_TO--> [Any Entity]

JQL Examples​

Jira Query Language (JQL) is used to search for issues:

Find Open Bugs​

project = PROJ AND type = Bug AND status = Open

Find Your Assigned Tasks​

assignee = currentUser() AND status != Done

Find Recently Updated Issues​

project = PROJ AND updated >= -7d

Find High Priority Issues​

priority = High AND status in ("To Do", "In Progress")

Find Issues by Label​

project = PROJ AND labels = backend

Find Issues Due This Week​

project = PROJ AND due >= startOfWeek() AND due <= endOfWeek()

Complex Query​

project = PROJ AND
type in (Bug, Task) AND
status = "In Progress" AND
assignee in (currentUser(), "john.doe") AND
updated >= -3d

Filtering Projects​

Select Specific Projects​

selectors:
- project_keys: ["PROJ", "DEV", "OPS"]

Include Archived Projects​

selectors:
- project_keys: ["PROJ"]
include_archived: true

Filter Issues with JQL​

selectors:
- project_keys: ["PROJ"]
jql_filter: "labels = backend AND created >= -30d"

Use Cases​

Multi-Project Discovery​

selectors:
- project_keys: ["BACKEND", "FRONTEND", "INFRA"]

Team-Specific Issues​

selectors:
- project_keys: ["PROJ"]
jql_filter: "labels = platform-team"
- project_keys: ["DEV"]
jql_filter: "labels = product-team"

Environment Separation​

# Production issues
- name: jira-prod
config:
namespace: production
selectors:
- project_keys: ["PROD"]

# Development issues
- name: jira-dev
config:
namespace: development
selectors:
- project_keys: ["DEV"]

Troubleshooting​

Authentication Failed​

Symptom: "401 Unauthorized" error

Solutions:

  1. Verify email and API token are correct (Cloud)
  2. Check username and password (Server/Data Center)
  3. Ensure the base URL includes https://
  4. For Cloud: Verify API token hasn't expired
  5. Check user has access to the Jira instance

Permission Denied​

Symptom: "403 Forbidden" error

Solutions:

  1. Verify user has access to the specified projects
  2. Check Jira permission scheme for the project
  3. Ensure user has "Browse Projects" permission
  4. For Server: Check user is in the correct groups

Project Not Found​

Symptom: Project key not found

Solutions:

  1. Verify project key is correct (case-sensitive)
  2. Check user has access to the project
  3. Ensure project is not archived (unless include_archived: true)
  4. Check project exists in the Jira instance

Transition Not Found​

Symptom: Transition name not valid

Solutions:

  1. Use jira_get_issue to see available transitions
  2. Transition names are case-sensitive
  3. Transitions depend on current issue status
  4. Check workflow configuration in Jira

Rate Limit Exceeded​

Symptom: "429 Too Many Requests" error

Solutions:

  1. Increase reconciliation interval (every: 600 for 10 minutes)
  2. Reduce number of projects/issues being synced
  3. Use JQL filters to limit issue discovery
  4. For Cloud: Default limit is 10,000 requests/hour per user

Performance Tips​

  1. Use JQL filters: Filter issues at the API level instead of syncing everything
  2. Limit project scope: Only sync projects you need
  3. Adjust interval: Balance freshness vs. API usage
  4. Exclude archived: Set include_archived: false to reduce API calls
  5. Paginate carefully: Use reasonable max_results in searches

Integration Examples​

Use Jira issue keys in PR titles/descriptions:

[PROJ-123] Fix authentication bug

The system can automatically link:

JiraIssue (PROJ-123) --IMPLEMENTED_BY--> GithubPullRequest

In your .devgraph.yaml:

relations:
- source:
kind: JiraIssue
name: proj-123
target:
kind: Service
name: auth-service
relation: RELATES_TO

Track which issues are deployed:

JiraIssue --DEPLOYED_IN--> ArgoApplication

Next Steps​