npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ff-mcp-jira

v1.1.0

Published

Reliable Jira MCP server (Server/DC & Atlassian Cloud). 37 tools — issues, labels, transitions, comments, worklog, links, remote links, watchers, attachments, user/assignable search, field & create metadata, agile boards/sprints; body-in-error reporting,

Readme

ff-mcp-jira

A reliable Model Context Protocol server for Jira Server / Data Center / Atlassian Cloud.

Drop-in replacement for the unmaintained [email protected] with the bugs that make Claude trip over Jira:

| Old [email protected] problem | What this package does | | --- | --- | | JIRA API error: 400 — body swallowed | Throws status + full Jira error body so the model can self-correct | | update_issue accepts only 4 hardcoded fields | Generic fields and update passthrough — set labels, components, fixVersions, customfield_*, anything | | No add_labels / remove_labels | Dedicated tools for label add/remove without overwrites | | No list_transitions | You can finally call transition_issue by name without guessing IDs | | No subtask / link / worklog / watcher / attach | All covered | | Search returns megabytes — exceeds token budgets | Lean default fields, default maxResults=25, hard cap 100 | | Bearer auth hardcoded — breaks Cloud | Auto-detects Cloud vs Server, Basic for Cloud, Bearer (PAT) for Server | | /rest/api/2 hardcoded — no ADF on Cloud | v2 or v3 per deployment, auto-wraps text to ADF on Cloud v3 | | No retries, no timeouts | 30s timeout + exponential backoff on 429/502/503/504 |

Install

Via npx (no install)

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%/Claude/claude_desktop_config.json on Windows) or Claude Code config:

{
  "mcpServers": {
    "jira": {
      "command": "npx",
      "args": ["-y", "ff-mcp-jira"],
      "env": {
        "JIRA_BASE_URL": "https://your-jira.example.com",
        "JIRA_API_TOKEN": "your-personal-access-token",
        "JIRA_USERNAME": "[email protected]"
      }
    }
  }
}

Restart Claude Desktop (⌘Q, then reopen) — the jira_* tools appear in the next conversation.

Local install

npm install -g ff-mcp-jira
ff-mcp-jira

Auth

| Deployment | JIRA_API_TOKEN is | JIRA_USERNAME / JIRA_EMAIL | | --- | --- | --- | | Jira Server / Data Center | Personal Access Token (from your profile → Personal Access Tokens) | Optional, ignored for auth | | Atlassian Cloud (*.atlassian.net) | API token from https://id.atlassian.com/manage-profile/security/api-tokens | Required (your account email) |

The auth mode is auto-detected from the hostname. Force it with JIRA_AUTH_MODE=basic or JIRA_AUTH_MODE=bearer if needed.

Tools (37)

| Tool | Purpose | | --- | --- | | jira_get_myself | Auth smoke test — returns current user | | jira_find_users | Search users → resolve a handle to an assignee/watcher value | | jira_find_assignable_users | Search users assignable in a project (stricter than jira_find_users) | | jira_search | JQL search with lean default fields and 25-result cap | | jira_get_issue | Fetch one issue with configurable fields/expand | | jira_create_issue | Create issue. Generic fields passthrough for any custom field | | jira_update_issue | Update issue. Generic fields + update ops. Convenience args for summary, description, assignee, priority, labels | | jira_delete_issue | Delete an issue (optionally its subtasks) — destructive | | jira_list_fields | List system + custom fields — resolve customfield_NNNNN ↔ name | | jira_get_create_meta | Required/allowed fields for create, per project + issue type | | jira_get_edit_meta | Editable fields + allowed values for an existing issue | | jira_add_labels / jira_remove_labels | Add/remove labels without overwriting | | jira_list_transitions | List available workflow transitions | | jira_transition_issue | Transition by id or by name (case-insensitive) | | jira_add_comment / jira_list_comments | Comments — ADF auto-wrapping on Cloud v3 | | jira_update_comment / jira_delete_comment | Edit / remove a comment by id | | jira_assign_issue | Set / clear / auto-assign | | jira_create_subtask | Subtask under a parent (auto-detects parent's project) | | jira_link_issues / jira_list_link_types | Issue linking | | jira_delete_issue_link | Remove an issue link by id | | jira_remote_link | Attach a remote/web link (e.g. a Confluence page) | | jira_list_boards | List agile boards | | jira_list_sprints | List sprints on a board (active + future by default) | | jira_move_to_sprint | Move issues into a sprint | | jira_add_watcher / jira_remove_watcher / jira_list_watchers | Watchers | | jira_log_work / jira_list_worklogs | Worklog | | jira_list_projects / jira_list_issue_types | Discovery | | jira_attach_file | Upload a local file | | jira_raw_request | Escape hatch — any Jira REST call |

Environment variables

| Var | Required | Notes | | --- | --- | --- | | JIRA_BASE_URL | yes | e.g. https://jira.example.com or https://you.atlassian.net | | JIRA_API_TOKEN | yes | PAT (Server) or API token (Cloud) | | JIRA_EMAIL / JIRA_USERNAME | Cloud only | Account email — required when auth mode is Basic | | JIRA_AUTH_MODE | no | bearer (Server, default) or basic (Cloud, auto-detected for *.atlassian.net) | | JIRA_API_VERSION | no | 2 (Server) or 3 (Cloud) — auto-detected | | JIRA_TIMEOUT_MS | no | default 30000 | | JIRA_MAX_RETRIES | no | default 2 — retries on 429/502/503/504 | | JIRA_LOG_LEVEL | no | debug / info / warn / error (stderr only — stdout is reserved for MCP) |

Development

git clone https://github.com/AlexWolfGoncharov/ff-mcp-jira
cd ff-mcp-jira
npm install
cp .env.example .env  # fill in your creds, then `set -a; source .env; set +a`
node smoke.js

smoke.js exercises auth, search, get/transitions/comments/labels round-trip, list_link_types, list_projects, and verifies that errors include the full Jira response body.

License

MIT