mcp-jira-confluence-corp
mcp-jira-confluence-corp
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:
A global
HTTP_PROXYorHTTPS_PROXY(typically an SSH tunnel for a cloud API) silently intercepts on-prem traffic and causes timeouts.Internal Jira and Confluence instances use self-signed TLS certificates.
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_DOMAINSenvironment variable orProxyConfig.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-corpOr run it without installing using uvx:
uvx mcp-jira-confluence-corpConfiguration
The server is configured through environment variables:
Variable | Description |
| Base URL of your Jira instance |
| Personal Access Token for Jira |
| Optional Basic Auth pair (alternative to PAT) |
| Base URL of your Confluence instance |
| Personal Access Token for Confluence |
| Comma-separated list of internal domains to bypass any proxy. Supports |
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 |
| Get a Jira issue by key |
| Search issues using JQL with pagination |
| List comments on an issue |
| List available workflow transitions |
| Get issue history (status, field changes) |
| List accessible projects |
| Get details of a specific project |
| Get a user profile |
| Map Jira field IDs, names, schemas, and editability |
Jira (write)
Tool | Description |
| Create a new issue |
| Update fields of an existing issue |
| Add a comment to an issue |
| Move an issue through its workflow |
| Assign or unassign an issue |
Confluence (read-only)
Tool | Description |
| Get a page by ID |
| Get a page by title and space |
| Search using CQL |
| List child pages |
| List page comments |
| List labels applied to a page |
| List Confluence spaces |
Confluence (write)
Tool | Description |
| Create a new page |
| Update an existing page |
| Add a comment to a page |
| Add a label to a page |
| 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>",
)
field_map = client.build_field_map(project_key="PROJ", issue_key="PROJ-123")
for row in field_map["rows"]:
print(row["field_id"], row["field_name"], row["schema_type"])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.
Bump the version in
pyproject.toml.Update
CHANGELOG.md.Tag the release:
git tag v0.1.1 && git push --tags.Create a GitHub release — the publish workflow runs automatically.
License
Author
Mikhail Shegolev — mshegolev@gmail.com
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mshegolev/mcp-jira-confluence-corp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server