Jira MCP Server
Jira MCP Server 🚀
Custom MCP server for Agrobank's self-hosted Jira (itjira.agrobank.uz)
Setup
Option A — Run with Node
1. Install dependencies
npm install2. Configure credentials
Edit the .env file:
JIRA_BASE_URL=https://itjira.agrobank.uz
JIRA_EMAIL=your.email@agrobank.uz
JIRA_PASSWORD=your_password3a. Hook up Claude Desktop
Open Claude Desktop config:
Mac:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/absolute/path/to/mcp-servers/index.js"],
"env": {
"JIRA_BASE_URL": "https://itjira.agrobank.uz",
"JIRA_EMAIL": "your.email@agrobank.uz",
"JIRA_PASSWORD": "your_password"
}
}
}
}Restart Claude Desktop and you're good.
3b. Hook up Claude Code
One-liner via the CLI (user scope, available across all projects):
claude mcp add jira \
-s user \
-e JIRA_BASE_URL=https://itjira.agrobank.uz \
-e JIRA_EMAIL=your.email@agrobank.uz \
-e JIRA_PASSWORD=your_password \
-- node /absolute/path/to/mcp-servers/index.jsOr drop it in ~/.claude.json manually:
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/absolute/path/to/mcp-servers/index.js"],
"env": {
"JIRA_BASE_URL": "https://itjira.agrobank.uz",
"JIRA_EMAIL": "your.email@agrobank.uz",
"JIRA_PASSWORD": "your_password"
}
}
}
}Check it loaded:
claude mcp listOption B — Run with Docker
1. Build the image
docker build -t jira-mcp:latest .Or with compose:
docker compose build2a. Wire up Claude Desktop
MCP talks over stdio, so Claude Desktop spawns the container per session. Use -i --rm and pass env vars through:
{
"mcpServers": {
"jira": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "JIRA_BASE_URL",
"-e", "JIRA_EMAIL",
"-e", "JIRA_PASSWORD",
"jira-mcp:latest"
],
"env": {
"JIRA_BASE_URL": "https://itjira.agrobank.uz",
"JIRA_EMAIL": "your.email@agrobank.uz",
"JIRA_PASSWORD": "your_password"
}
}
}
}Why this shape:
-ikeeps stdin open (MCP needs JSON-RPC over stdio)--rmcleans up when Claude Desktop closes the pipe-e VAR(no=value) inherits from theenvblock — secrets never get baked into the imageNo
-t(no TTY) and no port mapping — pure stdio, no listener
Restart Claude Desktop.
2b. Wire up Claude Code
claude mcp add jira \
-s user \
-e JIRA_BASE_URL=https://itjira.agrobank.uz \
-e JIRA_EMAIL=your.email@agrobank.uz \
-e JIRA_PASSWORD=your_password \
-- docker run -i --rm \
-e JIRA_BASE_URL -e JIRA_EMAIL -e JIRA_PASSWORD \
jira-mcp:latestVerify:
claude mcp listAvailable Tools
Tool | Description |
| Get all issues assigned to you (filter by status) |
| Search by keyword or JQL |
| Get full details of an issue (e.g. PROJ-123) |
| Create a new issue or subtask (pass |
| Add a comment to an issue |
| See available status transitions |
| Change issue status (To Do → In Progress → Done) |
| List all projects you have access to |
| Update priority, summary, or description |
| Get the currently authenticated Jira user |
Example prompts in Claude
"Show me my current Jira tasks"
"What issues do I have In Progress?"
"Get details of BANK-456"
"Create a subtask under MOBCORE-565 titled 'Fix login bug'"
"Add a comment to BANK-123: done with testing"
"Move BANK-789 to Done"
"Bump priority of BANK-100 to High"
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/abdoosalomov/jira-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server