MCP server

Connect AI clients to FeatherPanel through the bundled MCP server: OAuth for Claude, API keys for Cursor, local stdio mode, environment variables and tools.

On this page

The MCP server lets AI clients that speak the Model Context Protocol, such as Claude and Cursor, manage a user’s services through the panel API. Users find their endpoint and ready-made config under Account, MCP.

How it runs

The Docker Compose install includes an mcp service (ghcr.io/mythicalltd/featherpanel-mcp) listening on port 3001 inside the Docker network. The frontend container proxies these paths to it:

  • /mcp, the MCP endpoint, so the public URL is https://<panel>/mcp;
  • the OAuth paths /.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server, /authorize, /token, /register, /revoke and /oauth.

Nothing extra is needed in your web server config if it already forwards everything to the frontend.

Authentication

ClientHow
Claude custom connectorAdd https://<panel>/mcp, click Connect, sign in to the panel and approve. The approval creates an API key, or you paste an existing one. OAuth uses dynamic client registration and PKCE.
Cursor and clients with static headersAuthorization: Bearer <api key> or an x-api-key header.
Local stdioFEATHERPANEL_URL and FEATHERPANEL_API_KEY environment variables.

Example remote config:

{
  "mcpServers": {
    "featherpanel": {
      "url": "https://panel.example.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Create keys under Account, API Keys and limit them to known IPs where you can. See API authentication.

Local stdio mode

cd mcp
pnpm install && pnpm build
export FEATHERPANEL_URL=https://panel.example.com
export FEATHERPANEL_API_KEY=YOUR_API_KEY
pnpm start:stdio

Environment variables

VariableCompose valueNotes
FEATHERPANEL_URLhttp://backend:80Panel API the server calls.
FEATHERPANEL_API_KEYnot setRequired in stdio mode.
MCP_HOST, MCP_PORT0.0.0.0, 3001Listen address.
MCP_PUBLIC_URLnot setPublic origin for OAuth redirects. Taken from the request Host when empty.
MCP_OAUTH_STORE_PATH/data/oauth-store.jsonOAuth clients and tokens, kept in the mcp_oauth_data volume.
MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URLtrueAllows an http:// issuer for panels without HTTPS.

Tools

The server reads the public panel settings and only lists tools for enabled modules.

PackEnabled byExamples
AccountalwaysWho am I, notifications, SSH keys, sessions
Game serversmodule_game_enabledPower, console commands and logs, files, startup, reinstall, allocations, firewall, proxies, subdomains, backups, databases, schedules, subusers
Web hostingmodule_web_enabledWebSpace files, databases, mail, DNS, SSL, backups, schedules, SFTP, apps and Git deploy
VDSmodule_vds_enabledPower, hardware, networking, ISO fetch, reinstall, VNC ticket, backups, subusers
Ticketsticket_system_enabledList, create, reply, close
Knowledge baseknowledgebase_enabledSearch and read articles

Plugins, FeatherOS, the in-panel chatbots and multipart uploads are not exposed. Destructive tools such as kill, wipe, reinstall and delete work whenever the key’s user has that permission, so treat keys like passwords.

Frequently asked questions

Can the MCP server do more than my account can?

No. It calls the panel API with your API key or OAuth grant, so every tool is limited to what that user, and their subuser permissions, allow.

Is the MCP server part of the all-in-one image?

No. It ships as its own featherpanel-mcp container in the Docker Compose install. You can also run it locally in stdio mode.

How do I turn tools off?

Tool packs follow the panel modules. Disabling game servers, web hosting, VDS, tickets or the knowledge base also removes their tools.