You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace the Atlassian remote MCP (mcp.atlassian.com/v1/mcp, server name atlassian) — added in #522/#524 but not working — with the jira MCP that is confirmed working (ghcr.io/sooperset/mcp-atlassian, stdio via Docker). Everything that currently uses the Atlassian MCP for Jira fetch / create / assign / transition should switch to the jira MCP.
Why
The Atlassian remote MCP server doesn't work in our setup. A self-hosted jira MCP (sooperset/mcp-atlassian) is already configured globally and works. Migrate all Crow Jira tooling to it and remove the Atlassian one.
Auth via env: JIRA_URL, JIRA_USERNAME, JIRA_API_TOKEN (Docker -e).
Tools (different names — note the jira_ prefix): jira_get_issue, jira_create_issue, jira_update_issue, jira_transition_issue, jira_get_transitions, jira_search, jira_add_comment, jira_get_user_profile / current-user lookup. (Confirm exact tool names against the running server.)
What uses the Atlassian MCP today (all must switch)
Skill setup.sh (.claude/skills/crow-workspace/setup.sh) — resolve_atlassian_mcp_env() reads atlassianMCP from config.json (.endpoint, email, op:// token ref), and the .mcp.json writer injects the atlassian HTTP server + ATLASSIAN_MCP_AUTHORIZATION into the worktree settings.local.json env + enabledMcpjsonServers. Switch to provisioning/trusting the jira stdio server instead.
Skill docs — the ### Jira (Atlassian MCP) sections + tool references in crow-workspace/SKILL.md, crow-batch-workspace/SKILL.md, and crow-create-ticket/SKILL.md. Rewrite to the jira_* tool names and drop the cloudId / getAccessibleAtlassianResources step.
devRoot .mcp.json — currently pins the atlassian server; replace with jira (or stop managing it if the global config is authoritative).
Decision to make (call out in the PR)
Injection vs. global: the jira server already lives in the user's global ~/.claude.json. Either (a) have setup.sh inject the jira stdio config into each worktree .mcp.json (self-contained), or (b) stop injecting and just auto-trust the pre-existing global jira server (enabledMcpjsonServers). Pick one; (b) is simpler if the global server is reliably present.
Secret handling:JIRA_URL/JIRA_USERNAME/JIRA_API_TOKEN (Docker -e) replace the single ATLASSIAN_MCP_AUTHORIZATION header. If Crow injects, route these through the existing op:// secret mechanism (don't commit the API token).
Acceptance criteria
No remaining references to mcp.atlassian.com / the atlassian MCP server / ATLASSIAN_MCP_AUTHORIZATION in setup.sh, the skills, the app, or .mcp.json.
Summary
Replace the Atlassian remote MCP (
mcp.atlassian.com/v1/mcp, server nameatlassian) — added in #522/#524 but not working — with thejiraMCP that is confirmed working (ghcr.io/sooperset/mcp-atlassian, stdio via Docker). Everything that currently uses the Atlassian MCP for Jira fetch / create / assign / transition should switch to thejiraMCP.Why
The Atlassian remote MCP server doesn't work in our setup. A self-hosted
jiraMCP (sooperset/mcp-atlassian) is already configured globally and works. Migrate all Crow Jira tooling to it and remove the Atlassian one.The two servers
Old — remove (
atlassian):{ "atlassian": { "type": "http", "url": "https://mcp.atlassian.com/v1/mcp", "headers": { "Authorization": "${ATLASSIAN_MCP_AUTHORIZATION}" } } }cloudIdresolution step (getAccessibleAtlassianResources).getJiraIssue,createJiraIssue,editJiraIssue,transitionJiraIssue,getTransitionsForJiraIssue,lookupJiraAccountId,atlassianUserInfo.New — adopt (
jira, already in~/.claude.json):{ "jira": { "type": "stdio", "command": "docker", "args": ["run","-i","--rm","-e","JIRA_URL","-e","JIRA_USERNAME","-e","JIRA_API_TOKEN", "ghcr.io/sooperset/mcp-atlassian:latest","--transport","stdio"] } }cloudIdconcept.JIRA_URL,JIRA_USERNAME,JIRA_API_TOKEN(Docker-e).jira_prefix):jira_get_issue,jira_create_issue,jira_update_issue,jira_transition_issue,jira_get_transitions,jira_search,jira_add_comment,jira_get_user_profile/ current-user lookup. (Confirm exact tool names against the running server.)What uses the Atlassian MCP today (all must switch)
setup.sh(.claude/skills/crow-workspace/setup.sh) —resolve_atlassian_mcp_env()readsatlassianMCPfromconfig.json(.endpoint, email,op://token ref), and the.mcp.jsonwriter injects theatlassianHTTP server +ATLASSIAN_MCP_AUTHORIZATIONinto the worktreesettings.local.jsonenv +enabledMcpjsonServers. Switch to provisioning/trusting thejirastdio server instead.### Jira (Atlassian MCP)sections + tool references incrow-workspace/SKILL.md,crow-batch-workspace/SKILL.md, andcrow-create-ticket/SKILL.md. Rewrite to thejira_*tool names and drop thecloudId/getAccessibleAtlassianResourcesstep..mcp.json/ session injection. Repoint at thejiraserver (Docker stdio +JIRA_URL/JIRA_USERNAME/JIRA_API_TOKEN), or rely on the user's globaljiraserver and just auto-trust it..mcp.json— currently pins theatlassianserver; replace withjira(or stop managing it if the global config is authoritative).Decision to make (call out in the PR)
jiraserver already lives in the user's global~/.claude.json. Either (a) havesetup.shinject thejirastdio config into each worktree.mcp.json(self-contained), or (b) stop injecting and just auto-trust the pre-existing globaljiraserver (enabledMcpjsonServers). Pick one; (b) is simpler if the global server is reliably present.JIRA_URL/JIRA_USERNAME/JIRA_API_TOKEN(Docker-e) replace the singleATLASSIAN_MCP_AUTHORIZATIONheader. If Crow injects, route these through the existingop://secret mechanism (don't commit the API token).Acceptance criteria
mcp.atlassian.com/ theatlassianMCP server /ATLASSIAN_MCP_AUTHORIZATIONinsetup.sh, the skills, the app, or.mcp.json.MAXXwork item via thejiraMCP (jira_*tools) — including the create-with-assignee flow that motivated Replace acli with the official Atlassian Remote MCP Server for Jira (fixes assignment + headless automation) #522.jira_*tool names (nocloudIdstep).jiraserver.Notes
transitionJiraIssueconsumer becomesjira_transition_issue), Session row right-click: 'Mark issue done' — close GitHub issue / transition Jira to mapped completed status #526 (mark-done context menu — same transition path).gh/glabGitHub/GitLab paths untouched — Jira-only swap.