firefox-relay-mcp
Manage Firefox Relay masks with tools to list, create, update, disable random masks and list domain masks.
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., "@firefox-relay-mcplist all my random masks"
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.
Firefox Relay MCP Gateway
Stateless Streamable HTTP MCP gateway for Firefox Relay, built for Cloudflare Workers.
Features
Stateless remote MCP server for Firefox Relay
OAuth Authorization Code + PKCE (
S256) for MCP clientsEncrypted Firefox Relay API key envelope inside signed JWT artifacts
Streamable HTTP MCP endpoint at
/mcpRandom mask list/create/update/disable operations
Optional custom-domain mask listing when the Relay account supports it
Related MCP server: Proton-MCP
Requirements
Node.js 20+
npm
Cloudflare account with Wrangler authentication
A Firefox Relay account with an API key
Connector values
MCP Server URL: https://firefox-relay-mcp.xyofn8h7t.workers.dev/mcp
Authorization server base URL: https://firefox-relay-mcp.xyofn8h7t.workers.dev
Resource: https://firefox-relay-mcp.xyofn8h7t.workers.dev/mcpUse the hosted MCP in ChatGPT
The currently deployed production MCP endpoint is:
https://firefox-relay-mcp.xyofn8h7t.workers.dev/mcpConnector details
Use these values when ChatGPT asks for the custom app or connector details:
Name: Firefox Relay
Description: Manage Firefox Relay email masks: list, create, update, and disable random masks, and list custom-domain masks.
MCP server URL: https://firefox-relay-mcp.xyofn8h7t.workers.dev/mcp
Icon: assets/firefox-relay-icon.pngThe repository includes a square PNG icon at assets/firefox-relay-icon.png. It is provided only to identify Firefox Relay compatibility. Firefox Relay is a trademark of the Mozilla Foundation; this project is independent and is not affiliated with or endorsed by Mozilla. The source icon is the official Mozilla Relay icon.
Add and authorize it
ChatGPT’s labels vary by plan and workspace. OpenAI currently documents custom MCP apps under Settings → Apps; some accounts may show Plugins or custom connectors instead. Workspace administrators may need to enable developer mode or custom MCP connectors first.
Open ChatGPT on the web and go to Settings → Apps (or open the Plugins directory if that is what your account shows).
Choose Create, Add custom app, Add connector, or the equivalent + button.
Enter the connector details above. Upload
assets/firefox-relay-icon.pngas the icon.For the connection authentication method, choose OAuth. The MCP URL is the server URL above; the Relay API key is entered during the browser authorization step, not in the connector description.
If ChatGPT shows Scan tools, run the scan and then choose Create or Save.
When the authorization page opens, open Firefox Relay in another tab and sign in.
In Firefox Relay, open the profile icon → Settings, locate your API key, and copy it. Do not paste the key into a chat message or commit it to a repository.
Return to the authorization page, paste the API key into the Firefox Relay API key field, choose the token lifetime, and submit the consent form.
Return to ChatGPT. In a new chat, select + → More → Firefox Relay (or mention the connected app) and ask it to manage your masks.
This gateway can list, create, update, and disable masks. Disabling is reversible; delete-mask tooling is intentionally not exposed in v1. Custom-domain listing depends on the Relay account.
For the official ChatGPT setup terminology and workspace requirements, see Apps in ChatGPT and Developer mode and MCP apps in ChatGPT.
What it does
Exposes MCP Streamable HTTP at
/mcpActs as its own OAuth Authorization Server for remote MCP clients
Collects a user-provided Firefox Relay API key during OAuth consent
Encrypts that API key into signed JWT artifacts and does not store it in a database
Lets MCP clients list, create, update, and disable Firefox Relay masks
Firefox Relay API key
Users can find the Firefox Relay API key in Firefox Relay under profile icon → Settings.
Supported MCP tools
relay_list_random_masksrelay_create_random_maskrelay_update_random_maskrelay_disable_random_maskrelay_list_domain_masks
Install
npm installQuick start
Install dependencies.
Set Worker secrets.
Configure non-secret vars in
wrangler.tomlor via deploy-time environment overrides.Run
npm run devfor local testing.Run
npm testandnpm run typecheck.Deploy with
npm run deploy.
Configure non-secret Worker vars
Update wrangler.toml or your deployment environment with:
OAUTH_ISSUERMCP_RESOURCEMCP_AUDIENCEOAUTH_REDIRECT_HTTPS_HOSTSRELAY_DEFAULT_BASE_URLACCESS_TOKEN_DEFAULT_TTL_DAYSACCESS_TOKEN_MAX_TTL_DAYSAUTH_CODE_TTL_SECONDS
wrangler.toml intentionally keeps placeholder URLs for independent deployments. If you deploy your own Worker, replace them with that deployment's values before production:
OAUTH_ISSUER=https://your-worker.example.comMCP_RESOURCE=https://your-worker.example.com/mcpMCP_AUDIENCE=https://your-worker.example.com/mcp
Set Worker secrets
Generate and pipe each secret directly into Wrangler:
openssl rand -base64 48 | tr -d '\n' | wrangler secret put OAUTH_JWT_SIGNING_KEY_B64
openssl rand -base64 32 | tr -d '\n' | wrangler secret put UPSTREAM_CONFIG_ENC_KEY_B64
openssl rand -base64 48 | tr -d '\n' | wrangler secret put CSRF_SIGNING_KEY_B64Deploy sequence
If you do not know the final public Worker URL yet, use this order:
Bootstrap deploy once to get the real
workers.devURL.Set the three Worker secrets.
Redeploy with real
OAUTH_ISSUER,MCP_RESOURCE, andMCP_AUDIENCEvalues.
Run locally
npm run devValidate
npm test
npm run typecheckDeploy
npm run deployPublic connector values
After deployment, configure remote MCP clients with:
MCP Server URL: https://firefox-relay-mcp.xyofn8h7t.workers.dev/mcp
Authorization server base URL: https://firefox-relay-mcp.xyofn8h7t.workers.dev
Resource: https://firefox-relay-mcp.xyofn8h7t.workers.dev/mcpOAuth and stateless design summary
/registerissues deterministic publicclient_idvalues for allowlisted redirect URIs/authorizevalidates PKCE S256, renders consent, validates the Firefox Relay API key, and issues a short-lived signed auth-code JWT/tokenexchanges the auth code for bearer access and refresh JWTsJWTs carry an AES-GCM encrypted Relay config envelope; plaintext credentials are never persisted server-side
/mcpverifies the access token, decrypts the Relay config, creates a fresh Worker-safe MCP server and transport, and serves the request
Stateless caveats
Auth codes are not one-time-use across all isolates because no server-side state is stored
Refresh tokens cannot be globally revoked without a stateful primitive
Strict global rate limiting requires Durable Objects, KV, or Cloudflare-managed rate limiting
Manual smoke test notes
Register a client with an allowlisted redirect URI.
Complete
/authorizewith a Firefox Relay API key.Exchange the returned code at
/token.Call
/mcpwith the returned bearer token.Confirm tools list and successful mask operations.
Privacy and security notes
The Worker encrypts the Firefox Relay API key into MCP JWT artifacts and does not store it in a database.
The Worker is designed to avoid logging API keys, bearer tokens, decrypted envelopes, cookies, or CSRF tokens.
Upstream Relay errors are sanitized before they are returned to MCP clients.
Known limitations
Auth codes are not globally one-time-use without stateful storage.
Refresh tokens cannot be globally revoked without stateful storage.
Strict global rate limiting requires Durable Objects, KV, or a Cloudflare-managed alternative.
Domain-mask behavior depends on account capabilities and may require Relay premium/custom-domain support.
Project docs
docs/PRODUCT_REQUIREMENTS.mddocs/IMPLEMENTATION_PLAN.mddocs/PROJECT_STATE.mddocs/DECISIONS.mddocs/RUNBOOK.md
Contributing
See CONTRIBUTING.md.
Security
See SECURITY.md.
License
MIT
This server cannot be installed
Maintenance
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables management of Mistral AI agents through MCP tools including creating, listing, searching, viewing details, and deleting agents. Integrates with Mistral API to provide agent management capabilities through natural language interactions.1
- AlicenseNot gradedqualityDmaintenanceMCP server for the Proton privacy suite — Mail, Pass, Drive, Calendar, and VPN. 36 tools for Claude and other MCP-compatible AI agents.15MIT
- AlicenseBqualityCmaintenanceEnables management of Raindrop.io bookmarks, collections, tags, and highlights via MCP tools, with support for search, bulk editing, and library auditing.17MIT
Related MCP Connectors
Tailscale device, route, DNS, key, user, and ACL management over MCP and CLI.
Remote MCP for MCP tool deprecation receipt, structured receipts, audit logs, and reviewer-ready evi
Remote MCP for Copilot CLI switch gate MCP, structured receipts, audit logs, and reviewer-ready evid
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/nazar256/firefox-relay-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server