{"_id":"@rafael-arreola/jira-rs","_rev":"29-42185feaffe63dec0a5295932f711465","name":"@rafael-arreola/jira-rs","dist-tags":{"latest":"0.3.11"},"versions":{"0.3.9":{"name":"@rafael-arreola/jira-rs","version":"0.3.9","author":{"name":"Carlos Rafael Arreola Hernández"},"license":"MIT","_id":"@rafael-arreola/jira-rs@0.3.9","maintainers":[{"name":"rafael-arreola","email":"rafael-arreola@outlook.com"}],"homepage":"https://github.com/rafael-arreola/mcp-jira-rs#readme","bugs":{"url":"https://github.com/rafael-arreola/mcp-jira-rs/issues"},"os":["darwin","linux","win32"],"bin":{"jira-rs":"bin.js"},"cpu":["x64","arm64"],"dist":{"shasum":"841406f4654b706a4af58d3f760587342cfa0949","tarball":"https://registry.npmjs.org/@rafael-arreola/jira-rs/-/jira-rs-0.3.9.tgz","fileCount":4,"integrity":"sha512-5aBEw9ht8c76QS1TW2b3HXOCklHnnSoZisvlxVCuyWOYMrSa2EHD9ipUfLFU5HTvUZCHx5RBYjku3CwBWlzVeA==","signatures":[{"sig":"MEUCIQCjaWnndTRWzNwPN3XQXFZBdZ2HzIE0sN3jBnzEibHS8wIgRMMNX0t3xjT3pNhruwVFDB0WKbpQt1eOju7RpSGuVdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11302},"gitHead":"52a7faa911bc7d95fa1eeece5b102aee88c96bf8","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"rafael-arreola","email":"rafael-arreola@outlook.com"},"repository":{"url":"git+https://github.com/rafael-arreola/mcp-jira-rs.git","type":"git"},"_npmVersion":"11.6.2","description":"Jira MCP Server CLI wrapper","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/jira-rs_0.3.9_1769711965903_0.8384256375363666","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"@rafael-arreola/jira-rs","version":"0.3.10","author":{"name":"Carlos Rafael Arreola Hernández"},"license":"MIT","_id":"@rafael-arreola/jira-rs@0.3.10","maintainers":[{"name":"rafael-arreola","email":"rafael-arreola@outlook.com"}],"homepage":"https://github.com/rafael-arreola/mcp-jira-rs#readme","bugs":{"url":"https://github.com/rafael-arreola/mcp-jira-rs/issues"},"os":["darwin","linux","win32"],"bin":{"jira-rs":"bin.js"},"cpu":["x64","arm64"],"dist":{"shasum":"1a4fbcedf9aee77bfb4f7536cc7ed44ecad846e1","tarball":"https://registry.npmjs.org/@rafael-arreola/jira-rs/-/jira-rs-0.3.10.tgz","fileCount":4,"integrity":"sha512-Im890Lcg6LD5q1mbVWEqofkJIjBKbUDK8Q6FwHBJTHD6aluWvwKUaZ52LNRB+l7VobWYpegYKhZXOKvxeHKjjg==","signatures":[{"sig":"MEQCIC99AjzvDjqaMBOn7fx1ylzYyUxtJjjxhWXF/2DeJVL0AiA5A7Rat1Bme3igDeE8YofahJUsGZmSoWfrk9he0WEWQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11303},"gitHead":"0a121b3b8edd1100c2ec0003f85c7c27b643a2dd","scripts":{"postinstall":"node install.js"},"_npmUser":{"name":"rafael-arreola","email":"rafael-arreola@outlook.com"},"repository":{"url":"git+https://github.com/rafael-arreola/mcp-jira-rs.git","type":"git"},"_npmVersion":"11.6.2","description":"Jira MCP Server CLI wrapper","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/jira-rs_0.3.10_1769798641765_0.8888101445946066","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"@rafael-arreola/jira-rs","version":"0.3.11","description":"Jira MCP Server CLI wrapper","bin":{"jira-rs":"bin.js"},"scripts":{"postinstall":"node install.js"},"repository":{"type":"git","url":"git+https://github.com/rafael-arreola/mcp-jira-rs.git"},"author":{"name":"Carlos Rafael Arreola Hernández"},"license":"MIT","os":["darwin","linux","win32"],"cpu":["x64","arm64"],"gitHead":"de7b23c010da0c331c1cc337425e40f5e0ba1db4","_id":"@rafael-arreola/jira-rs@0.3.11","bugs":{"url":"https://github.com/rafael-arreola/mcp-jira-rs/issues"},"homepage":"https://github.com/rafael-arreola/mcp-jira-rs#readme","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-ENzs8x5Dbsn5ZzaSZFEZ8um8tR4AdY4HhOk2/YB7r0Jah04NC19VroxiXX4qIkdH+LDQ+uOSQ2Evw+JVzdCA/w==","shasum":"3e89370327726e2307faa2f6c8017ef4f2342861","tarball":"https://registry.npmjs.org/@rafael-arreola/jira-rs/-/jira-rs-0.3.11.tgz","fileCount":4,"unpackedSize":12200,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDYdtJnWlqgVMH4OmymjnGHUgghRLZEXBaPitDAa5RBdAiEAhuUDoawHgeKAPpRf0YTxgvsy6lYgodP57f8t1Ejqvzc="}]},"_npmUser":{"name":"rafael-arreola","email":"rafael-arreola@outlook.com"},"directories":{},"maintainers":[{"name":"rafael-arreola","email":"rafael-arreola@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jira-rs_0.3.11_1776108475156_0.13738562943586619"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-25T09:04:39.612Z","modified":"2026-04-13T19:27:55.391Z","0.1.0":"2026-01-25T09:04:39.864Z","0.1.1":"2026-01-25T09:18:02.410Z","0.1.2":"2026-01-25T09:53:04.855Z","0.2.0":"2026-01-25T20:43:56.990Z","0.3.0":"2026-01-26T02:11:09.841Z","0.3.1":"2026-01-26T18:05:40.215Z","0.3.2":"2026-01-27T16:17:02.372Z","0.3.3":"2026-01-28T01:31:55.967Z","0.3.4":"2026-01-28T04:19:40.961Z","0.3.5":"2026-01-28T19:50:05.111Z","0.3.6":"2026-01-28T20:24:00.425Z","0.3.7":"2026-01-28T20:52:41.576Z","0.3.8":"2026-01-28T22:01:43.029Z","0.3.9":"2026-01-29T18:39:26.099Z","0.3.10":"2026-01-30T18:44:01.905Z","0.3.11":"2026-04-13T19:27:55.280Z"},"bugs":{"url":"https://github.com/rafael-arreola/mcp-jira-rs/issues"},"author":{"name":"Carlos Rafael Arreola Hernández"},"license":"MIT","homepage":"https://github.com/rafael-arreola/mcp-jira-rs#readme","repository":{"type":"git","url":"git+https://github.com/rafael-arreola/mcp-jira-rs.git"},"description":"Jira MCP Server CLI wrapper","maintainers":[{"name":"rafael-arreola","email":"rafael-arreola@outlook.com"}],"readme":"# Jira MCP Server\n\nA Model Context Protocol (MCP) server for Jira Cloud, built with Rust. This server enables AI assistants to manage issues, sprints, and boards directly through a standardized interface.\n\n## Features\n\n- 🚀 **Full Jira API Support**: Management of Projects, Issues, Sprints, Boards, and Backlog.\n- 🧠 **Smart Context & Instructions**: Automatic ADF conversion and hardcoded AI directives for zero-hallucination project metadata validation.\n- ⚡ **High Performance & Caching**: Fast native Rust implementation with thread-safe in-memory caching for Issue Types and Custom Fields.\n- 🔍 **Field Filtering**: Reduces token usage (70-90%) via smart filters (`minimal`, `basic`, `standard`, `detailed`).\n- 🌐 **Universal AI Compatibility**: Native JSON schema sanitization ensures seamless integration with Claude, OpenAI, and Gemini.\n- 🎯 **Automatic Detection**: Identifies custom fields like \"Story Points\" without manual configuration.\n\n## Installation\n\n### Prerequisites\n\n- Rust 1.80 or higher.\n- A Jira Cloud account and an API Token.\n\n### Build\n\n```bash\ngit clone https://github.com/rafael-arreola/mcp-jira-rs\ncd mcp-jira-rs\ncargo build --release\n```\n\nThe binary will be available at `target/release/jira-rs`.\n\n## Configuration\n\n### Environment Variables\n\nThe server requires the following environment variables:\n\n```bash\nJIRA_WORKSPACE=\"your-subdomain\"      # e.g., \"mycompany\" for mycompany.atlassian.net\nJIRA_USERNAME=\"your@email.com\"        # Your Atlassian account email\nJIRA_TOKEN=\"your-api-token\"           # Generated at id.atlassian.com\n```\n\n### Claude Desktop Configuration\n\nAdd this to your `claude_desktop_config.json` file:\n\n```json\n{\n  \"mcpServers\": {\n    \"jira\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@rafael-arreola/jira-rs@latest\"],\n      \"env\": {\n        \"JIRA_WORKSPACE\": \"your-subdomain\",\n        \"JIRA_USERNAME\": \"your@email.com\",\n        \"JIRA_TOKEN\": \"your-api-token\"\n      }\n    }\n  }\n}\n```\n\n## Available Tools (23)\n\n### 🎫 Issue Management\n\n| Tool                  | Description                                                           |\n| --------------------- | --------------------------------------------------------------------- |\n| `issue_create`        | Creates Stories, Bugs, Epics, Tasks, and Sub-tasks.                   |\n| `issue_get`           | Retrieves issue details with smart **Field Filtering**.               |\n| `search_issues`       | Searches issues using JQL or plain text with result limits.           |\n| `issue_edit_details`  | Updates summary, description, priority, labels, and issue type.       |\n| `issue_set_story_points`| Sets the story point estimation for an issue.                       |\n| `issue_update_status` | Transitions issues through the workflow (e.g., \"To Do\" to \"Done\").    |\n| `issue_assign`        | Assigns issues to users (supports \"me\", \"unassigned\", or Account ID). |\n| `issue_delete`        | Permanently deletes an issue.                                         |\n\n### 💬 Content and Links\n\n| Tool                   | Description                                                       |\n| ---------------------- | ----------------------------------------------------------------- |\n| `issue_add_comment`    | Adds comments (supports plain text with ADF conversion).          |\n| `issue_delete_comment` | Deletes specific comments by ID.                                  |\n| `issue_link`           | Creates semantic links between issues (Blocks, Relates to, etc.). |\n| `issue_delete_link`    | Removes existing links between issues.                            |\n| `issue_set_parent`     | Links an existing Story/Task to an Epic or removes the link.      |\n| `issue_log_work`       | Logs time worked on a task.                                       |\n\n### 🏃 Agile Operations\n\n| Tool                | Description                                                    |\n| ------------------- | -------------------------------------------------------------- |\n| `board_get_sprints` | Lists sprints for a board or project (active, future, closed). |\n| `board_get_backlog` | Retrieves all issues in a board's backlog.                     |\n| `sprint_create`     | Creates a new planned sprint.                                  |\n| `sprint_update`     | Starts, closes, or updates sprint metadata.                    |\n| `sprint_add_issues` | Moves issues to a specific sprint.                             |\n| `sprint_delete`     | Deletes a planned sprint.                                      |\n| `agile_rank_issues` | Reorders issues (Rank) in the backlog or board.                |\n\n### 🔍 Discovery\n\n| Tool                   | Description                                                                              |\n| ---------------------- | ---------------------------------------------------------------------------------------- |\n| `fields_list`          | Discovers available fields and their IDs for use in filters.                             |\n| `project_search`       | Returns a paginated list of projects visible to the user. Matches by project name or key.|\n| `project_get_metadata` | Returns available Issue Types (Story, Bug, Epic) and their specific fields for a project.|\n\n## Usage Examples\n\n### Discover project metadata before creating issues\n\nTo avoid hallucinations and ensure you are using the correct `issueType` names (e.g., \"Story\", \"Bug\") and required fields for a specific project, use `project_get_metadata` first:\n\n```json\n{\n  \"projectKey\": \"PROJ\"\n}\n```\n\n### Retrieve an issue while saving tokens\n\nTo avoid saturating the AI context, use the `filter` parameter:\n\n```json\n{\n  \"issueKey\": \"PROJ-123\",\n  \"filter\": \"basic\"\n}\n```\n\n_Available presets: `minimal`, `basic`, `standard`, `detailed`._\n\n### Create an issue with story points\n\nUse `storyPoints` for Classic (Company-managed) projects and `storyPointEstimate` for Next-Gen (Team-managed) projects.\n\n```json\n{\n  \"projectKey\": \"PROJ\",\n  \"summary\": \"Implement OAuth2 authentication\",\n  \"issueType\": \"Story\",\n  \"storyPoints\": 5,\n  \"storyPointEstimate\": 3\n}\n```\n\n### Set Story Points\n\nUse `issue_set_story_points` to update the estimation of an existing issue. The tool automatically detects if the project uses \"Story Points\" or \"Story point estimate\".\n\n```json\n{\n  \"issueKey\": \"PROJ-123\",\n  \"storyPoints\": 8\n}\n```\n\n### Change Issue Type\n\nUse `issue_edit_details` to convert an issue to a different type (e.g., from Task to Bug):\n\n```json\n{\n  \"issueKey\": \"PROJ-123\",\n  \"issueType\": \"Bug\"\n}\n```\n\n### Link an existing Story to an Epic\n\nUse `issue_set_parent` to organize Stories under Epics:\n\n```json\n{\n  \"issueKey\": \"PROJ-123\",\n  \"parentKey\": \"PROJ-100\"\n}\n```\n\nTo remove the link, pass an empty `parentKey`:\n\n```json\n{\n  \"issueKey\": \"PROJ-123\",\n  \"parentKey\": \"\"\n}\n```\n\n## Troubleshooting\n\n- **Error 401/403**: Verify that `JIRA_TOKEN` is an API Token and not your personal password.\n- **Fields not found**: If a custom field does not update, use `fields_list` to find its actual ID (e.g., `customfield_10016`).\n\n## Contributing\n\nIf you wish to add a tool, please add the corresponding DTO in `src/domains/` and the implementation in `src/jira.rs` using the `#[rmcp::tool]` macro.\n","readmeFilename":"README.md"}