{"_id":"@automate-io/jira-mcp-server","name":"@automate-io/jira-mcp-server","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@automate-io/jira-mcp-server","version":"0.1.0","description":"MCP server for Jira Cloud. Exposes issue, project, board, sprint, search, comment, worklog, link, version, attachment and property operations as MCP tools using the Jira Cloud REST and Agile APIs.","main":"dist/server.js","type":"module","bin":{"jira-mcp":"dist/server.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","build:watch":"tsc --watch","dev":"tsx src/server.ts","inspect":"cross-env DANGEROUSLY_OMIT_AUTH=true node_modules\\.bin\\mcp-inspector node_modules\\.bin\\tsx src/server.ts"},"keywords":["mcp","mcp-server","ai","jira","atlassian","jira-cloud","model-context-protocol"],"author":{"name":"Veeranki Naveen Goud"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"1.17.1","zod":"3.25.76"},"devDependencies":{"@modelcontextprotocol/inspector":"^0.16.8","@types/node":"24.1.0","cross-env":"10.0.0","tsx":"4.20.3","typescript":"5.9.2"},"engines":{"node":">=20.0.0"},"gitHead":"2035dd86f3a6b731ad83672a2f9ca4aef1024f19","types":"./dist/server.d.ts","_id":"@automate-io/jira-mcp-server@0.1.0","_nodeVersion":"22.19.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-Y8Usl8YyXf5T/luuAGev9O4G7SGVA/4DtvNFOpEAMzU16zNfgootGcQDOj+IY5B3LpbHOEvxo2kaefOJK8YsGQ==","shasum":"08cffb4caab5d788e1f728ca772e9b1053a3df53","tarball":"https://registry.npmjs.org/@automate-io/jira-mcp-server/-/jira-mcp-server-0.1.0.tgz","fileCount":75,"unpackedSize":132042,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEt/vU8jvPwlk71LMCE7Jkv8hg0/ylZ6d+UQ3x55HITzAiEApzmdrC9wuxS3NPMrJ3Vdx8wYCAdi6VSr8zvI+hlDmZk="}]},"_npmUser":{"name":"naveen-automation","email":"naveen.351986@gmail.com"},"directories":{},"maintainers":[{"name":"naveen-automation","email":"naveen.351986@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jira-mcp-server_0.1.0_1789137840076_0.045807325181733693"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-11T14:43:59.882Z","0.1.0":"2026-09-11T14:44:00.196Z","modified":"2026-09-11T14:44:00.438Z"},"maintainers":[{"name":"naveen-automation","email":"naveen.351986@gmail.com"}],"description":"MCP server for Jira Cloud. Exposes issue, project, board, sprint, search, comment, worklog, link, version, attachment and property operations as MCP tools using the Jira Cloud REST and Agile APIs.","keywords":["mcp","mcp-server","ai","jira","atlassian","jira-cloud","model-context-protocol"],"author":{"name":"Veeranki Naveen Goud"},"license":"MIT","readme":"# Jira MCP Server\n\nA Model Context Protocol (MCP) server for **Jira Cloud**. It exposes issue, project, board,\nsprint, search, comment, worklog, link, version, attachment and property operations as MCP\ntools, backed directly by the Jira Cloud REST API (v3) and Agile API (1.0).\n\nThis project is not affiliated with, endorsed by, or sponsored by Atlassian.\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Prerequisites](#prerequisites)\n- [Setup](#setup)\n- [Configuration](#configuration)\n- [Tool catalogue](#tool-catalogue)\n- [Design notes](#design-notes)\n- [Troubleshooting](#troubleshooting)\n\n## Overview\n\n- **Auth**: Jira Cloud API token (email + token, Basic Auth) — no OAuth redirect flow needed.\n- **HTTP client**: Node's native `fetch`/`FormData` — no extra HTTP dependency.\n- **Runtime deps**: just `@modelcontextprotocol/sdk` and `zod`.\n- **Destructive/admin tools are off by default**: `deleteJiraIssue`, `deleteJiraComment`,\n  `deleteJiraIssueAttachment`, `createJiraProject`, `updateJiraProject` only register when you\n  explicitly opt in via env vars (see below).\n\n## Prerequisites\n\n- **Node.js** v20 or higher (native `fetch`/`FormData` need to be stable).\n- **A Jira Cloud site** and an **API token** — create one at\n  https://id.atlassian.com/manage-profile/security/api-tokens.\n- An MCP-compatible client (VS Code + GitHub Copilot, Claude Code, etc.).\n\n## Setup\n\n1. Clone/copy this project, then install dependencies:\n   ```bash\n   npm install\n   npm run build\n   ```\n2. Or, once published, install as a dependency of your own project:\n   ```bash\n  npm i @automate-io/jira-mcp-server@latest\n   ```\n\n## Configuration\n\nThe server reads its Jira connection from environment variables — set these in your MCP\nclient's server config, never commit them to source control.\n\n| Variable | Required | Description |\n| --- | --- | --- |\n| `JIRA_URL` | Yes | Your site, e.g. `https://your-domain.atlassian.net` |\n| `JIRA_USERNAME` | Yes | Account email used to generate the API token |\n| `JIRA_TOKEN` | Yes | API token from id.atlassian.com |\n| `JIRA_ENABLE_DELETE` | No | Set to `true` to register `deleteJiraIssue`/`deleteJiraComment`/`deleteJiraIssueAttachment` |\n| `JIRA_ENABLE_MANAGE` | No | Set to `true` to register `createJiraProject`/`updateJiraProject` |\n\nExample `.vscode/mcp.json` (also included in this repo, using prompted inputs so the token\nisn't hardcoded):\n\n```json\n{\n  \"servers\": {\n    \"jira-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\"node_modules/@automate-io/jira-mcp-server/dist/server.js\"],\n      \"cwd\": \"${workspaceFolder}\",\n      \"env\": {\n        \"JIRA_URL\": \"${input:jiraBaseUrl}\",\n        \"JIRA_USERNAME\": \"${input:jiraEmail}\",\n        \"JIRA_TOKEN\": \"${input:jiraApiToken}\"\n      }\n    }\n  },\n  \"inputs\": [\n    { \"id\": \"jiraBaseUrl\", \"type\": \"promptString\", \"description\": \"Jira Cloud site URL\" },\n    { \"id\": \"jiraEmail\", \"type\": \"promptString\", \"description\": \"Jira account email\" },\n    { \"id\": \"jiraApiToken\", \"type\": \"promptString\", \"description\": \"Jira API token\", \"password\": true }\n  ]\n}\n```\n\n## Tool catalogue\n\nGrouped by file under `src/tools/`. 41 tools by default, 46 with delete/manage enabled.\n\n| File | Tools |\n| --- | --- |\n| `issues.ts` | getJiraIssue, createJiraIssue, editJiraIssue, listJiraIssueTransitions, transitionJiraIssue, listJiraIssueChangelogs, watchJiraIssue, *deleteJiraIssue* |\n| `comments.ts` | listJiraIssueComments, addOrEditJiraIssueComment, *deleteJiraComment* |\n| `worklogs.ts` | listJiraIssueWorklogs, addOrEditJiraIssueWorklog |\n| `links.ts` | listJiraIssueLinkTypes, createJiraIssueLink, listJiraIssueRemoteIssueLinks |\n| `search.ts` | searchJiraIssuesUsingJql |\n| `users.ts` | getJiraCurrentUser, getJiraUser, lookupJiraAccountId, findJiraIssueAssignableUsers |\n| `projects.ts` | listJiraProjects, listJiraProjectIssueTypesMetadata, getJiraIssueTypeMetaWithFields, listJiraStatuses, listJiraProjectComponents, *createJiraProject*, *updateJiraProject* |\n| `versions.ts` | getJiraProjectVersions, manageJiraProjectVersion, getJiraProjectVersionRelatedWork, manageJiraProjectVersionRelatedWork |\n| `boards.ts` | listJiraBoards, getJiraBoardConfig, getJiraBoardIssueData, createJiraBoard |\n| `sprints.ts` | listJiraBoardSprints, getJiraBoardSprintData, manageJiraSprint |\n| `filtersAndDashboards.ts` | listJiraFilters, listJiraDashboards |\n| `properties.ts` | getJiraEntityProperty, editJiraEntityProperty |\n| `attachments.ts` | uploadAttachmentToJiraIssue, downloadJiraIssueAttachment, *deleteJiraIssueAttachment* |\n\n*Italicised tools* require the matching `JIRA_ENABLE_*` flag.\n\n## Design notes\n\n- `src/utilities/jira-client.ts` is the single HTTP entry point (`jiraRequest`). It preserves\n  the real HTTP status code on every response (including errors), parses the body by\n  content-type instead of assuming JSON, and needs no manual context disposal since it's built\n  on native `fetch`.\n- `src/utilities/tool-helpers.ts` provides `safeHandler` (shared try/catch) and `toToolResult`\n  (maps a Jira response to MCP content with `isError` reflecting the real status), so each tool\n  handler stays a few lines of Jira-specific logic instead of repeating boilerplate.\n- `src/utilities/adf.ts` converts plain text into the minimal Atlassian Document Format Jira\n  Cloud's v3 API requires for rich-text fields (comments, descriptions, worklog comments).\n- `searchJiraIssuesUsingJql` uses the current token-paginated `/rest/api/3/search/jql`\n  endpoint, since the older `startAt`-based `/rest/api/3/search` is deprecated.\n- Startup logs go to **stderr**, never stdout — stdout is reserved for the MCP JSON-RPC\n  stream over the stdio transport, so anything else written there would corrupt it.\n\n## Troubleshooting\n\n- **Server exits immediately with \"Missing required environment variable\"**: set\n  `JIRA_URL`, `JIRA_USERNAME`, `JIRA_TOKEN` in your MCP client's server config.\n- **401/403 from Jira**: regenerate your API token, and confirm `JIRA_USERNAME` matches the\n  Atlassian account that owns the token.\n- **A delete/manage tool doesn't show up**: set `JIRA_ENABLE_DELETE` / `JIRA_ENABLE_MANAGE`\n  to `\"true\"` in the server's `env` config.\n","readmeFilename":"README.md","_rev":"1-5990795b77ccb3ce9811f6f018b6d12d"}