Skip to main content
Glama
choplin
by choplin
README.md
# Jira CLI MCP Server

[![CI](https://github.com/choplin/jira-cli-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/choplin/jira-cli-mcp/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![MCP](https://img.shields.io/badge/MCP-1.0-green.svg)](https://modelcontextprotocol.io)

MCP (Model Context Protocol) server that wraps the `jira-cli` command-line tool to enable AI assistants to interact
with Jira.

## Why jira-cli-mcp?

If you're looking for a Jira MCP server, here's what makes jira-cli-mcp unique:

- **🚀 Leverage Existing Tools** - Works seamlessly with your existing jira-cli setup and authentication
- **🔒 Security-First** - No API tokens in config files; authentication handled by jira-cli  
- **ðŸŠķ Lightweight** - Just a Bun process, no Docker or containers required

### When to use mcp-atlassian instead?

Choose [mcp-atlassian](https://github.com/sooperset/mcp-atlassian) if you:

- Need **Confluence** support (we're Jira-only)
- Prefer **Docker** deployment
- Want a **self-contained** solution without CLI dependencies
- Need **direct API** integration rather than CLI wrapping

## Features

- **create_ticket** - Create new Jira tickets with customizable fields
- **list_tickets** - Search and list Jira tickets using JQL queries
- **get_ticket** - Get detailed ticket information including comments
- **update_ticket_description** - Update ticket descriptions with rich text formatting
- **add_comment** - Add comments to tickets with Markdown support
- **assign_to_me** - Assign tickets to the current user
- **move_ticket** - Move tickets between different statuses
- **open_ticket_in_browser** - Open a Jira ticket in the default web browser

## Quick Start

1. Install and configure [jira-cli](https://github.com/ankitpokhrel/jira-cli) ([Installation guide](https://github.com/ankitpokhrel/jira-cli/wiki/Installation)):

   ```bash
   # Install jira-cli (macOS)
   brew install ankitpokhrel/jira-cli/jira-cli
   
   # Configure jira-cli with your Jira instance
   jira init
   ```

2. Install jira-cli-mcp:

   ```bash
   brew tap choplin/jira-cli-mcp
   brew install jira-cli-mcp
   ```

3. Add to Claude Desktop config (see [Setup](#setup-for-claude-desktop) below)

## Prerequisites

- [jira-cli](https://github.com/ankitpokhrel/jira-cli) installed and authenticated
- [Bun](https://bun.sh) runtime (only needed for development or if installing from source)

## Installation

### Option 1: Install via Homebrew (macOS/Linux)

```bash
brew tap choplin/jira-cli-mcp
brew install jira-cli-mcp
```

### Option 2: Install via npm

```bash
# Install globally with npm
npm install -g @choplin/jira-cli-mcp

# Or with Bun
bun install -g @choplin/jira-cli-mcp
```

### Option 3: Download Binary

Download the pre-compiled binary for your platform from the [releases page](https://github.com/choplin/jira-cli-mcp/releases):

- macOS (Apple Silicon): `jira-cli-mcp-darwin-arm64.tar.gz`
- macOS (Intel): `jira-cli-mcp-darwin-x64.tar.gz`
- Linux (x64): `jira-cli-mcp-linux-x64.tar.gz`
- Linux (ARM64): `jira-cli-mcp-linux-arm64.tar.gz`

```bash
# Example for macOS (Apple Silicon)
tar -xzf jira-cli-mcp-darwin-arm64.tar.gz
chmod +x jira-cli-mcp-darwin-arm64
sudo mv jira-cli-mcp-darwin-arm64 /usr/local/bin/jira-cli-mcp
```

### Option 4: Build from Source

```bash
git clone https://github.com/choplin/jira-cli-mcp.git
cd jira-cli-mcp
bun install
bun run build:prod
```

## Setup for Claude Desktop

### Option 1: Using Homebrew Installation (Recommended)

If you installed via Homebrew (as shown in Quick Start), add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "jira-cli": {
      "command": "jira-cli-mcp"
    }
  }
}
```

### Option 2: Using npm Package

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "jira-cli": {
      "command": "npx",
      "args": ["@choplin/jira-cli-mcp"]
    }
  }
}
```

Or if installed globally:

```json
{
  "mcpServers": {
    "jira-cli": {
      "command": "jira-cli-mcp"
    }
  }
}
```

### Option 3: Using Pre-compiled Binary (No Dependencies)

1. Download the binary for your platform from [releases](https://github.com/choplin/jira-cli-mcp/releases)
2. Extract and move to your PATH:

```bash
tar -xzf jira-cli-mcp-darwin-arm64.tar.gz
sudo mv jira-cli-mcp-darwin-arm64 /usr/local/bin/jira-cli-mcp
```

1. Add to config:

```json
{
  "mcpServers": {
    "jira-cli": {
      "command": "jira-cli-mcp"
    }
  }
}
```

### Option 4: Build from Source

1. Clone and run directly:

```bash
git clone https://github.com/choplin/jira-cli-mcp.git
cd jira-cli-mcp
bun install
```

1. Add to config:

```json
{
  "mcpServers": {
    "jira-cli": {
      "command": "bun",
      "args": ["run", "/path/to/jira-cli-mcp/src/index.ts"]
    }
  }
}
```

### Configuration Location

The config file is typically located at:

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

### Verification

After setup, restart Claude Desktop and check if the MCP server is loaded by asking Claude about available Jira tools.

## Setup for Other AI Assistants

### Claude Code

Claude Code has built-in support for MCP servers. To use jira-cli-mcp in your project:

1. First install jira-cli-mcp using one of the methods in the [Installation](#installation) section

2. Create a `.claude/mcp.json` file in your project root:

```json
{
  "servers": {
    "jira-cli": {
      "command": "jira-cli-mcp"
    }
  }
}
```

1. Restart Claude Code and the MCP server will be automatically loaded

You can then use Jira commands directly in your conversation, such as:

- "List my open Jira tickets"
- "Show me details for PROJ-123"
- "Add a comment to PROJ-456"

### GitHub Copilot (VS Code)

GitHub Copilot supports MCP servers in Visual Studio Code (version 1.99+):

1. First install jira-cli-mcp using one of the methods in the [Installation](#installation) section

2. Create `.vscode/mcp.json` in your repository:

```json
{
  "servers": {
    "jira-cli": {
      "command": "jira-cli-mcp"
    }
  }
}
```

1. Open the `.vscode/mcp.json` file in VS Code and click the **[Start]** button to activate the server

2. In Copilot Chat:
   - Open Copilot Chat panel
   - Select "Agent" from the popup menu
   - Click the tools icon to see available MCP servers

**Note**: MCP support in GitHub Copilot is currently in public preview.

## Development

### Running Tests

```bash
# Run unit tests only
bun test

# Run all tests including integration tests
bun run test:integration

# Run integration tests with a specific test ticket
JIRA_CLI_MCP_TEST_TICKET=PROJ-123 bun run test:integration
```

### Environment Variables

- `JIRA_CLI_PATH` - Custom path to jira-cli executable (default: "jira")

#### Development Environment Variables

- `JIRA_CLI_MCP_TEST_TICKET` - Ticket key for integration tests (required for non-listing integration tests)
- `INTEGRATION_TEST=true` - Enable integration tests

### Type Checking

```bash
bun run typecheck
```

### Linting and Formatting

```bash
bun run lint
bun run format
```

## Architecture

- `src/tools/` - MCP tool implementations
- `src/utils/` - Shared utilities and types
- `tests/` - Unit tests with mocked jira-cli
- `tests/integration/` - Integration tests with real jira-cli

## Notes

- The server uses Atlassian Document Format (ADF) for rich text handling
- Markdown input is automatically converted to ADF by jira-cli
- All integration tests require proper jira-cli authentication

## Troubleshooting

### Common Issues

1. **"jira-cli not found" error**
   - Ensure jira-cli is installed: `which jira`
   - If using a custom path, set `JIRA_CLI_PATH` environment variable

2. **Authentication errors**
   - Run `jira me` to verify authentication
   - Re-authenticate with `jira init` if needed

3. **MCP server not showing in Claude Desktop**
   - Verify the config file path is correct
   - Ensure the path in config uses absolute paths, not relative
   - Restart Claude Desktop after config changes

4. **Permission errors on macOS**
   - Grant terminal/Claude Desktop full disk access in System Preferences
   - Ensure jira-cli has necessary permissions

### Debug Mode

To see detailed logs, you can run the server manually:

```bash
cd /path/to/jira-cli-mcp
bun run src/index.ts
```

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.