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
- GAIA Installation — Follow the Setup guide. The base install includes everything the Jira agent needs.
-
Download the model — The agent uses
Qwen3.5-35B-A3B-GGUFfor reliable JSON parsing and JQL generation. Download it via the Lemonade model manager:- Start the server:
lemonade-server serve - Open the model manager (typically http://localhost:13305)
- Search for and download
Qwen3.5-35B-A3B-GGUF
- Start the server:
-
Set Jira credentials:
Or create a
.envfile in the project root (see.env.examplefor 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 jiraCLI — manages the agent lifecycle; supports direct queries and interactive mode.
- Automatic discovery — on first use it queries your Jira instance for projects, issue types, statuses, and priorities.
- Dynamic prompting — that discovered config teaches the LLM about your specific setup.
- Query translation — the LLM converts natural language into structured tool calls (and JQL).
- Tool execution — calls the Jira REST API.
- Result formatting — returns a user-friendly response.
Usage Examples
The agent understands a wide range of phrasings — the examples below are representative, not exhaustive.Search
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:tools/call. The response payload is JSON in result.content[0].text.
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
- Log into your Atlassian account.
- Go to Account Settings > Security > API tokens.
- Click Create API token, name it (e.g. “GAIA Integration”), and copy it somewhere safe.
Setting Environment Variables
- Linux/Mac
- Windows
- .env file
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: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.
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
- GAIA CLI Documentation - Full command line interface guide
- MCP Server Documentation - External integration details
- Agent Development Guide - Build your own agents
- Features Overview - Complete GAIA capabilities