Commit 3c8b8df8 authored by MD. SHAHIDUL ISLAM's avatar MD. SHAHIDUL ISLAM

feat: Add QA tester tracking and enhanced issue assignment documentation,…

feat: Add QA tester tracking and enhanced issue assignment documentation, alongside a new Jira API interaction test script.
parent 760d118f
...@@ -11,7 +11,8 @@ This repository contains a Model Context Protocol (MCP) server that connects you ...@@ -11,7 +11,8 @@ This repository contains a Model Context Protocol (MCP) server that connects you
- **Create Bulk Issues:** Effortlessly create dozen of issues, bugs, and tasks simultaneously in a single command. - **Create Bulk Issues:** Effortlessly create dozen of issues, bugs, and tasks simultaneously in a single command.
- **Create Advanced Issues:** Specify labels, components, assignee, due date, original estimates, priority, and environment when creating issues, just like the web interface. - **Create Advanced Issues:** Specify labels, components, assignee, due date, original estimates, priority, and environment when creating issues, just like the web interface.
- **Create Issue with Subtasks:** Automatically generate a parent Story or Task and link multiple subtasks to it in a single command. - **Create Issue with Subtasks:** Automatically generate a parent Story or Task and link multiple subtasks to it in a single command.
- **Assign Issues:** Automatically assign existing or newly created issues to yourself. - **Assign Issues:** Automatically assign existing or newly created issues to yourself, or to others.
- **QA Tester Tracking:** Know who the global QA tester is and seamlessly assign issues to them based on configuration.
- **Update Status:** Transition issues through your Jira workflow (e.g., to "Ready for QA"). - **Update Status:** Transition issues through your Jira workflow (e.g., to "Ready for QA").
- **Search Jira (JQL):** Run advanced queries against you Jira using standard JQL syntax. - **Search Jira (JQL):** Run advanced queries against you Jira using standard JQL syntax.
- **Issue Comments:** Read the conversation history on a ticket or post a new comment. - **Issue Comments:** Read the conversation history on a ticket or post a new comment.
...@@ -68,13 +69,14 @@ Edit your `claude_desktop_config.json` file to include the server. Replace the p ...@@ -68,13 +69,14 @@ Edit your `claude_desktop_config.json` file to include the server. Replace the p
"JIRA_SERVER": "https://your-jira-domain.com", "JIRA_SERVER": "https://your-jira-domain.com",
"JIRA_USERNAME": "your_email_or_username", "JIRA_USERNAME": "your_email_or_username",
"JIRA_PASSWORD": "your_api_token_or_password", "JIRA_PASSWORD": "your_api_token_or_password",
"JIRA_DEFAULT_PROJECT": "PROJ" "JIRA_DEFAULT_PROJECT": "PROJ",
"JIRA_QA_TESTER": "tester_username"
} }
} }
} }
} }
``` ```
*(Note: You can remove `JIRA_DEFAULT_PROJECT` if you don't want a default active project).* *(Note: You can remove `JIRA_DEFAULT_PROJECT` or `JIRA_QA_TESTER` if you don't need them).*
### 2. Cursor Configuration ### 2. Cursor Configuration
1. Open Cursor Settings -> Features -> **MCP Servers** 1. Open Cursor Settings -> Features -> **MCP Servers**
...@@ -143,6 +145,10 @@ You can specify absolutely any Issue Type that is valid on your Jira server when ...@@ -143,6 +145,10 @@ You can specify absolutely any Issue Type that is valid on your Jira server when
### 👤 Modifying Assignments ### 👤 Modifying Assignments
> *"Assign the ticket PCM-228 to me."* > *"Assign the ticket PCM-228 to me."*
> >
> *"Assign PCM-155 to the QA tester."*
>
> *"Who is the designated tester?"*
>
> *"Create a new task for 'Update API Documentation' in PCM, and assign it to me right away."* > *"Create a new task for 'Update API Documentation' in PCM, and assign it to me right away."*
### 🔄 Updating Statuses ### 🔄 Updating Statuses
......
import os
from jira import JIRA
JIRA_SERVER = os.environ.get("JIRA_SERVER", "http://103.41.111.60:8085")
JIRA_USERNAME = os.environ.get("JIRA_USERNAME", "shahidul")
JIRA_PASSWORD = os.environ.get("JIRA_PASSWORD", "Shahidul@Jira#2024")
jira = JIRA(server=JIRA_SERVER, basic_auth=(JIRA_USERNAME, JIRA_PASSWORD))
try:
# Find samia's username by searching a ticket we know she is assigned to (e.g. PCM-216 or PCM-180)
issue = jira.issue("PCM-180")
samia_username = issue.fields.assignee.name
print("Samia Username:", samia_username)
# Assign PCM-155
print("Assigning PCM-155 to", samia_username)
jira.assign_issue("PCM-155", samia_username)
# Find transition ID for "QA Assigned" or "Ready for QA"
issue155 = jira.issue("PCM-155")
transitions = jira.transitions(issue155)
qa_transition_id = None
for t in transitions:
if "qa" in t['name'].lower():
qa_transition_id = t['id']
print("Found transition:", t['name'], "ID:", t['id'])
break
if qa_transition_id:
jira.transition_issue("PCM-155", qa_transition_id)
print("Transitioned successfully.")
else:
print("Could not find QA transition in:", [t['name'] for t in transitions])
print("Success!")
except Exception as e:
print(f"Error: {e}")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment