---
title: "Development"
description: "Contribute to Jira MCP development"
---
<Info>
**Prerequisites**: - Python 3.11 or higher - UV package manager - jira-cli
installed and configured
</Info>
## Getting started
Clone the repository and set up your development environment:
```bash
git clone https://github.com/xcollantes/jira-mcp.git
cd jira-mcp
uv sync
```
## Pre-commit hooks
This project uses [pre-commit](https://pre-commit.com/) to run [ruff](https://docs.astral.sh/ruff/) linting and formatting checks, and [pytest](https://docs.pytest.org/) tests before each commit.
<Steps>
<Step title="Install pre-commit hooks">
```bash
uv sync
uv run pre-commit install
```
</Step>
<Step title="Run checks manually">
Once installed, ruff and pytest will automatically run when you commit. To run checks manually on all files:
```bash
uv run pre-commit run --all-files
```
</Step>
</Steps>
## Logging
<Warning>
Do not use `print` statements for logging. Use the logging module instead.
Writing to stdout will corrupt the JSON-RPC messages and break your server.
</Warning>
## Docstrings and tool decorators
MCP tools decorator parameters are especially important as this is the human-readable text that the LLM has context of. This will be treated as part of the prompt when fed to the LLM and this will decide when to use each tool.
## Troubleshooting
<AccordionGroup>
<Accordion title="Edit the jira-cli config file">
On macOS:
```text
/Users/<your-username>/.config/.jira/.config.yml
```
</Accordion>
<Accordion title="404 error when using jira init">
If you get a 404 error when using `jira init`, you may need to edit the jira-cli config file to point to the correct Jira instance.
There are only 3 possible values for the auth type, so try each one:
- `basic`
- `password`
- `bearer`
</Accordion>
</AccordionGroup>