feat(integrations): add mcp-atlassian self-hosted stdio connection to Atlassian entry#383
Conversation
…tion The existing atlassian entry only exposed the Atlassian-hosted OAuth MCP server (mcp.atlassian.com), which is filtered out as non-installable by getInstallableMcpConnectionOption. This adds a second `api` connection option using `uvx mcp-atlassian` (https://github.com/sooperset/mcp-atlassian) that runs the self-hosted MCP server with Jira/Confluence API tokens. Users can now install Atlassian support from the Agent Canvas MCP marketplace without OAuth by providing their workspace URL and API token. Also enriches the entry with categories, popularityRank, keywords, and an installHint.
|
@OpenHands can you fix the failing test |
|
I'm on it! jpelletier1 can track my progress at all-hands.dev |
…rityRank sort The atlassian entry was added with popularityRank 88 but catalog-index.js was not regenerated, so the JS package kept atlassian at its old import position (44) instead of its popularity-sorted position (3). This made test_js_reads_the_same_catalog_as_python fail because the Python bindings sort by popularityRank descending while the JS index preserved stale import order. Regenerate via npm run build:integrations so the JS catalog order matches the Python catalog order. Co-authored-by: openhands <openhands@all-hands.dev>
|
Fixed in 20935b9. The failing test was Fix: ran This comment was created by an AI agent (OpenHands) on behalf of the user. |
|
Fixed the failing test on PR #383. Failing test: Root cause: The PR added the Fix: Ran Verification: All 440 tests pass locally; |
| "confluence", | ||
| "tickets", | ||
| "wiki", |
There was a problem hiding this comment.
| "confluence", | |
| "tickets", | |
| "wiki", | |
| "confluence", |
My feeling is that it probably triggers too much on unrelated things if we use too wide, undiscriminated terms
|
@OpenHands Do a /codereview on this PR. You are free to investigate official docs or whatnot. Post your review with gh api, and event, can be any of the possible options. |
|
I'm on it! enyst can track my progress at all-hands.dev |
enyst
left a comment
There was a problem hiding this comment.
This review was generated by an AI agent (OpenHands) on behalf of @enyst.
🟡 Taste Rating: Acceptable - This is a small catalog-only change that follows the existing stdio integration pattern and keeps the generated JS index in sync. The upstream mcp-atlassian docs confirm the uvx command and the Jira/Confluence env var names used here.
[CRITICAL ISSUES]
- None.
[IMPROVEMENT OPPORTUNITIES]
- [integrations/catalog/atlassian.json, Line 22] Repository Convention:
installHintuses an em dash (—).AGENTS.mdexplicitly asks marketplace JSON entries to use plain hyphens instead of em dashes. Replace—with-to keep catalog copy consistent. This is non-blocking, but it is cheap to fix.
[TESTING GAPS]
- None blocking. CI reports the repository
testjob and extension sync checks as passing. Locally,pytestis not installed in the base environment, but I ran the integration catalog build/smoke path: regeneratingintegrations/catalog-index.jsleft the workspace clean, and the JS catalog returnsatlassianat index 3 with bothoauthandapiconnection options.
[RISK ASSESSMENT]
- [Overall PR]
⚠️ Risk Assessment: 🟡 MEDIUM
This is metadata-only in this repository, but it causes clients to offer a local stdio integration that executes the communitymcp-atlassianPyPI package viauvxand passes Jira/Confluence credentials into that process. That is consistent with the existing catalog pattern for stdio MCP servers, the current PyPI release is not newly published, and the command/env fields match upstream documentation, so the risk is acceptable with normal maintainer scrutiny.
VERDICT:
✅ Worth merging: Core catalog structure is sound, generated artifacts are in sync, and the only issue I found is a minor repository copy-style convention.
KEY INSIGHT:
The PR solves the marketplace visibility problem with the smallest viable catalog change: add a locally installable non-OAuth MCP option while preserving the existing Atlassian-hosted OAuth option.
Improve this review? If any feedback above seems incorrect or irrelevant to this repository, you can teach the reviewer to do better:
- Add a
.agents/skills/custom-codereview-guide.mdfile to your branch (or edit it if one already exists) with the/codereviewtrigger and the context the reviewer is missing (e.g., "Security concerns about X do not apply here because Y"). See the customization docs for the required frontmatter format.- Re-request a review - the reviewer reads guidelines from the PR branch, so your changes take effect immediately.
- When your PR is merged, the guideline file goes through normal code review by repository maintainers.
Resolve with AI? Install the iterate skill in your agent and run
/iterateto automatically drive this PR through CI, review, and QA until it's merge-ready.Was this review helpful? React with 👍 or 👎 to give feedback.
|
Posted the PR review via GitHub API with event Summary:
|
Co-authored-by: openhands <openhands@all-hands.dev>
enyst
left a comment
There was a problem hiding this comment.
This approval was generated by an AI agent (OpenHands) on behalf of the user.
Approved after fixing the only issue from my review: the Atlassian install hint now uses a plain hyphen per repository convention. I re-ran the catalog generation/smoke check locally and the PR remains a focused catalog metadata change with generated artifacts in sync.
|
🚀 Released in v0.9.0. |
Summary
The existing
atlassiancatalog entry only exposed the Atlassian-hosted OAuth MCP server (mcp.atlassian.com). That option usesoauth2auth, whichgetInstallableMcpConnectionOptionin agent-canvas filters out as non-locally-installable — so the Atlassian tile never appeared in the MCP marketplace for self-hosted / API-token users.This PR adds a second
apiconnection option that runs the mcp-atlassian community MCP server viauvx, allowing users to connect their own Atlassian workspace (Jira and/or Confluence) with API tokens — no OAuth flow required.Changes
integrations/catalog/atlassian.json"api"connection option:stdiotransport:uvx mcp-atlassianenvFields:JIRA_URL,JIRA_USERNAME,JIRA_API_TOKEN,CONFLUENCE_URL,CONFLUENCE_USERNAME,CONFLUENCE_API_TOKEN(all optional at the schema level so users can configure Jira-only, Confluence-only, or both)auth.strategy: "api_key"categories,popularityRank: 88, additionalkeywords, andinstallHintdocsUrlto point at the mcp-atlassian installation docsVerification
The new entry passes the existing catalog schema validator (
catalog.schema.json):password-typeenvFieldsincludehelperText✓helperLinkvalues arehttps://URLs ✓stdiotransport includes requiredkind,serverName,command,args✓Impact
With this change, agent-canvas
getMcpMarketplaceCatalogwill include the Atlassian entry (since it now has a non-oauth2 MCP connection option), and users will see an "Atlassian (Jira & Confluence)" tile in the MCP marketplace with an API token install flow.This PR was created by an AI agent (OpenHands) on behalf of the user.
@jpelletier1 can click here to continue refining the PR