Skip to main content

mcp-jira-confluence-corp

PyPI version Python versions License: MIT CI

A Model Context Protocol server for Atlassian Jira and Confluence, designed for corporate networks. It transparently bypasses system HTTP proxies for internal domains, handles self-signed certificates, and supports Personal Access Token (PAT) authentication.

Why this package exists

Generic MCP servers like mcp-atlassian work well against Atlassian Cloud but struggle inside many corporate environments where:

  1. A global HTTP_PROXY or HTTPS_PROXY (typically an SSH tunnel for a cloud API) silently intercepts on-prem traffic and causes timeouts.
  2. Internal Jira and Confluence instances use self-signed TLS certificates.
  3. The only available credential is a Personal Access Token rather than a username/password pair.

mcp-jira-confluence-corp addresses all three by:

  • Clearing HTTP_PROXY-style environment variables on client construction.
  • Listing internal domains that should bypass any proxy (via the MCP_BYPASS_DOMAINS environment variable or ProxyConfig.bypass_domains).
  • Disabling SSL verification by default (configurable via verify_ssl).
  • Accepting PATs through JIRA_PERSONAL_TOKEN / CONFLUENCE_PERSONAL_TOKEN.

Installation

pip install mcp-jira-confluence-corp

Or run it without installing using uvx:

uvx mcp-jira-confluence-corp

Configuration

The server is configured through environment variables:

Variable Description
JIRA_URL Base URL of your Jira instance
JIRA_PERSONAL_TOKEN Personal Access Token for Jira
JIRA_USERNAME / JIRA_TOKEN Optional Basic Auth pair (alternative to PAT)
CONFLUENCE_URL Base URL of your Confluence instance
CONFLUENCE_PERSONAL_TOKEN Personal Access Token for Confluence
MCP_BYPASS_DOMAINS Comma-separated list of internal domains to bypass any proxy. Supports *.example.com wildcards.

MCP client configuration

{
  "mcpServers": {
    "jira-confluence": {
      "command": "uvx",
      "args": ["mcp-jira-confluence-corp"],
      "env": {
        "JIRA_URL": "https://jira.example.com",
        "JIRA_PERSONAL_TOKEN": "<your-token>",
        "CONFLUENCE_URL": "https://confluence.example.com",
        "CONFLUENCE_PERSONAL_TOKEN": "<your-token>",
        "MCP_BYPASS_DOMAINS": "*.example.com,internal.corp",
        "HTTP_PROXY": "",
        "HTTPS_PROXY": ""
      }
    }
  }
}

Available tools

Jira (read-only)

Tool Description
jira_get_issue Get a Jira issue by key
jira_search_issues Search issues using JQL with pagination
jira_get_issue_comments List comments on an issue
jira_get_issue_transitions List available workflow transitions
jira_get_issue_changelog Get issue history (status, field changes)
jira_list_projects List accessible projects
jira_get_project Get details of a specific project
jira_get_user Get a user profile

Jira (write)

Tool Description
jira_create_issue Create a new issue
jira_update_issue Update fields of an existing issue
jira_add_comment Add a comment to an issue
jira_transition_issue Move an issue through its workflow
jira_assign_issue Assign or unassign an issue

Confluence (read-only)

Tool Description
confluence_get_page Get a page by ID
confluence_get_page_by_title Get a page by title and space
confluence_search Search using CQL
confluence_get_page_children List child pages
confluence_get_page_comments List page comments
confluence_get_page_labels List labels applied to a page
confluence_list_spaces List Confluence spaces

Confluence (write)

Tool Description
confluence_create_page Create a new page
confluence_update_page Update an existing page
confluence_add_comment Add a comment to a page
confluence_add_label Add a label to a page
confluence_remove_label Remove a label from a page

All tools support both markdown (default) and json response formats for human-readability vs. programmatic consumption.

Programmatic usage

JiraConfluenceClient is a thin wrapper around atlassian-python-api and is fully usable outside of the MCP server.

from mcp_jira_confluence import JiraConfluenceClient

client = JiraConfluenceClient()

issue = client.get_issue("PROJ-123")
print(issue["fields"]["summary"])

page = client.get_page("123456")
print(page["title"])

client.update_page(
    page_id="123456",
    title="Release notes",
    body="<p>Updated content in Confluence Storage Format.</p>",
)

Customizing proxy bypass

from mcp_jira_confluence import JiraConfluenceClient, ProxyConfig

proxy_config = ProxyConfig(
    bypass_domains=["*.example.com", "internal.corp"],
    verify_ssl=False,
)
client = JiraConfluenceClient(proxy_config=proxy_config)

Development

git clone https://github.com/mshegolev/mcp-jira-confluence-corp.git
cd mcp-jira-confluence-corp
pip install -e ".[dev]"

pytest tests/
ruff check src/
black --check src/

Releasing

This project uses PyPI Trusted Publishing, so no API tokens are stored in GitHub.

  1. Bump the version in pyproject.toml.
  2. Update CHANGELOG.md.
  3. Tag the release: git tag v0.1.1 && git push --tags.
  4. Create a GitHub release — the publish workflow runs automatically.

License

MIT

Author

Mikhail Shegolev — mshegolev@gmail.com

Metadata

Release files for mcp-jira-confluence-corp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-jira-confluence-corp 0.2.0
File Size Uploaded
mcp_jira_confluence_corp-0.2.0.tar.gz 27.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-jira-confluence-corp 0.2.0
File Interpreter ABI Platform
mcp_jira_confluence_corp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 58.1 kB

Release files / mcp_jira_confluence_corp-0.2.0.tar.gz

Download URL mcp_jira_confluence_corp-0.2.0.tar.gz
Size 27.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b611bcf42b13062f0e4661b1546105b06bb8a0d42c3916fa4dc526e86b48b37c
BLAKE2b-256 checksum
How to use checksums
f797f48cac9a562d3964a2528573840aa95008767d03f18840ec257a9d4d922d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 14, 2026.

Transparency log

Release files / mcp_jira_confluence_corp-0.2.0-py3-none-any.whl

Download URL mcp_jira_confluence_corp-0.2.0-py3-none-any.whl
Size 30.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5ef0ad82e3c017de5c8410167d726e02d3c686bb9e1759d4f8476906c5e53430
BLAKE2b-256 checksum
How to use checksums
522ab9b98a0bd8dc7e48bf6c428699ca4458e970cb4f112212a0779500457d52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page