Skip to main content
Glama
ilidaniys

Jira MCP Server

by ilidaniys
README.md
# Jira MCP Server

MCP (Model Context Protocol) server for Jira integration. Allows Claude Code (or any MCP client) to interact with your Jira tasks.

## Features

- ✅ **Get your tasks** - Fetch tasks assigned to you, filtered by project and status
- ✅ **Get task details** - Get detailed information about specific tasks
- ✅ **Create tasks** - Create new Jira tasks with description and issue type

## Prerequisites

- Node.js 18+ 
- Jira account with API access
- Jira API token

## Setup

### 1. Clone and Install

```bash
git clone <your-repo-url>
cd jira-mcp-server
npm install
```

### 2. Get Jira API Token

1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
2. Click "Create API token"
3. Give it a name (e.g., "MCP Server")
4. Copy the token (you won't see it again!)

### 3. Get Your Account ID

```bash
curl -u your-email@example.com:your-api-token \
  https://cryptobplatform.atlassian.net/rest/api/3/myself | jq .accountId
```

Or open in browser (after logging in):
https://cryptobplatform.atlassian.net/rest/api/3/myself

### 4. Configure Environment Variables

Create `.env` file (or configure in Claude Code):

```bash
cp .env.example .env
# Edit .env with your credentials
```

## Usage with Claude Code

### Configuration

Add to your Claude Code config (usually `~/.config/claude/config.json` or similar):

```json
{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["/absolute/path/to/jira-mcp-server/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://cryptobplatform.atlassian.net",
        "JIRA_EMAIL": "andreu.slynchyk@gmail.com",
        "JIRA_API_TOKEN": "your-api-token-here",
        "JIRA_ASSIGNEE_ACCOUNT_ID": "6148ce85071141006ab17eb7"
      }
    }
  }
}
```

### Example Prompts for Claude Code

Once configured, you can ask Claude Code:

```
"Show me my current tasks in ART project"
"Get details about task ART-114"
"Create a new task in ART: Fix login bug"
"What tasks are in progress?"
```

## Available Tools

### 1. `get_my_tasks`

Get your Jira tasks filtered by project and status.

**Parameters:**
- `projectKey` (string, optional) - Project key (default: "ART")
- `status` (string, optional) - Task status (default: "In Progress")

**Example:**
```javascript
{
  "projectKey": "ART",
  "status": "In Progress"
}
```

### 2. `get_task_details`

Get detailed information about a specific task.

**Parameters:**
- `issueKey` (string, required) - Task key (e.g., "ART-114")

**Example:**
```javascript
{
  "issueKey": "ART-114"
}
```

### 3. `create_task`

Create a new Jira task.

**Parameters:**
- `projectKey` (string, required) - Project key
- `summary` (string, required) - Task title
- `description` (string, optional) - Task description
- `issueType` (string, optional) - Issue type: "Задача", "Баг", "История" (default: "Задача")

**Example:**
```javascript
{
  "projectKey": "ART",
  "summary": "Fix authentication issue",
  "description": "Users cannot login with OAuth",
  "issueType": "Баг"
}
```

## Testing Locally

You can test the server directly:

```bash
npm start
```

Then send a JSON-RPC request via stdin:

```bash
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node index.js
```

## Troubleshooting

### Authentication Error

Make sure your API token is correct and your email matches your Jira account.

### "Task not found" Error

Check that:
1. The task key is correct (e.g., "ART-114" not "art-114")
2. You have permission to view the task
3. The project key is correct

### Environment Variables Not Loading

When using with Claude Code, make sure to set environment variables in the `mcpServers` config, not in a `.env` file.

## Project Structure

```
jira-mcp-server/
├── index.js           # Main MCP server implementation
├── package.json       # Dependencies and scripts
├── .env.example       # Example environment variables
└── README.md         # This file
```

## Security Notes

⚠️ **Never commit your API token to git!**

Add to `.gitignore`:
```
.env
node_modules/
```

## License

MIT

## Author

andreu slynchyk (andreu.slynchyk@gmail.com)