Metadata-Version: 2.4
Name: mcp-atlassian-multi
Version: 0.21.3
Summary: The Model Context Protocol (MCP) Atlassian integration is an open-source implementation that bridges Atlassian products (Jira and Confluence) with AI language models following Anthropic's MCP specification. This project enables secure, contextual AI interactions with Atlassian tools while maintaining data privacy and security. Key features include:
Author-email: dnguyenminh <dnguyenminh@hotmail.com>
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: atlassian-python-api>=4.0.0
Requires-Dist: beautifulsoup4>=4.12.3
Requires-Dist: cachetools>=5.0.0
Requires-Dist: click>=8.1.7
Requires-Dist: fakeredis<2.35.0,>=2.32.1
Requires-Dist: fastmcp<2.15.0,>=2.13.0
Requires-Dist: httpx>=0.28.0
Requires-Dist: keyring>=25.6.0
Requires-Dist: markdown-to-confluence<0.4.0,>=0.3.4
Requires-Dist: markdown>=3.7.0
Requires-Dist: markdownify>=0.11.6
Requires-Dist: mcp<2.0.0,>=1.8.0
Requires-Dist: pydantic<3.0,>=2.10.6
Requires-Dist: python-dateutil>=2.9.0.post0
Requires-Dist: python-dotenv>=1.0.1
Requires-Dist: requests[socks]>=2.31.0
Requires-Dist: starlette>=0.49.1
Requires-Dist: thefuzz>=0.22.1
Requires-Dist: trio>=0.29.0
Requires-Dist: truststore>=0.10.0
Requires-Dist: types-cachetools>=5.5.0.20240820
Requires-Dist: types-python-dateutil>=2.9.0.20241206
Requires-Dist: tzdata>=2024.1; platform_system == 'Windows'
Requires-Dist: unidecode>=1.3.0
Requires-Dist: urllib3>=2.6.3
Requires-Dist: uvicorn>=0.27.1
Description-Content-Type: text/markdown

# mcp-atlassian-multi

Multi-user credential support for Atlassian MCP Server (Jira + Confluence).

Forked from [sooperset/mcp-atlassian](https://github.com/sooperset/mcp-atlassian) with added support for per-request credential injection, enabling a single MCP server process to serve multiple users with different credentials.

## Key Difference from Original

| Feature | mcp-atlassian (original) | mcp-atlassian-multi (this fork) |
|---------|--------------------------|----------------------------------|
| Credential source | ENV vars / CLI args at startup | Per-request via `_meta` field |
| Process model | 1 process per user | 1 process for ALL users |
| Use case | Single-user (IDE, CLI) | Multi-user orchestrator server |

## How It Works

The original `mcp-atlassian` reads credentials from environment variables or CLI arguments when the process starts. This means each user needs a separate process.

`mcp-atlassian-multi` adds a **credential resolution layer** that:
1. Checks `_meta` in each tool call for per-request credentials
2. Falls back to ENV/CLI credentials if `_meta` is not provided (backward compatible)
3. Creates HTTP clients per credential set (pooled by credential hash)

## Installation

```bash
pip install mcp-atlassian-multi
uvx mcp-atlassian-multi
```

## Usage

### Mode 1: Original (backward compatible)

```bash
mcp-atlassian-multi --jira-url=https://company.atlassian.net --jira-token=YOUR_TOKEN
```

### Mode 2: Multi-user (orchestrator integration)

Start without credentials:
```bash
mcp-atlassian-multi --multi-user
```

Orchestrator sends credentials per tool call via `_meta`:
```json
{
  "method": "tools/call",
  "params": {
    "name": "jira_search",
    "arguments": {"jql": "project = PROJ"},
    "_meta": {
      "credentials": {
        "jira_url": "https://company.atlassian.net",
        "jira_username": "user@company.com",
        "jira_token": "USER_SPECIFIC_TOKEN"
      }
    }
  }
}
```

## Development

```bash
git clone https://github.com/dnguyenminh/mcp-atlassian-multi.git
cd mcp-atlassian-multi
uv sync
uv run pytest
uv run ruff check src/
uv run mcp-atlassian-multi --multi-user
```

## Syncing with Upstream

```bash
git fetch upstream
git checkout main
git merge upstream/main
git checkout feature/multi-user-credentials
git rebase main
```

## License

MIT License. Original work: Copyright (c) sooperset. Modified work: Copyright (c) dnguyenminh.
