MCP Proxy
Provides OAuth-based authentication for Atlassian services (e.g., Confluence Cloud) to enable user credential management and tool execution through the MCP proxy.
Allows users to connect their Confluence account and access Confluence tools (e.g., search pages, read content, create and update pages) via the MCP proxy using an Atlassian API token.
Allows users to connect their GitHub account and access GitHub tools (e.g., managing repositories, issues, pull requests) via the MCP proxy using a Personal Access Token.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP ProxyConnect my GitHub account"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Proxy
A self-hosted proxy that gives each user their own credentials for upstream MCP (Model Context Protocol) servers. Users connect services like GitHub and Confluence by visiting a one-time secure link, the LLM never sees the credentials.
How it works
OpenWebUI → MCP Proxy → Upstream MCP servers → GitHub / Confluence / ...
(per-user (user's own
credential credentials
injection) forwarded)The proxy sits between OpenWebUI and upstream MCP servers. When the LLM calls a tool, the proxy intercepts the request, looks up the calling user's stored credential, and forwards the call to the upstream server with that credential attached. Each user's keys are stored encrypted with two independent layers (AES-256-GCM with a master key + a per-user key derived from the JWT secret), so a single compromised secret is not enough to decrypt stored credentials.
For a full explanation see docs/how-it-works.md.
Related MCP server: mcpgate
Quick start
Prerequisites
Docker and Docker Compose
A running OpenWebUI instance
A running Redis instance
There are two compose files depending on your setup:
File | Use when |
| You already run GitHub MCP and Confluence MCP separately, just deploys the proxy |
| Full local stack, deploys proxy + GitHub MCP + Confluence MCP together |
1. Configure environment
cp .env.example .envEdit .env and fill in all values. Required:
Variable | Description |
| Must match your OpenWebUI |
| Base64-encoded 32-byte AES key - see instruction below |
| Redis connection string, e.g. |
| Public-facing URL of this proxy, no trailing slash |
| JSON map of service name to upstream MCP URL, e.g. |
Generate a master encryption key:
python -c "import os,base64; print(base64.b64encode(os.urandom(32)).decode())"2. Start the proxy
docker compose up -dOr with the full dev stack (includes GitHub MCP and Confluence MCP):
docker compose -f dev-stack-proxy/docker-compose.yaml up -d3. Register in OpenWebUI
Settings → Connections → MCP Servers → Add:
TYPE: MCP Streamable HTTP
URL: http://localhost:8000/mcp
AUTH: Session (Will forward user JWT(cookie) to the proxy so it knows who its talking to)If OpenWebUI runs in Docker on the same host, use http://host.docker.internal:8000/mcp or the container name.
Connecting services
Users connect services through the chat interface - no admin action needed per user.
GitHub
In chat: "Connect my GitHub account"
Open the one-time link the assistant provides
Paste a GitHub PAT (Personal Access Token) with
reposcopeReturn to chat
For GitHub Enterprise, set GITHUB_HOST in .env to your enterprise hostname.
Confluence
In chat: "Connect my Confluence account"
Open the one-time link
Enter your Atlassian email and an API token (generate at
https://id.atlassian.com/manage-profile/security/api-tokens)Return to chat
Requires CONFLUENCE_URL and ATLASSIAN_OAUTH_CLOUD_ID in .env. See docs/atlassian-oauth-setup.md.
Once connected, the LLM can search pages, read content, create and update pages, and more - full tool execution works end-to-end using Basic auth with the user's API token.
Adding any other MCP server
Add the service to MCP_SERVERS in .env and a container entry to docker-compose.yaml. Tool discovery is automatic - no code changes needed for services that use standard Bearer auth.
See docs/configuration.md for auth header scheme configuration.
Available tools (exposed to the LLM)
Tool | Description |
| Generate a one-time link to connect a service |
| List all tools from authenticated upstream services |
| Call a tool on an upstream service |
| Show which services the user has connected |
| Remove a stored credential |
Multiple credentials per service
Users can store multiple credentials for the same service using aliases, useful for different GitHub organisations or scoped tokens:
"Connect my GitHub account for org my org"
→ get_auth_url('github', alias='my org')
"Connect my GitHub personal account"
→ get_auth_url('github', alias='')The LLM uses the alias when calling tools:
call_tool('list_repositories', {}, alias='my org')Security
Credentials are encrypted at rest with two independent AES-256-GCM layers
Outer layer:
MASTER_ENCRYPTION_KEYInner layer: HKDF-derived from
WEBUI_SECRET_KEY+user_idAuth links are one-time use with a 5-minute TTL
User identity is verified on every request via JWT signed with
WEBUI_SECRET_KEYCredentials expire after a user-selected TTL (30 / 90 / 180 / 365 days)
Documentation
File | Contents |
Conceptual and technical explanation | |
Request flow, component design, design decisions | |
Operator setup guide | |
All environment variables | |
LLM-facing tools reference | |
Confluence Cloud setup |
Project structure
MCP_Proxy/
├── main.py # FastMCP app, tool definitions, routing
├── auth.py # JWT verification
├── auth_flow.py # One-time auth URL and credential form
├── credentials.py # Encrypted credential storage (Redis)
├── registry.py # Upstream MCP server discovery and tool dispatch
├── Dockerfile
├── docker-compose.yaml # Proxy only - bring your own upstream MCP servers
├── .env.example
├── dev-stack-proxy/
│ ├── docker-compose.yaml # Full stack - proxy + GitHub MCP + Confluence MCP
│ └── .env.example
└── docs/This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA proxy server that unifies multiple MCP servers, enabling seamless tool, prompt, and resource management via the MetaMCP App.Last updated16153Apache 2.0

mcpgateofficial
Flicense-qualityAmaintenanceSelf-hosted MCP gateway that connects Claude, ChatGPT, and other AI agents to 20+ enterprise tools (GitLab, Jira, Notion, Google Workspace, Slack, Grafana, …) with OAuth, audit logs, and zero data leaving your infrastructureLast updated- Alicense-qualityFmaintenanceSelf-hosted MCP gateway that connects productivity tools like Jira, Confluence, and Obsidian to AI assistants via a single endpoint.Last updated2MIT
- Alicense-qualityCmaintenanceEnables AI agents to securely access authenticated services (HTTP, SSH, SMTP) without exposing secrets, by acting as a server-side proxy that injects authentication.Last updatedMIT
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.
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/MikaBeee/OpenWebUI-MCP-proxy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server