{
  "markdown": "# Alces for Jira Data Center\n\n<img src=\"docs/media/alces-logo.svg\" alt=\"Alces logo\" width=\"96\" height=\"96\">\n\n[![Pipeline Status](https://gitlab.com/moosejudge/alces-mcp/badges/main/pipeline.svg)](https://gitlab.com/moosejudge/alces-mcp/-/commits/main)\n[![Coverage](https://gitlab.com/moosejudge/alces-mcp/badges/main/coverage.svg)](https://gitlab.com/moosejudge/alces-mcp/-/graphs/main/charts)\n[![Latest Release](https://gitlab.com/moosejudge/alces-mcp/-/badges/release.svg)](https://gitlab.com/moosejudge/alces-mcp/-/releases)\n\nDocs: https://alces.moosejudge.com/docs\n\nA secure, high-performance Model Context Protocol (MCP) server that bridges Atlassian Jira Data Center (DC) with AI agents like Claude and OpenAI.\n\n> Alces is an independent, community-built tool. It is not affiliated with, endorsed by, or\n> sponsored by Atlassian. Jira® is a registered trademark of Atlassian Pty Ltd.\n\n## Overview\n\nAs Atlassian sunsets Data Center support, this server ensures that organizations can still leverage AI safely within their on-premise infrastructure. It follows open standards, the MCP specification, and a \"secure by default\" model.\n\n## Features\n\n- **556 tools, broad Jira DC + JSM coverage**: issues, agile boards/sprints/epics, worklogs and attachments, projects/versions/components, users/groups/permissions, JSM service desks (requests, organizations, queues, SLAs), Assets/CMDB, and instance administration — see [docs/user/](./docs/user/) for the full breakdown.\n- **Dual-Token Security**: Differentiates between standard User PAT and Admin PAT for elevated privileges — 120 tools require the Admin PAT and are invisible to the agent without it.\n- **Dynamic tool-domain activation**: only the `core-issues` domain (plus 3 meta-tools) is advertised by default, keeping session context small — the rest activate on request. See [Tool domains](#tool-domains) below.\n- **Skills as MCP Resources**: Agent-facing operational guidance served via the MCP `resources` capability — `skill://core-issues`, `skill://jsm-service-desk`, `skill://assets`, `skill://issue-detail`, `skill://agile`, `skill://projects`, `skill://filters-personal-settings`, `skill://users-groups-permissions`, `skill://admin`.\n\n## Install to use\n\n> **Data Center only.** Alces does not support Jira Cloud (*.atlassian.net). If your Jira URL ends\n> in atlassian.net, this tool won't work — Data Center or Server only.\n\nJust want to talk to your Jira DC instance through Claude Desktop, without cloning or building anything? Install the pre-built bundle:\n\n1. Download the latest `alces-mcp-<version>.mcpb` from the [GitLab Releases page](https://gitlab.com/moosejudge/alces-mcp/-/releases).\n2. In Claude Desktop: **Settings → Extensions → Advanced settings → Extension Developer → \"Install Extension…\"**, then select the downloaded file.\n3. Enter your Jira URL and PAT(s) when prompted — these are stored via your OS keychain, never as plaintext.\n\nOnce connected, see [docs/user/](./docs/user/README.md) for what you can do and how to ask for it.\n\nIf you're integrating Alces into a coding agent instead of Claude Desktop, skip to [Usage](#usage) below.\n\n## Install via a marketplace or registry\n\nBeyond the `.mcpb` download above, Alces is also listed on four package-manager-style channels.\nThese are the fastest path if your client supports one of them; the manual per-client config in\n[Usage](#usage) below always works as a fallback and is what you want for local development.\n\n### Smithery\n\n```bash\nnpx @smithery/cli@latest mcp add moosejudge/alces-mcp --client claude\n```\n\nListing: [smithery.ai/servers/moosejudge/alces-mcp](https://smithery.ai/servers/moosejudge/alces-mcp).\n\n### Claude Code plugin marketplace\n\n```bash\nclaude plugin marketplace add https://gitlab.com/moosejudge/mcp-marketplace.git\nclaude plugin install alces-mcp@mcp-marketplace\n```\n\nUse the full `https://gitlab.com/...` URL — the bare `moosejudge/mcp-marketplace` shorthand\nresolves as a **GitHub** repo shorthand in Claude Code and fails, since this marketplace is hosted\non GitLab.\n\n### Codex CLI plugin marketplace\n\n```bash\ncodex plugin marketplace add https://gitlab.com/moosejudge/alces-mcp.git\ncodex plugin add alces-mcp@alces-mcp\n```\n\n### Official MCP Registry\n\nAlces is listed at [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io)\nunder `com.moosejudge/alces-mcp`, with a real npm package reference — any MCP-Registry-aware\nclient can resolve `alces-mcp` from there directly.\n\n## Setup to develop\n\nContributing, or working from an unreleased commit instead of the published npm package:\n\n1. Clone the repository.\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Copy `.env.example` to `.env` and fill in `JIRA_URL`, `JIRA_USER_TOKEN`, and (optionally) `JIRA_ADMIN_TOKEN`.\n4. Build the project:\n   ```bash\n   npm run build\n   ```\n\n## Usage\n\nConnect Alces to a coding agent's own MCP config. Same three environment variables everywhere (`JIRA_URL`, `JIRA_USER_TOKEN`, `JIRA_ADMIN_TOKEN` — the last one optional, enabling the 120 admin tools when set). Two more optional variables, not needed in the config examples below: `JIRA_TIMEOUT_MS` sets the request timeout (in milliseconds) for every call Alces makes to Jira — defaults to `30000` (30s); raise it if your instance is slow to respond to large requests. `JIRA_SESSION_USERNAME`/`JIRA_SESSION_PASSWORD` (a real Jira DC account's username/password, not a PAT) enable session-cookie auth for the small set of legacy avatar upload/crop/finalize tools that don't work over PAT bearer auth alone — see `.env.example` and `docs/developer/admin.md` for details. They're available as optional fields in the `.mcpb`/Claude Code plugin config UI too; every other tool is unaffected if you leave them unset.\n\nTwo ways to run the server, in every config below:\n\n- **`npx` (recommended)** — `command: \"npx\"`, `args: [\"-y\", \"alces-mcp\"]`. Runs the published\n  [`alces-mcp` npm package](https://www.npmjs.com/package/alces-mcp) directly; nothing to clone or\n  build. This is what every example below uses.\n- **Local build (development only)** — after [Setup to develop](#setup-to-develop) above, swap in\n  `command: \"node\"`, `args: [\"/path/to/alces-mcp/build/index.js\"]` (or the TOML equivalent for\n  Codex CLI) instead of the `npx` form, to run against your own clone/unreleased changes.\n\n### Claude Code\n\n`.mcp.json` in your project root (or run `claude mcp add --transport stdio alces -- npx -y alces-mcp`):\n\n```json\n{\n  \"mcpServers\": {\n    \"alces\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"alces-mcp\"],\n      \"env\": {\n        \"JIRA_URL\": \"https://your-jira-instance.com\",\n        \"JIRA_USER_TOKEN\": \"your-user-pat\",\n        \"JIRA_ADMIN_TOKEN\": \"your-admin-pat\"\n      }\n    }\n  }\n}\n```\n\n### Codex CLI\n\n`~/.codex/config.toml` (or `.codex/config.toml` for a project-scoped server):\n\n```toml\n[mcp_servers.alces]\ncommand = \"npx\"\nargs = [\"-y\", \"alces-mcp\"]\nenv = { JIRA_URL = \"https://your-jira-instance.com\", JIRA_USER_TOKEN = \"your-user-pat\", JIRA_ADMIN_TOKEN = \"your-admin-pat\" }\n```\n\n### Cursor\n\n`.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):\n\n```json\n{\n  \"mcpServers\": {\n    \"alces\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"alces-mcp\"],\n      \"env\": {\n        \"JIRA_URL\": \"https://your-jira-instance.com\",\n        \"JIRA_USER_TOKEN\": \"your-user-pat\",\n        \"JIRA_ADMIN_TOKEN\": \"your-admin-pat\"\n      }\n    }\n  }\n}\n```\n\n### Cline (VS Code)\n\n`cline_mcp_settings.json`, in VS Code's extension global storage — not a repo-relative file. On Linux: `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json` (macOS/Windows equivalents under their own `User/globalStorage` paths). Easiest to add via Cline's built-in MCP marketplace/settings UI rather than hand-editing this path.\n\n```json\n{\n  \"mcpServers\": {\n    \"alces\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"alces-mcp\"],\n      \"env\": {\n        \"JIRA_URL\": \"https://your-jira-instance.com\",\n        \"JIRA_USER_TOKEN\": \"your-user-pat\",\n        \"JIRA_ADMIN_TOKEN\": \"your-admin-pat\"\n      }\n    }\n  }\n}\n```\n\n### Gemini CLI\n\n`~/.gemini/settings.json` (global) or `.gemini/settings.json` (project):\n\n```json\n{\n  \"mcpServers\": {\n    \"alces\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"alces-mcp\"],\n      \"env\": {\n        \"JIRA_URL\": \"https://your-jira-instance.com\",\n        \"JIRA_USER_TOKEN\": \"your-user-pat\",\n        \"JIRA_ADMIN_TOKEN\": \"your-admin-pat\"\n      }\n    }\n  }\n}\n```\n\n## Tool domains\n\n556 tools is a lot to advertise on every `tools/list` call regardless of what a given session\nactually needs, so as of 1.0.0 tools are grouped into 9 domains and only activated on demand:\n\n`core-issues`, `jsm-service-desk`, `assets`, `issue-detail`, `agile`, `projects`,\n`filters-personal-settings`, `users-groups-permissions`, `admin`\n\n**By default, only `core-issues` is active**, alongside 3 always-visible meta-tools:\n\n- `list_tool_domains` — lists all 9 domains, their tool counts, and which are currently active.\n- `activate_tool_domain` — activates one or more domains for the rest of the session (accepts an\n  array of domain names) and emits the MCP `notifications/tools/list_changed` notification so\n  clients that support it pick up the newly-visible tools automatically.\n- `deactivate_tool_domain` — the inverse, for trimming an active domain back out.\n\nA client that doesn't process `list_changed` (or a script that wants everything visible from the\nfirst `tools/list` call) can instead set **`ALCES_TOOL_GROUPS`** — a comma-separated list of domain\nnames — before starting the server, e.g. `ALCES_TOOL_GROUPS=core-issues,agile,admin`. Unknown\ndomain names are logged as a warning to stderr at startup and otherwise ignored (the valid subset\nstill activates); the same validate-and-report behavior applies to `activate_tool_domain`.\n\n**All tools remain callable by name regardless of activation state** — domain activation only\ncontrols what's *advertised* in `tools/list`, not what's *reachable*. Calling a tool from an\ninactive domain by name still works.\n\n`get_api_references` also stays always-visible, independent of domain activation, for inspecting\nthe full API catalog without activating anything.\n\n## Stability\n\nAs of 1.0.0, registered tool names and their required-field schemas are stable: removing a tool,\nor adding a new required field to an existing tool, is a breaking change and ships in a major\nversion. New tools, new optional fields, and new tool domains (e.g. via the tool-domain activation\nmechanism) are additive and ship in minor versions.\n\n## Documentation\n\n- [CONTRIBUTING.md](./CONTRIBUTING.md): The development workflow — spec, plan, TDD, review, merge.\n- [AGENTS.md](./AGENTS.md): Guidance for AI agents and TDD practices.\n- [docs/api-catalog.md](./docs/api-catalog.md): Catalog of implemented Jira APIs.\n- [docs/developer/](./docs/developer/): Technical documentation for developers.\n- [docs/user/](./docs/user/README.md): Functional documentation for users — start here if you're using Alces day-to-day rather than deploying it.\n\n## License\n\n[MIT](./LICENSE)",
  "bytes": 11058,
  "sha": "b55f677d77de7150e0392dce0c155bf7a06e5c566bfdf15ebd6f4cb4ada0c49c",
  "repo_slug": "",
  "fonte": "npm",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_moosejudge_alces_mcp_607791de/readme"
}