nginx-proxy-manager-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | HTTP bind address, default 0.0.0.0 | 0.0.0.0 |
| MCP_PORT | No | HTTP port, default 3000 | 3000 |
| NPM_DEBUG | No | Verbose stderr logging, default false | false |
| NPM_EMAIL | No | Admin email (NPM_TOKEN alternative) | |
| NPM_TOKEN | No | Pre-existing JWT token (takes precedence over email/password) | |
| MCP_ENDPOINT | No | HTTP endpoint path, default /mcp | /mcp |
| NPM_BASE_URL | Yes | Base URL of NPM, e.g. http://npm.local:81 (no trailing slash) | |
| NPM_PASSWORD | No | Admin password (NPM_TOKEN alternative) | |
| MCP_TRANSPORT | No | stdio (default) or http | stdio |
| NPM_TIMEOUT_MS | No | Request timeout, default 30000 | 30000 |
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
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| npm_pingA | Health check — verify the NPM instance is reachable. |
| npm_list_usersA | List all NPM users. |
| npm_get_userA | Get a single user by id. |
| npm_list_audit_logC | List recent audit log entries. |
| npm_raw_requestA | Escape hatch: send any authenticated request to the NPM API. Use path like "/api/nginx/proxy-hosts". Method is upper-case. Optional query (object) and body (object) are JSON-encoded. |
| npm_list_proxy_hostsA | List all Nginx Proxy Manager proxy hosts (reverse proxies). |
| npm_get_proxy_hostB | Get a single proxy host by id. |
| npm_create_proxy_hostB | Create a new reverse proxy host. This is the main way to expose a service via a domain through NPM. |
| npm_update_proxy_hostA | Update an existing proxy host. Provide only fields you want to change. |
| npm_delete_proxy_hostB | Delete a proxy host by id. |
| npm_enable_proxy_hostB | Enable a disabled proxy host. |
| npm_disable_proxy_hostB | Disable a proxy host (without deleting it). |
| npm_list_streamsA | List all TCP/UDP stream port forwards. |
| npm_get_streamB | Get a single stream by id. |
| npm_create_streamC | Create a TCP/UDP port forward (stream). |
| npm_update_streamA | Update an existing stream. Provide only fields to change. |
| npm_delete_streamB | Delete a stream by id. |
| npm_list_redirection_hostsA | List all redirection hosts. |
| npm_create_redirection_hostB | Create a redirection host that forwards one domain to another. |
| npm_update_redirection_hostA | Update a redirection host. Provide only fields to change. |
| npm_delete_redirection_hostC | Delete a redirection host by id. |
| npm_list_dead_hostsA | List all 404 (dead) hosts. |
| npm_create_dead_hostA | Create a 404 (dead) host for one or more domains. |
| npm_update_dead_hostA | Update a 404 (dead) host. Provide only fields to change. |
| npm_delete_dead_hostB | Delete a 404 (dead) host by id. |
| npm_list_certificatesA | List all SSL certificates (Lets Encrypt and custom). |
| npm_create_certificateA | Request a new Lets Encrypt certificate (HTTP-01 challenge) or upload a custom certificate. Use provider "letsencrypt" for standard HTTP challenge runs. |
| npm_renew_certificateB | Renew (re-request) an existing Lets Encrypt certificate by id. |
| npm_delete_certificateC | Delete a certificate by id. |
| npm_download_certificateB | Download a certificate, its private key, or the chain (PEM). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 30 tools
Every tool targets a specific resource and action (e.g., proxy hosts, streams, certificates), and even similar host types (redirection vs dead) have distinct purposes. The descriptions clearly separate list/get/create/update/delete/control operations, so an agent can reliably select the intended tool.
The vast majority of tools follow a consistent verb_noun pattern (e.g., npm_list_proxy_hosts, npm_create_certificate). However, npm_ping and npm_raw_request deviate from this pattern, and the mix of plural list names with singular get names is a minor inconsistency.
With 30 tools, the server clearly exceeds the 25+ threshold for 'too many'. While each tool covers a distinct operation, the sheer number makes the surface area heavy and potentially overwhelming for agents, even though the underlying domain (NPM) is broad.
The set provides comprehensive CRUD coverage for proxy hosts, streams, redirection hosts, and dead hosts, plus certificate management. Minor gaps exist: no get-by-id for redirection/dead hosts, no user write operations, and no certificate get-by-id; the npm_raw_request escape hatch helps work around these gaps.