Skip to main content

Overview

The GAIA Jira Agent provides a natural language interface to Atlassian Jira. It talks directly to the Atlassian REST API — no intermediary services or MCP bridge required. On first use it auto-discovers your instance configuration (projects, issue types, statuses, priorities) so it adapts to your Jira setup, then lets you search, create, and update issues with plain English.
First time here? Complete the Setup guide first to install GAIA and its dependencies. Desktop WebUI: GAIA also ships a JIRA WebUI Electron app. See WebUI Configuration below.

Quick Start

Prerequisites

  1. GAIA Installation — Follow the Setup guide. The base install includes everything the Jira agent needs.
  2. Download the model — The agent uses Qwen3.5-35B-A3B-GGUF for reliable JSON parsing and JQL generation. Download it via the Lemonade model manager:
    1. Start the server: lemonade-server serve
    2. Open the model manager (typically http://localhost:13305)
    3. Search for and download Qwen3.5-35B-A3B-GGUF
    The model is over 17 GB, so download takes a while and is best run on a Strix Halo (or similar high-memory) device. It is selected automatically when you run Jira commands.
  3. Set Jira credentials:
    Or create a .env file in the project root (see .env.example for a template). See Getting Your Jira API Token for token setup.

Verify Installation

Basic Usage

The agent was developed and tested against a dummy Jira project. Real instances vary in custom fields, workflows, and permissions, so you may hit errors or unexpected results. Auto-discovery adapts to most setups, but highly customized environments may need manual adjustment.

Architecture

The CLI (gaia jira) wraps JiraApp (src/gaia/apps/jira/app.py), which drives the JiraAgent (hub/agents/python/jira/gaia_agent_jira/agent.py):
  • JiraAgent — processes natural language, auto-discovers your instance configuration, translates queries to JQL, and registers three tools: jira_search, jira_create, jira_update.
  • JiraApp — high-level wrapper that handles interactive mode and formats output for display.
  • gaia jira CLI — manages the agent lifecycle; supports direct queries and interactive mode.
  1. Automatic discovery — on first use it queries your Jira instance for projects, issue types, statuses, and priorities.
  2. Dynamic prompting — that discovered config teaches the LLM about your specific setup.
  3. Query translation — the LLM converts natural language into structured tool calls (and JQL).
  4. Tool execution — calls the Jira REST API.
  5. Result formatting — returns a user-friendly response.

Usage Examples

The agent understands a wide range of phrasings — the examples below are representative, not exhaustive.

Create

Update

Interactive Mode

Integration Methods

1. Python API

Use the JiraAgent directly in your Python applications:
process_query returns a dict with status ("success", "failed", or "incomplete"), result, steps_taken, conversation, and error_history.

2. MCP Server (HTTP/JSON-RPC)

For non-Python applications, expose the agent over HTTP via the MCP bridge:
Then call it from any language with a JSON-RPC tools/call. The response payload is JSON in result.content[0].text.
For workflow integrations, see the MCP Documentation and n8n Integration Guide.

Key Features

  • Automatic configuration discovery — learns your projects, issue types, statuses, priorities, and custom fields on first use, with no config files.
  • Intelligent query translation — maps intent to your instance: "my issues"assignee = currentUser(), "critical" → your priority values, "this week" → correct date ranges, "in progress" → your real status names.
  • Robust error handling — validates credentials before calling the API, retries failed operations, suggests corrections for invalid issue types or field names, and preserves conversation context across errors.

Configuration

Getting Your Jira API Token

  1. Log into your Atlassian account.
  2. Go to Account Settings > Security > API tokens.
  3. Click Create API token, name it (e.g. “GAIA Integration”), and copy it somewhere safe.

Setting Environment Variables

Custom Model Selection

Override the default model when constructing the agent:

Troubleshooting

”Missing Jira credentials”

Confirm the environment variables are set, then verify the token works directly:

“No issues found” when you know they exist

Run with --debug to see the generated JQL, and confirm you can view the project:

“Invalid issue type” errors

Discover the issue types your instance actually uses:
Note: the dummy project uses “Idea” and “Epic” as issue types, not “Bug”/“Task”/“Story”.

MCP bridge connection issues

Best Practices

  • Be specific"show my high priority ideas in project MDP" beats "show issues".
  • Let discovery run first — call agent.initialize() (or any query) once so the agent knows your projects, statuses, and issue types before you create or update.
  • Use interactive mode (gaia jira --interactive) for iterative exploration.
To exercise the integration end-to-end, run the smoke test: python scripts/jira_smoke.py (add --interactive, --debug, or --show-prompts as needed).

Limitations

  • API rate limits — Atlassian enforces rate limits on API calls.
  • Field permissions — can only access or modify fields you have permission for.
  • Bulk operations — items are processed sequentially, not in parallel.
  • Attachments — file attachments are not supported.
  • Workflow transitions — limited support for complex transitions.

WebUI Configuration

The JIRA WebUI provides an in-app configuration screen for your JIRA server URL, username/email, and API token. Configuration is stored locally and persists between sessions.

See Also