# Jira Context MCP Server
A powerful Model Context Protocol (MCP) server that integrates Jira with Cursor IDE, enabling AI-powered issue management, sprint tracking, and library vulnerability analysis.
## π Features
- **Jira Integration**: Fetch issue details, manage sprints, track progress
- **Sprint Management**: View active sprints, generate reports, analyze backlog
- **Library Vulnerability Analysis**: Check Maven/NPM packages for vulnerabilities and upgrade recommendations
- **Database Integration**: Query MySQL databases directly from Cursor
- **Smart URL Parser**: Paste any Jira board/sprint URL and get instant insights
## π Prerequisites
- **Node.js** 20.17.0 or higher
- **Python 3** (for Jira API bridge)
- **Python packages**: `requests`, `pyyaml`, `urllib3`
```bash
pip3 install requests pyyaml urllib3
```
- A Jira account with API access
- Jira API token ([Generate here](https://id.atlassian.com/manage-profile/security/api-tokens))
## βοΈ Installation
1. **Clone the repository**:
```bash
git clone https://github.com/Darshancisco/Appd_jira_context_mcp.git
cd Appd_jira_context_mcp
```
2. **Install dependencies**:
```bash
npm install
```
3. **Install Python dependencies**:
```bash
pip3 install requests pyyaml urllib3
```
4. **Create `.env` file**:
```bash
cp .env.example .env
```
5. **Configure your `.env` file**:
```env
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_USERNAME=your-email@example.com
JIRA_API_TOKEN=your-api-token-here
HTTP_PORT=3000
```
6. **Build the project**:
```bash
npm run build
```
## π Running the Server
Start the MCP server:
```bash
npm start
```
The server will start on `http://localhost:3000/sse`
## π Connect to Cursor IDE
### Method 1: Direct Configuration in `mcp.json` (Recommended)
1. **Locate your Cursor MCP configuration file**:
- **macOS**: `~/.cursor/mcp.json`
- **Windows**: `%APPDATA%\.cursor\mcp.json`
- **Linux**: `~/.cursor/mcp.json`
2. **Add the MCP server configuration**:
Edit the `mcp.json` file and add the following configuration:
```json
{
"mcpServers": {
"jira-resolution": {
"command": "node",
"args": ["/absolute/path/to/Appd_jira_context_mcp/dist/index.js"],
"cwd": "/absolute/path/to/Appd_jira_context_mcp",
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_USERNAME": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token-here",
"DB_TYPE": "mysql",
"DB_HOST": "localhost",
"DB_PORT": "3306",
"DB_USER": "root",
"DB_PASSWORD": "your-database-password",
"DB_NAME": "",
"DB_SSL": "false"
}
}
}
}
```
3. **Replace the placeholders**:
- `"/absolute/path/to/Appd_jira_context_mcp"` β Full path to where you cloned the repo
- `"your-domain.atlassian.net"` β Your Jira instance URL
- `"your-email@example.com"` β Your Jira username/email
- `"your-api-token-here"` β Your Jira API token
- `"your-database-password"` β Your MySQL password (if using database features)
4. **Save the file and restart Cursor IDE**
5. **Verify connection**:
- Open Cursor IDE
- The MCP server should automatically connect
- You can verify by typing commands in the chat
### Method 2: Using Cursor Settings UI
1. Open Cursor IDE
2. Go to **Settings** β **Features** β **Model Context Protocol**
3. Add a new MCP server with:
- **Name**: Jira Context MCP
- **URL**: `http://localhost:3000/sse` (requires server to be running separately)
4. Click **Connect**
### Method 3: Using Command Palette
1. Open Command Palette (`Cmd+Shift+P` / `Ctrl+Shift+P`)
2. Type **"Connect to MCP Server"**
3. Enter: `http://localhost:3000/sse` (requires server to be running separately)
> **Note**: Method 1 (mcp.json) is recommended as it starts the server automatically and doesn't require running `npm start` separately.
## π οΈ Available Tools
Once connected, you can use these tools in Cursor:
### Jira Issue Management
- `get_issue` - Get detailed information about a Jira issue
- `get_assigned_issues` - Get issues assigned to you
- `get_issues_by_type` - Filter issues by type (Bug, Story, Epic, etc.)
- `get_projects` - List all available Jira projects
- `get_issue_types` - List all issue types
### Sprint & Board Management
- `analyze_jira_url` - Parse any Jira URL (board/sprint/issue)
- `get_boards` - List all agile boards
- `get_sprints` - Get sprints for a board
- `get_sprint_issues` - Get all issues in a sprint
- `get_backlog` - Get backlog issues
- `get_sprint_report` - Generate comprehensive sprint report
### Library Vulnerability Tools
- `check_maven_library` - Check Maven library for vulnerabilities
- `check_npm_library` - Check NPM package for vulnerabilities
- `analyze_dependencies` - Analyze project dependencies
- `recommend_upgrade` - Get smart upgrade recommendations
- `get_github_release_notes` - Fetch release notes for library upgrades
- `find_library_usage` - Find where a library is used in codebase
### Database Tools
- `list_databases` - List all MySQL databases
- `list_db_tables` - List tables in a database
- `get_table_schema` - Get table structure
- `query_database` - Execute SQL queries
- `search_table` - Search across table columns
## π‘ Example Usage
### Analyze Your Sprint Board
```
Analyze my sprint board: https://jira.corp.appdynamics.com/secure/RapidBoard.jspa?rapidView=2823
```
### Check Library Vulnerability
```
Check if org.springframework:spring-core version 5.3.0 has any vulnerabilities
```
### Get Assigned Issues
```
Show me all issues assigned to me in project ABC
```
### Sprint Report
```
Generate sprint report for board 2823
```
## π Project Structure
```
.
βββ src/
β βββ index.ts # Application entry point
β βββ server.ts # MCP server implementation
β βββ cli.ts # CLI interface
β βββ services/ # Core services
β β βββ jira.ts # Jira API integration
β β βββ libraryManager.ts # Library vulnerability analysis
β β βββ DatabaseService.ts # MySQL integration
β β βββ ...
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions
βββ dist/ # Compiled JavaScript (generated)
βββ package.json # Dependencies
βββ tsconfig.json # TypeScript config
βββ .env # Environment variables (create this)
```
## π§ Development
### Run in development mode:
```bash
npm run dev
```
### Build:
```bash
npm run build
```
### Type checking:
```bash
npm run type-check
```
## π Troubleshooting
### Server won't start
- Ensure Node.js version is 20.17.0 or higher: `node --version`
- Ensure Python 3 is installed: `python3 --version`
- Install Python packages: `pip3 install requests pyyaml urllib3`
- Check if port 3000 is available
- Verify `.env` file is configured correctly (if using Method 2/3)
- Run `npm run build` to ensure the `dist/` folder exists
- Ensure `jira_python_bridge.py` exists in the project root
### Can't connect in Cursor
- If using **mcp.json**: Make sure the paths are absolute and correct
- If using **HTTP mode**: Make sure the server is running (`npm start`)
- Verify the URL is `http://localhost:3000/sse`
- Check Cursor's MCP connection settings
- Restart Cursor IDE after modifying `mcp.json`
### Jira API errors
- Verify your API token is valid
- Ensure `JIRA_BASE_URL` matches your Jira instance
- Check your Jira account has necessary permissions
- Make sure there are no extra spaces in your credentials
### MCP server not showing tools
- Run `npm run build` to compile TypeScript
- Check console for error messages
- Verify all environment variables are set correctly
## π Security Note
**Important**: The `mcp.json` file contains sensitive credentials (API tokens, database passwords).
- Keep your `mcp.json` file secure and never commit it to version control
- The `mcp.json` file is stored locally on your machine
- Only you have access to these credentials
- Generate API tokens with minimum required permissions
## π License
MIT License
## π€ Author
**Darshan Hanumanthappa**
- Email: darshan.hanumanthappa@gmail.com
- GitHub: [@Darshancisco](https://github.com/Darshancisco)
## π Acknowledgments
Built for AppDynamics engineering team to streamline Jira workflow integration with Cursor IDE.