jc-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ATLASSIAN_URL | Yes | Atlassian site URL, e.g. https://yoursite.atlassian.net | |
| ATLASSIAN_EMAIL | Yes | Atlassian account email | |
| ATLASSIAN_TOKEN | Yes | API token | |
| ATLASSIAN_CLOUD_ID | No | Cloud ID, auto-discovered if omitted |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| jcm_getIssueA | Fetch a Jira issue by key. Returns lean fields: key, summary, description (markdown), status, type, parent ({key, summary, type} or null), priority, assignee, reporter ({displayName, accountId} or null), labels, updated (ISO), updatedJql (updated floored to the minute in your Jira timezone, for JQL |
| jcm_getIssuesA | Batch-read up to 50 Jira issues in one call (one JQL search, plus one GET per key the search omits). Returns an array in request order, one entry per unique key: {key, summary, type, status, parent ({key, summary, type} or null), description (markdown or null), comments: [{author, body, created}], commentsTotal?}. fields selects description and/or comments (default both). Descriptions are capped at maxDescriptionChars (default 600), comment bodies at maxCommentChars (default 300); cut text ends with "… [truncated, N chars total]". Only the 3 most recent comments are returned (oldest first); commentsTotal appears when more exist. A key that is missing or not visible to you returns {key, error} instead of being dropped. A moved/renamed key returns the issue under the requested key plus movedTo (current key). Use jcm_getIssue for full detail on one issue. |
| jcm_getIssueChangelogA | Get a Jira issue's field-change history, oldest first. Returns {entries: [{id, authorAccountId, author, created, items: [{field, from, to}]}], truncated}. |
| jcm_getAttachmentDownloadLinkA | Resolve an attachment ID from jcm_getIssue to {attachmentId, filename, url, temporary: true}. Requires the server's Jira account to have permission to view the attachment. Download the sensitive temporary URL without Jira credentials using a local download tool; request a fresh URL after expiry. File bytes are not returned. Supports Jira Cloud's Atlassian media redirects. |
| jcm_getTransitionsA | Get available workflow transitions for a Jira issue. Returns [{id, name}]. |
| jcm_editIssueA | Update a Jira issue. Pass 'fields' as {fieldName: value} to set values (description accepts markdown), and/or 'update' for incremental ops like adding a fix version: update={fixVersions: [{add: {name: '1.2.0'}}]}. 'update' values are passed verbatim, not markdown-converted. At least one is required. Returns {ok, key}. |
| jcm_transitionIssueA | Move a Jira issue to a new workflow state. Use jcm_getTransitions first to get valid transition IDs. Returns {ok, key, transitionId}. |
| jcm_convertIssueTypeA | Convert one or more Jira issues (same project) to another issue type, keeping their keys. To make tasks sub-tasks, provide parentKey. To make sub-tasks standalone, omit parentKey. Uses Jira's bulk move and waits up to 30s. Returns {ok, keys, issueType, parentKey}, or {ok:false, taskId, status, failed?} if the move failed or is still running. |
| jcm_addToActiveSprintA | Add a Jira issue to its project's active scrum sprint. No-op if the issue is already in an active sprint or the project has no scrum board. If the board or sprint is ambiguous, returns {ok:false, reason, candidates:[{id,name}]}: for reason multiple-scrum-boards retry with boardId; no-active-sprint and multiple-active-sprints need manual handling in Jira. Returns {ok, key, sprintId, sprintName, boardId} or {ok, skipped}. |
| jcm_getCurrentUserA | Returns the authenticated Atlassian user's account info: accountId, displayName, email, active. |
| jcm_lookupUserA | Look up a Jira user by email address. Returns [{accountId, displayName, email, active}]. |
| jcm_createIssueA | Create a new Jira issue. Returns {key, url}. For sub-tasks, pass parentKey. |
| jcm_addCommentA | Add a comment to a Jira issue. Body accepts markdown (headings, tables, code fences, lists). Returns {ok, commentId}. |
| jcm_searchIssuesA | Search Jira issues using JQL. Returns {total, issues: [{key, summary, status, type, parent, assignee, updated, updatedJql}]}. parent is {key, summary, type} or null. updatedJql is the issue's updated time floored to the minute in your Jira timezone; poll with |
| jcm_createVersionB | Create a new version (release) in a Jira project. Returns {id, name}. |
| jcm_listVersionsA | List all versions in a Jira project. Returns [{id, name, released, releaseDate}]. |
| jcm_releaseVersionA | Mark a Jira version as released. Returns {ok, id, name}. |
| jcm_addIssueLinkA | Create a link between two Jira issues. issueKey is the source and gets the outward verb (e.g. "blocks", "duplicates", "clones"); targetIssueKey gets the inward verb. Returns {ok, issueKey, targetKey, linkType}. |
| jcm_removeIssueLinkA | Delete an issue link by its ID. Use jcm_getIssueLinks to find link IDs. Returns {ok, linkId}. |
| jcm_getIssueLinksA | Get all links for a Jira issue. Returns flat array of [{id, type, inwardIssue?, outwardIssue?}]. |
| jcm_getArticleA | Fetch a Confluence page by ID. Returns {id, title, body (markdown), status, version, spaceId, parentId?}. |
| jcm_lookupSpaceA | Resolve a Confluence space key to its numeric ID for use with jcm_createArticle. Returns {id, key, name}. |
| jcm_createArticleB | Create a new Confluence page. Returns {id, title, url}. |
| jcm_updateArticleA | Update a Confluence page. Pass current version number (auto-incremented). Returns {ok, id, version}. |
| jcm_searchArticlesA | Search Confluence pages using CQL. Returns [{id, title, space, spaceKey, lastModified}]. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 25 tools
Most tools target a distinct resource and action, and descriptions clarify overlapping areas such as jcm_getIssues, jcm_getIssue, and jcm_searchIssues. Some update-style tools (jcm_editIssue, jcm_transitionIssue, jcm_convertIssueType, jcm_addToActiveSprint) require careful selection, but the set is generally clear.
All tools consistently use the jcm_ prefix followed by lowerCamelCase verb-first names. The verbs vary by operation (get, search, create, update, add, remove), but the overall convention is predictable throughout.
25 tools is on the heavy side, but it covers two broad domains, Jira and Confluence, with several substantial sub-areas. Each tool appears purposeful, though the surface is larger than a typical focused MCP server.
The server covers core Jira issue, comment, link, version, sprint, transition, user, and Confluence page workflows quite thoroughly. Some gaps remain, such as deleting issues/pages, editing or deleting comments, and broader board/sprint management, but core workflows are largely supported.