I want to use Claude to help me manage my projects on GitHub. It should be simple, right?

A diagram illustrates an authentication scheme. On the left, "Claude (web/mobile)" attempts to connect to a "GitHub Remote MCP server." The connection is blocked due to incompatibility with dynamic client registration (DCR) and custom headers. In the middle, an "MCP Auth Proxy" sits between Claude and the GitHub Remote MCP server. The proxy supports OAuth with DCR and injecting custom headers, allowing the connection to proceed.

Problems

Workaround: MCP Auth Proxy

Thankfully, there is MCP Auth Proxy, a lightweight authentication proxy. It acts as a Remote MCP server with proper OAuth with DCR support, and it can forward requests to any local or remote MCP server, with support for custom Authorization headers.

This is my Docker Compose file for using with Dokploy:

services:
  authproxy:
    image: ghcr.io/sigbit/mcp-auth-proxy:v2.5.2
    restart: unless-stopped
    environment:
      - EXTERNAL_URL=https://${DOMAIN:?"DOMAIN missing"}
      - NO_AUTO_TLS=true
      - PASSWORD=${PASSWORD:?"PASSWORD missing"}
      - PROXY_BEARER_TOKEN=${GITHUB_TOKEN:?"GITHUB_TOKEN missing"}
    command: https://api.githubcopilot.com
    volumes:
      - data:/data
volumes:
  data:

Note that I used NO_AUTO_TLS=true and did not expose any ports because Dokploy automatically provisions TLS certificates and handles HTTPS termination for me.

A screenshot of Dokploy domain settings. It shows a list of domains configured for "github-proxy" with details like HTTPS status, SSL certificate, and DNS validation.

Dokploy Domains settings page

Set these environment variables:

# Set the password for authorizing the connection.
# When clicking "Connect" in Claude Web, you will be prompted to enter this password.
PASSWORD=

# Set the domain where this proxy will be accessible.
DOMAIN=

# Set a GitHub Personal Access Token (PAT).
GITHUB_TOKEN=

When adding a custom connector in Claude Web, refer to GitHub Remote MCP Server reference for the list of API URLs. Just change the domain to point to your MCP Auth Proxy instance. For example,

  • Instead of using:

    https://api.githubcopilot.com/mcp/x/projects
    
  • use:

    https://github-mcp.your-domain.tld/mcp/x/projects
    

When clicking Connect, you will be prompted to enter the password you set in the PASSWORD environment variable:

A white login form with purple accents displays "MCP Auth Proxy" as the title. It includes a password field and a purple "Login" button.

MCP Auth Proxy login page

Alternatively, you can set up custom OAuth authentication to be used instead of a password. Once all set, the MCP Auth Proxy will take care of the OAuth flow and inject the required Authorization headers when forwarding requests to GitHub’s Remote MCP server.