Mcp Atlassian Attachments — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Atlassian Attachments (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- mcp-name: io.github.alyiox/mcp-atlassian-attachments -->
A Model Context Protocol (MCP) server for downloading Jira Cloud attachments by attachment ID to local disk.
Supplement to the official Atlassian MCP server. The official Atlassian MCP server covers search, issue management, and content operations but does not support downloading attachment files to disk. This server fills that gap.
Requirements: Python 3.13+, an Atlassian Cloud account, and an API token with at least the read:jira-work scope.
Scoped tokens are recommended to limit access to exactly the permissions needed.
Note: The granularread:attachment:jirascope is not sufficient — Jira's attachment metadata endpoint (/rest/api/3/attachment/{id}) requiresread:jira-workto resolve issue-level permissions. A classic (unscoped) API token also works.
read:jira-work scope, or choose "Classic API token" for full accessThe fastest way to try the server is with the MCP Inspector. Set the three required environment variables and run:
From the published package (no clone needed):
ATLASSIAN_SITE_URL=https://yourorg.atlassian.net \
[email protected] \
ATLASSIAN_API_TOKEN=your-api-token \
npx -y @modelcontextprotocol/inspector uvx mcp-atlassian-attachmentsFrom a local clone:
ATLASSIAN_SITE_URL=https://yourorg.atlassian.net \
[email protected] \
ATLASSIAN_API_TOKEN=your-api-token \
npx -y @modelcontextprotocol/inspector uv run mcp-atlassian-attachmentsSet environment variables or create a config file. Environment variables take priority.
Environment variables:
export ATLASSIAN_SITE_URL="https://yourorg.atlassian.net"
export ATLASSIAN_EMAIL="[email protected]"
export ATLASSIAN_API_TOKEN="your-api-token"Config file (~/.config/mcp-atlassian-attachments/config.json):
{
"site_url": "https://yourorg.atlassian.net",
"email": "[email protected]",
"api_token": "your-api-token"
}| Tool | Description | Required params |
|---|---|---|
| `download_jira_attachment` | Download a Jira attachment by ID. | attachment_id, output_dir |
| Parameter | Type | Description |
|---|---|---|
attachment_id | string | Jira attachment ID |
output_dir | string | Local directory for the saved file. Created automatically if it does not exist. |
filename | string (optional) | Override filename. Uses metadata filename when omitted. |
overwrite | bool (optional) | Replace an existing file. Defaults to false. |
The tool returns a JSON object:
{
"product": "jira",
"attachmentId": "439535",
"filename": "screenshot.png",
"mimeType": "image/png",
"size": 496724,
"path": "/your/output/dir/screenshot.png",
"sourceUrl": "https://yourorg.atlassian.net/rest/api/3/attachment/content/439535"
}Add the following to your MCP host's config file. The JSON is the same for Cursor (.cursor/mcp.json), Claude Desktop (claude_desktop_config.json), and Claude Code (.claude.json).
{
"mcpServers": {
"atlassian": {
"command": "uvx",
"args": ["mcp-atlassian-attachments"],
"env": {
"ATLASSIAN_SITE_URL": "https://yourorg.atlassian.net",
"ATLASSIAN_EMAIL": "[email protected]",
"ATLASSIAN_API_TOKEN": "your-api-token"
}
}
}
}ATLASSIAN_API_TOKEN is never logged or included in error messages.Authorization header is never exposed in tool output or errors.output_dir.uv run pytest tests/ -v/wiki/api/v2/) and a different identifier model. Planned for a future release.MIT. See LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.