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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_jira_confluence_corp-0.2.0.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_jira_confluence_corp-0.2.0-py3-none-any.whl (30.3 kB view details)

Uploaded Python 3

File details

Details for the file mcp_jira_confluence_corp-0.2.0.tar.gz.

File metadata

  • Download URL: mcp_jira_confluence_corp-0.2.0.tar.gz
  • Upload date:
  • Size: 27.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcp_jira_confluence_corp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b611bcf42b13062f0e4661b1546105b06bb8a0d42c3916fa4dc526e86b48b37c
MD5 639a984b97a534b93870934769bc8368
BLAKE2b-256 f797f48cac9a562d3964a2528573840aa95008767d03f18840ec257a9d4d922d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_jira_confluence_corp-0.2.0.tar.gz:

Publisher: publish.yml on mshegolev/mcp-jira-confluence-corp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_jira_confluence_corp-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_jira_confluence_corp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ef0ad82e3c017de5c8410167d726e02d3c686bb9e1759d4f8476906c5e53430
MD5 3c49fe07af65b9b008697e5027ca465b
BLAKE2b-256 522ab9b98a0bd8dc7e48bf6c428699ca4458e970cb4f112212a0779500457d52

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_jira_confluence_corp-0.2.0-py3-none-any.whl:

Publisher: publish.yml on mshegolev/mcp-jira-confluence-corp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page