Skip to main content
Glama

Bridge-MCP

A unified Model Context Protocol (MCP) server connecting AI assistants to Jira, GitLab, and Confluence — issues, merge requests, pipelines, and docs from one server.

  • Jira — issues, JQL search, comments, attachments, inline media

  • GitLab — projects, MRs, issues, pipelines, repo, releases (via your instance's native GitLab MCP endpoint, GitLab 18.x+)

  • Confluence — pages, spaces, search, child pages, attachments, comments

Works with self-hosted / private / VPN instances; per-service SSL toggle and Personal Access Token auth.


Use it (hosted)

The server runs in the cluster and is reached by URL (how to deploy).

  • URL: https://bridge-mcp-baly-internal.apps.private.okd4.teh-1.snappcloud.io/mcp

  • Auth: header Authorization: Bearer <token>

  • Requires VPN (e.g. FortiClient) for private instances.

All callers share the server-side identity — every request uses the deployer's Jira/GitLab/Confluence tokens.

Claude Code

claude mcp add --transport http bridge-mcp <url> --header "Authorization: Bearer <token>"

Claude Desktop (bridge the URL with mcp-remote)

{ "mcpServers": { "bridge-mcp": {
  "command": "npx",
  "args": ["-y", "mcp-remote", "<url>", "--header", "Authorization: Bearer <token>"]
}}}

VS Code / Cursor / Copilot

{ "servers": { "bridge-mcp": {
  "type": "http", "url": "<url>", "headers": { "Authorization": "Bearer <token>" }
}}}

Gemini CLI (~/.gemini/settings.json)

{ "mcpServers": { "bridge-mcp": {
  "httpUrl": "<url>", "headers": { "Authorization": "Bearer <token>" }
}}}

Codex CLI (~/.codex/config.toml)

[mcp_servers.bridge-mcp]
url = "<url>"
http_headers = { Authorization = "Bearer <token>" }

Confirm tools loaded: /mcp in-session, or your client's tools panel.


Related MCP server: Personal JIRA MCP

Usage

Ask in plain language — the assistant picks the tool:

  • "Show Jira issue PROJ-1234 and its comments."

  • "Search Jira for open bugs assigned to me in PAY."

  • "Why did the latest pipeline on main fail? Show the failing job log."

  • "Show the diff and notes for merge request !57."

  • "Find Confluence pages about the deployment runbook."


Tools

  • Jira (5): get_jira_issue, search_jira_issues, get_issue_comments, get_issue_attachments, get_issue_media

  • GitLab: dynamic — provided by your instance's MCP endpoint (projects, MRs, issues, pipelines/jobs, repo, releases/tags, members, labels). Run /mcp to see your set.

  • Confluence (7): get_confluence_page, search_confluence_pages, get_space, list_spaces, get_page_children, get_page_attachments, get_page_comments

Full parameter docs: TOOLS.md.


Deployment

Container serving streamable-HTTP (src/http_server.py, port 8080, endpoint /mcp, health /healthz /readyz). Deployed to OKD namespace baly-internal via Helm + GitLab CI.

  1. Setup — push repo to the internal GitLab (with OKD runners); set masked CI/CD vars: BUILDER_TOKEN, BRIDGE_MCP_AUTH_TOKEN, JIRA_PAT, GITLAB_PAT, CONFLUENCE_TOKEN. Service URLs live in helm/bridge-mcp/values-staging.yaml.

  2. Deploy — run pipeline jobs in order: push:staginghelm_publish:stagingdeploy:staging. Tokens injected via --set-string (no secret committed).

  3. Result — the OpenShift Route publishes the URL above.

Container env vars: BRIDGE_MCP_AUTH_TOKEN (gates /mcp), JIRA_*, GITLAB_*, CONFLUENCE_*, PORT. Empty token = that service disabled.


Local development

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env          # fill in the services you use
python test_connectivity.py   # check reachability

Tokens: Jira → Settings → Personal Access Tokens · GitLab → Access Tokens (api, read_api, read_repository) · Confluence → Atlassian API Tokens. Self-signed certs: set *_VERIFY_SSL=false.

Run over stdio (local MCP clients launch this automatically):

{ "mcpServers": { "bridge-mcp": {
  "command": "/path/to/bridge-mcp/.venv/bin/python",
  "args": ["/path/to/bridge-mcp/src/bridge_mcp_server.py"]
}}}

Claude Code shortcut: claude mcp add bridge-mcp -- /path/to/.venv/bin/python /path/to/src/bridge_mcp_server.py.

Run over HTTP locally: BRIDGE_MCP_AUTH_TOKEN=secret PORT=8080 PYTHONPATH=src python src/http_server.py.


Troubleshooting

  • Service disabled / no tools — credentials set? GitLab needs <GITLAB_URL>/api/v4/mcp reachable + GitLab 18.x+.

  • 401 / connection failed — VPN connected, token valid, Authorization: Bearer header present (hosted).

  • SSL error — set *_VERIFY_SSL=false.

License

MIT

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/ali-moghadam/Bridge-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server