Jira Connector
The Jira connector enables AxonFlow agents to interact with Atlassian Jira for issue tracking, project management, and workflow automation with full policy enforcement and audit logging.
Overview
| Property | Value |
|---|---|
| Type | jira |
| Edition | Enterprise |
| Auth Methods | API Token, OAuth 2.0 (3LO), Personal Access Token |
| Capabilities | query, execute, search, transitions, comments, attachments |
Use Cases
- Query and create issues for DevOps assistant agents
- Automate ticket triage and assignment workflows
- Generate sprint reports and project status summaries
- Manage incident response tickets programmatically
Prerequisites
- AxonFlow Enterprise license (requires Enterprise Edition)
- Jira Cloud or Jira Data Center instance
- One of the following authentication methods:
- API Token (Jira Cloud, recommended for service accounts)
- Personal Access Token (Jira Data Center)
- OAuth 2.0 (3LO) (for user-context operations)
- Service account with appropriate project permissions
Jira API Token Setup (Cloud)
- Go to Atlassian API Tokens
- Click Create API token
- Name the token (e.g., "AxonFlow Integration")
- Copy the generated token
- Use the token with the service account email as credentials
Configuration
Environment Variables
# Required
MCP_jira_BASE_URL="https://your-domain.atlassian.net"
MCP_jira_EMAIL="[email protected]"
MCP_jira_API_TOKEN="ATATT3xFfGF0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Optional
MCP_jira_TIMEOUT="30s"
MCP_jira_MAX_RETRIES="3"
MCP_jira_DEFAULT_PROJECT="PROJ"
Configuration Options
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
base_url | string | Yes | - | Jira instance URL (e.g., https://your-domain.atlassian.net) |
email | string | Yes* | - | Atlassian account email (required for Cloud API Token auth) |
api_token | string | Yes* | - | API Token or Personal Access Token |
default_project | string | No | - | Default project key for issue creation |
timeout | string | No | 30s | Request timeout |
max_retries | integer | No | 3 | Maximum retry attempts on transient failures |
Connector Config (Customer Portal)
{
"name": "jira-project",
"type": "jira",
"options": {
"base_url": "https://your-domain.atlassian.net",
"default_project": "PROJ",
"timeout": 30,
"max_retries": 3
},
"credentials": {
"email": "[email protected]",
"api_token": "ATATT3xFfGF0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
Installation
Install the Jira connector via the connector marketplace API:
curl -X POST http://localhost:8081/api/v1/connectors/jira/install \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "jira-project",
"config": {
"base_url": "https://your-domain.atlassian.net",
"email": "[email protected]",
"api_token": "ATATT3xFfGF0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}'
Operations
Search Issues (JQL)
curl -X POST https://your-axonflow.example.com/mcp/resources/query \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"connector": "jira-project",
"statement": "issues.search",
"parameters": {
"jql": "project = PROJ AND status = \"In Progress\" AND assignee = currentUser() ORDER BY priority DESC",
"fields": ["summary", "status", "priority", "assignee", "created"],
"maxResults": 25
}
}'
Response:
{
"success": true,
"rows": [
{
"key": "PROJ-1234",
"fields": {
"summary": "API latency exceeding SLA threshold",
"status": {"name": "In Progress"},
"priority": {"name": "High"},
"assignee": {"displayName": "Alice Johnson"},
"created": "2025-12-01T10:30:00.000+0000"
}
}
],
"row_count": 1,
"duration_ms": 180,
"connector": "jira-project"
}
Create an Issue
curl -X POST https://your-axonflow.example.com/mcp/tools/execute \
-H "Content-Type: application/json" \
-d '{
"connector": "jira-project",
"action": "issues.create",
"parameters": {
"project": "PROJ",
"issuetype": "Bug",
"summary": "Login page returns 500 error on mobile",
"description": "Users on iOS Safari are getting a 500 error when attempting to log in. Affects version 2.1.0.",
"priority": "High",
"labels": ["mobile", "production"],
"assignee": "alice.johnson"
}
}'
Response:
{
"success": true,
"rows_affected": 1,
"message": "Issue created (key=PROJ-1235)",
"duration_ms": 210,
"connector": "jira-project"
}
Transition an Issue
curl -X POST https://your-axonflow.example.com/mcp/tools/execute \
-d '{
"connector": "jira-project",
"action": "issues.transition",
"parameters": {
"issue_key": "PROJ-1234",
"transition": "Done",
"comment": "Resolved in release v2.1.1. Verified in staging."
}
}'
Add a Comment
curl -X POST https://your-axonflow.example.com/mcp/tools/execute \
-d '{
"connector": "jira-project",
"action": "comments.add",
"parameters": {
"issue_key": "PROJ-1234",
"body": "Automated analysis: This issue correlates with deployment at 10:15 UTC. Root cause likely related to database connection pool exhaustion."
}
}'
List Projects
curl -X POST https://your-axonflow.example.com/mcp/resources/query \
-d '{
"connector": "jira-project",
"statement": "projects.list",
"parameters": {
"maxResults": 50
}
}'
Supported Operations
| Operation | Description |
|---|---|
issues.search | Search issues using JQL (Jira Query Language) |
issues.create | Create a new issue in a project |
issues.update | Update issue fields (summary, description, priority, etc.) |
issues.transition | Move an issue through workflow transitions |
comments.add | Add a comment to an issue |
projects.list | List accessible projects |
sprints.list | List sprints for a board |
Limitations
- JQL complexity: Very complex JQL queries may time out. Break large queries into smaller filtered sets.
- Rate limits: Jira Cloud enforces rate limits (varies by plan). The connector handles 429 responses with automatic backoff.
- Attachment size: File attachments are limited by your Jira instance configuration (default 10 MB).
- Bulk operations: Issue creation is limited to one issue per request. Use batch workflows for bulk creation.
- Custom fields: Custom fields must be referenced by their field ID (e.g.,
customfield_10001), not display name.
Troubleshooting
Authentication Failed (401)
- Verify the API token is valid and has not been revoked
- For Jira Cloud: ensure the
emailmatches the Atlassian account that generated the token - For Data Center: confirm the Personal Access Token has not expired
- Check that the service account has access to the target project
Permission Denied (403)
- Verify the service account has the required project role (e.g., "Developer" or "Administrator")
- Check project permission scheme in Jira administration
- Ensure the issue type is available in the target project
JQL Syntax Error (400)
- Validate JQL syntax in Jira's issue search UI first
- Ensure field names are correct (custom fields need
cf[10001]format in some contexts) - Check that project keys and status names exist
Health Check
curl https://your-axonflow.example.com/mcp/connectors/jira-project/health
Response:
{
"healthy": true,
"latency_ms": 120,
"details": {
"base_url": "https://your-domain.atlassian.net",
"server_title": "Your Company Jira",
"auth_type": "api_token"
}
}