A Streamlit-based assistant for managing Jira tickets using MCP (Model Control Panel) for tool calling.
- 🤖 Clean tabbed interface for different operations
- 🎯 Create, search, and manage Jira tickets with simple conversational commands
- 🔄 Real-time ticket creation without relying on external LLMs
- 🛠️ Built on the MCP framework for flexible tool calling
- 📊 Direct form-based interface for creating and searching tickets
The application now features a clean tabbed interface with separate sections for:
- Chat - Conversational interface for managing tickets
- Create Ticket - Form-based ticket creation
- Search Tickets - Advanced search using JQL
- Python 3.8+
- Jira account with API access
- MCP server running with Jira tools
- Clone the repository
- Install the required packages:
pip install -r requirements.txt
- Set up your environment variables in a
.env
file:JIRA_URL=https://your-domain.atlassian.net JIRA_EMAIL=your-email@example.com JIRA_API_TOKEN=your-jira-api-token
Use the start script to launch the application:
./start_jira_assistant.sh
The script will:
- Check if the MCP package is installed
- Verify required environment variables
- Start the MCP server if it's not already running
- Launch the Streamlit application
You can create tickets in two ways:
Type natural language commands like:
- "Create a new task in KAN titled 'Implement user authentication' with description 'We need to add a JWT-based authentication system for user login.'"
- "I need a bug ticket in KAN for 'Fix pagination in user list' describing 'The pagination controls are not working correctly when there are more than 10 users.'"
- Navigate to the "Create Ticket" tab
- Fill in the required fields (Project Key, Summary, Description)
- Select the issue type
- Click "Create Ticket"
You can search tickets in two ways:
Type natural language queries like:
- "Find all open tickets in the KAN project"
- "Show me all high priority bugs"
- "Search for tickets mentioning 'authentication' in the KAN project"
- Navigate to the "Search Tickets" tab
- Enter a JQL query (examples are provided in the interface)
- Set the maximum number of results
- Click "Search"
Ask for details about specific tickets:
- "Show details for ticket KAN-123"
- "What's the status of KAN-456?"
For command-line operations, use the direct_jira_tool.py script:
# List available tools
./direct_jira_tool.py list
# Create a ticket
./direct_jira_tool.py create --project KAN --title "Fix login page" --description "The login page has a UI bug in Safari"
# Search for tickets
./direct_jira_tool.py search --query "project = KAN AND status = 'In Progress'"
# Get ticket details
./direct_jira_tool.py get --id KAN-123
You can test the connection to the MCP server using the test_mcp_client.py script:
# Run all tests
python test_mcp_client.py all
# Test connection only
python test_mcp_client.py connect
# Test creating a specific ticket
python test_mcp_client.py test_create --project KAN --title "Test ticket" --description "This is a test"
If the MCP server doesn't connect properly:
- Check if the MCP server path is correct
- Verify your Jira credentials in the .env file
- Use the "Restart MCP Server" button in the sidebar
- Test the connection using
test_mcp_client.py connect
If you encounter issues with ticket creation:
- Make sure all required fields are filled in
- Check that the project key exists and is correctly formatted
- Verify that your Jira API token has sufficient permissions
- Look for specific error messages in the response
If you encounter search issues with error messages like Error executing tool search_jira_tickets: validation error
:
- Make sure your JQL query is properly formatted
- Avoid using complex JQL queries with special characters
- Try simple queries first like
project = KAN
to test functionality - The MCP server currently has a limit of 10 results per search
- Check the browser console and terminal output for detailed error messages
- Make sure all environment variables are set correctly
- Ensure you have the correct version of the
mcp
package installed (pip install -U mcp
)
- 📋 Tabbed Interface: Separate tabs for chat, ticket creation, and search
- 🖋️ Improved Ticket Creation: Direct form-based creation without relying on LLMs
- 🔎 Advanced Search: JQL-based search with examples and flexible formatting
- 🛡️ Enhanced Error Handling: Better error messages and validation
- 🧩 Simplified Dependencies: Removed reliance on external APIs like Gemini
To contribute to this project:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Streamlit for the web app framework
- MCP for the tool-calling infrastructure