mcp_jira_server

Jaroslav-Loskot/mcp_jira_server

3.2

If you are the rightful owner of mcp_jira_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

MCP Jira Server is a lightweight FastAPI-based server designed to connect to Jira accounts using a Model Context Protocol (MCP) interface.

🧠 MCP Jira Server

A powerful, modular, and extendable FastAPI-based server for interacting with Jira using a Model Context Protocol (MCP). It enables intelligent querying, retrieval, and modification of Jira tickets using structured or natural language inputs. Built with LLM integration in mind (Claude via Amazon Bedrock).


πŸš€ Features

  • πŸ” Query Jira issues with structured filters or natural language.
  • πŸ“Ÿ Get full ticket details including comments, status, and assignee.
  • πŸ—οΈ Fetch project-level metadata: statuses, priorities, issue types.
  • πŸ“Š Retrieve and update "Project Charter" custom fields via LLM-assisted interpretation.
  • βš™οΈ Automatically map user instructions to Jira field schema and values.
  • πŸ“¦ Designed to run in Docker and be consumed as an API endpoint.

πŸ“ Project Structure

β”œβ”€β”€ main.py                      # Entry point for FastAPI application
β”œβ”€β”€ services/                   # Business logic and service layer
β”‚   β”œβ”€β”€ field_mapping.py        # Mapping from human field names to Jira customfield IDs
β”‚   β”œβ”€β”€ field_formatting.py     # Field schema-aware value formatting
β”‚   β”œβ”€β”€ jira_metadata_service.py
β”‚   β”œβ”€β”€ project_charter_service.py
β”‚   └── get_custom_fields.py
β”œβ”€β”€ utils/                      # Bedrock + embeddings helpers
β”‚   β”œβ”€β”€ bedrock_wrapper.py
β”‚   β”œβ”€β”€ generate_field_embeddings.py
β”‚   └── field_embeddings.json
β”œβ”€β”€ test/                       # Integration test scripts + REST Client requests
β”œβ”€β”€ .env                        # Jira and AWS credentials
β”œβ”€β”€ Dockerfile                  # Container image setup
β”œβ”€β”€ docker-compose.yml          # Local dev environment
└── requirements.txt

βš™οΈ Setup

1. Clone and configure

git clone https://github.com/your-org/mcp-jira-server.git
cd mcp-jira-server
cp .env.example .env

Populate .env with:

JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_EMAIL=your@email.com
JIRA_API_TOKEN=your-jira-api-token

AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=...
BEDROCK_MODEL_ID=eu.anthropic.claude-3-7-sonnet-20250219-v1:0
BEDROCK_INFERENCE_CONFIG_ARN=...

2. Run locally with Docker

docker-compose up --build

Once started:


πŸ€– Supported MCP Intents

get_jira_issues

Retrieve issues with flexible filtering:

{
  "user": "jaroslav",
  "intent": "get_jira_issues",
  "parameters": {
    "project": ["AFS"],
    "priority": ["High"],
    "created_after": "-1w",
    "only_count": false
  }
}

get_ticket_details

Get detailed ticket info:

{
  "user": "jaroslav",
  "intent": "get_ticket_details",
  "parameters": {
    "ticket": "AFS-123"
  }
}

get_jira_projects

List all accessible projects:

{
  "user": "jaroslav",
  "intent": "get_jira_projects",
  "parameters": {}
}

get_project_metadata

Fetch metadata (statuses, priorities, issue types):

{
  "user": "jaroslav",
  "intent": "get_project_metadata",
  "parameters": {
    "project": "AFS"
  }
}

get_project_charter

Summarize key custom fields from a Jira ticket:

{
  "user": "jaroslav",
  "intent": "get_project_charter",
  "parameters": {
    "ticket": "DELPROJ-2443"
  }
}

update_project_charter

Update a Jira ticket’s custom field using natural language:

{
  "user": "jaroslav",
  "intent": "update_project_charter",
  "parameters": {
    "ticket": "DELTP-7867",
    "update_instruction": "Remove the project start date"
  }
}

πŸ§ͺ Testing

Use the REST Client VS Code extension and .rest files from /test/:

Example:

POST http://localhost:8000/jira/query
Content-Type: application/json

{
  "user": "jaroslav",
  "intent": "get_ticket_details",
  "parameters": {
    "ticket": "AFS-123"
  }
}

🧠 LLM + Embedding

  • Claude is used via Amazon Bedrock for interpreting update instructions.
  • Titan embeddings are used for semantic search and field similarity.
  • Run python utils/generate_field_embeddings.py to regenerate field_embeddings.json.

πŸ“ƒ License

MIT (or internal enterprise use only).