Skip to main content
Glama
euisuh

Nginx Proxy Manager MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NPM_URLYesBase URL of the NPM admin API (`http://app:81` inside Docker)
MCP_HOSTNoBind address for SSE mode; Docker Compose sets `0.0.0.0` inside the container while publishing only to localhost127.0.0.1
MCP_PORTNoBind port for SSE mode8000
NPM_EMAILYesNPM admin account email
NPM_PASSWORDYesNPM admin account password
MCP_TRANSPORTNoMCP transport: `sse` or `stdio`sse
MCP_BEARER_TOKENNoOptional bearer token required for SSE HTTP requests

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_proxy_hostsA

List proxy hosts configured in NPM, including their current status. Use this to find host IDs before get, update, enable, disable, or delete operations. It does not change NPM or request a certificate. Returns a list of host objects with IDs, domains, forwarding settings, and status.

get_proxy_hostA

Fetch one proxy host by ID, including its configured fields and current status. Use this for details about one host; use list_proxy_hosts to find IDs or inspect all hosts. This is read-only and does not reload Nginx. Returns the NPM host object, including domains, forwarding settings, and status.

create_proxy_hostA

Create a proxy host that routes the supplied domains to an HTTP or HTTPS upstream. Use this when configuring proxying without requesting a certificate; use create_proxy_host_with_letsencrypt to request one and force HTTPS. NPM stores the host configuration and applies it through its normal config handling. Returns the created host object with its ID, domains, and forwarding settings. Set dry_run=True to preview the exact request without changing NPM.

create_proxy_host_with_letsencryptA

Request a Let's Encrypt certificate, then create a proxy host using that certificate with HTTPS forced. Use this for a new TLS-enabled proxy; use create_proxy_host when a certificate already exists or HTTPS forcing is not wanted. This triggers a certificate request before creating the host; failures report failed_step and any created certificate. Returns ok plus certificate and proxy_host objects on success. Set dry_run=True to preview the exact request without changing NPM.

update_proxy_hostA

Update writable settings on an existing proxy host by ID. Use this to change routing or options; use enable_proxy_host or disable_proxy_host for status only. NPM receives the merged writable host fields, without requesting a certificate. Returns the updated host object with its ID and current settings. Set dry_run=True to preview the exact request without changing NPM.

delete_proxy_hostA

Permanently delete a proxy host by ID, removing its configured domain routing from NPM. Use disable_proxy_host to stop routing while keeping the host; list_proxy_hosts helps confirm the ID. Deletion cannot be undone and NPM applies the configuration change. Returns True on success. Set dry_run=True to preview the exact request without changing NPM.

enable_proxy_hostA

Enable a disabled proxy host by ID so NPM serves its configured domain routing again. Use update_proxy_host to change host settings; use list_proxy_hosts to confirm status and ID. This changes NPM host state and applies its configuration. Returns the updated host object. Set dry_run=True to preview the exact request without changing NPM.

disable_proxy_hostA

Disable a proxy host by ID while retaining its configuration. Use delete_proxy_host to remove it; use list_proxy_hosts to check its current status. This changes NPM host state and stops that host from serving traffic. Returns the updated host object. Set dry_run=True to preview the exact request without changing NPM.

list_certificatesA

List SSL certificates known to NPM, including expiry information when provided by NPM. Use this to inspect available certificates; create_letsencrypt_cert requests a new certificate and renew_certificate renews an existing one. This is read-only and makes no certificate request. Returns certificate objects with IDs, domains, provider, and expiry fields.

create_letsencrypt_certA

Request a new Let's Encrypt certificate for the supplied domains. Use this when a certificate is needed without creating a proxy host; create_proxy_host_with_letsencrypt also creates an HTTPS-forced host. This sends a certificate request to NPM and may contact Let's Encrypt. Returns the certificate object with its ID, domains, and status. Set dry_run=True to preview the exact request without changing NPM.

renew_certificateA

Request renewal of an existing certificate by ID. Use this for a certificate already managed by NPM; use create_letsencrypt_cert to request a new certificate. This triggers NPM certificate renewal processing and may contact the certificate provider. Returns the certificate operation result, including available certificate fields. Set dry_run=True to preview the exact request without changing NPM.

list_access_listsA

List access lists configured in NPM. Use this to find IDs before fetching, updating, or deleting a list; use get_access_list for one list with its rules. This is read-only and does not expose stored passwords. Returns access-list objects with IDs and names.

get_access_listA

Fetch one access list by ID, including its client rules and basic-auth user metadata. Use this for detailed rules; use list_access_lists to discover IDs. NPM does not return stored item passwords, so password values cannot be read back. Returns the access-list object with name, clients, and user entries.

create_access_listA

Create an access list containing optional IP allow/deny rules and basic-auth users. Use this to define access controls for hosts; use update_access_list to change an existing list. NPM stores the rules and credentials, while item passwords are write-only and cannot be read back. Returns the created list object with its ID, name, and rules. Set dry_run=True to preview the exact request without changing NPM.

update_access_listA

Update writable fields on an existing access list by ID, including client rules and basic-auth users. Use this to edit access controls; use delete_access_list to remove a list. NPM receives the merged writable fields; item passwords are write-only and cannot be read back. Returns the updated list object with its name and rules. Set dry_run=True to preview the exact request without changing NPM.

delete_access_listA

Permanently delete an access list by ID from NPM. Use update_access_list to retain the list and change its rules; confirm the ID with list_access_lists first. Deletion cannot be undone and may affect hosts that reference the list. Returns True on success. Set dry_run=True to preview the exact request without changing NPM.

list_redirection_hostsA

List configured redirection hosts and their current status. Use this to find IDs before fetching, changing, enabling, disabling, or deleting a redirect; proxy hosts handle upstream reverse proxying. This is read-only and does not request certificates. Returns host objects with domains, destination, redirect code, and status.

get_redirection_hostA

Fetch one redirection host by ID with its configured destination and status. Use this for a single redirect; use list_redirection_hosts to discover IDs or inspect all redirects. This is read-only and does not change NPM. Returns the host object with domains, destination, redirect code, and status.

create_redirection_hostA

Create a host that redirects requests for domains to a destination using the selected HTTP status. Use this for URL redirection; use create_proxy_host to forward requests to an upstream server. NPM stores the redirect configuration; an attached certificate ID is referenced without requesting a certificate. Returns the created host object with its ID and redirect settings. Set dry_run=True to preview the exact request without changing NPM.

update_redirection_hostA

Update writable settings on an existing redirection host by ID. Use this to change domains, destination, or redirect behavior; use enable_redirection_host or disable_redirection_host for status only. NPM receives the merged writable fields. Returns the updated host object with its redirect settings. Set dry_run=True to preview the exact request without changing NPM.

delete_redirection_hostA

Permanently delete a redirection host by ID, removing its redirect configuration from NPM. Use disable_redirection_host to retain it while stopping redirects; list_redirection_hosts helps verify the ID. Deletion cannot be undone and applies the NPM configuration change. Returns True on success. Set dry_run=True to preview the exact request without changing NPM.

enable_redirection_hostA

Enable a disabled redirection host by ID so NPM serves its redirect again. Use update_redirection_host to edit destination or redirect code; list_redirection_hosts shows status. This changes NPM host state and applies its configuration. Returns the updated host object. Set dry_run=True to preview the exact request without changing NPM.

disable_redirection_hostA

Disable a redirection host by ID while keeping its configuration in NPM. Use delete_redirection_host to remove it; use list_redirection_hosts to check status. This stops the redirect from being served and applies the configuration change. Returns the updated host object. Set dry_run=True to preview the exact request without changing NPM.

list_streamsA

List configured TCP/UDP streams and their current status. Use this to find stream IDs before fetching, changing, enabling, disabling, or deleting a port forward. This is read-only and does not change NPM. Returns stream objects with IDs, incoming and forwarding ports, protocols, and status.

get_streamA

Fetch one TCP/UDP stream by ID, including its forwarding ports and protocol settings. Use this for one stream; use list_streams to find IDs or inspect all streams. This is read-only and does not change NPM. Returns the stream object with incoming port, destination, protocol flags, and status.

create_streamA

Create a TCP/UDP port forward from an incoming port to a destination host and port. Use this for raw TCP or UDP forwarding; use proxy-host tools for HTTP/HTTPS domain routing. NPM stores the stream configuration and applies it through normal config handling. Returns the created stream object with its ID, ports, and protocol flags. Set dry_run=True to preview the exact request without changing NPM.

update_streamA

Update writable port, destination, or protocol fields on an existing stream by ID. Use this to edit forwarding; use enable_stream or disable_stream to change status only. NPM receives the merged writable fields, preserving omitted values. Returns the updated stream object with its forwarding settings. Set dry_run=True to preview the exact request without changing NPM.

delete_streamA

Permanently delete a TCP/UDP stream by ID; NPM stops forwarding that port immediately and this cannot be undone. List streams first to confirm the ID. Returns True on success. Set dry_run=True to preview the exact request without changing NPM.

enable_streamA

Enable a disabled TCP/UDP stream by ID so NPM forwards its incoming port again. Use update_stream to change ports or protocol flags; list_streams shows current status. This changes the stream state in NPM. Returns the updated stream object. Set dry_run=True to preview the exact request without changing NPM.

disable_streamA

Disable a TCP/UDP stream by ID while retaining its forwarding configuration. Use delete_stream to remove it; list_streams shows current status. NPM stops forwarding this stream while disabled. Returns the updated stream object. Set dry_run=True to preview the exact request without changing NPM.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 30 tools

Disambiguation5/5

Each tool targets a distinct resource (proxy host, certificate, access list, redirection host, stream) and action (list, get, create, update, delete, enable, disable, renew). Overlaps are explicitly handled by descriptions, e.g. create_proxy_host vs create_proxy_host_with_letsencrypt and update vs enable/disable. An agent can reliably select the correct tool.

Naming Consistency5/5

All tools use a predictable snake_case verb_noun pattern with resource names consistently pluralized for list operations and singular for get/update/delete. Deviations are only necessary qualifiers like with_letsencrypt, which remain readable and consistent. No mixed conventions.

Tool Count2/5

At 30 tools, the surface is heavy for the NPM domain. While many operations are distinct, the count exceeds the rubric's 25+ threshold for 'too many' and includes several similar enable/disable variants that could potentially be collapsed.

Completeness4/5

The server covers full CRUD and lifecycle for proxy hosts, redirection hosts, streams, and access lists, plus certificate listing, creation, and renewal. Minor gaps include no certificate deletion or single-certificate retrieval, but core workflows are well covered.

Maintenance

ActivityNo data
ResponsivenessUnresponsive